C语言知识学习第2章理解练习知识题.docx
《C语言知识学习第2章理解练习知识题.docx》由会员分享,可在线阅读,更多相关《C语言知识学习第2章理解练习知识题.docx(11页珍藏版)》请在冰豆网上搜索。
C语言知识学习第2章理解练习知识题
C语言第1、2章练习题
一、选择题
1.下列运算符中,(C)结合性从左到右。
A.三目B.赋值C.比较D.单目
2.下列for循环的次数为(B):
for(i=0,x=0;!
x&&i<=5;i++)
A.5B.6C.1D.无限
3.下述关于循环体的描述中,(C)是错误的。
A.循环体中可以出现break语句和continue语句;B.循环体中还可以出现循环语句;
C.循环体中不能出现goto语句;D.循环体中可以出现开关语句。
4.下列变量名中,(A)是合法的。
A.CHINA;B.student-num;C.doubleD.A+b
5.有以下程序段:
intn=0,p; do{scanf(”%d”,&p);n++;}while(p!
=12345&&n<3);
此处do-while循环的结束条件是(D)。
A.p的值不等于12345并且n的值小于3B.p的值等于12345并且n的值大于等于3
C.p的值不等于12345或者n的值小于3D.p的值等于12345或者n的值大于等于3
6.若有定义:
inta=8,b=5,C;,执行语句C=a/b+0.4;后,c的值为(B)
A.1.4B.1C.2.0D.2
7.以下程序中,while循环的循环次数是(D)
main()
{inti=0;
while(i<10)
{if(i<1)continue;
if(i==5)break;
i++;}.....
A.1B.10C.6D.死循环,不能确定次数
8.下列while循环的执行次数是(A)while(i=0)i--;
A.0B.1C.5D.死循环
9.以下说法中正确的是:
C
A.C语言程序总是从第一个的函数开始执行;
B.在C语言程序中,要调用的函数必须在main()函数中定义;
C.C语言程序总是从main()函数开始执行;
D.C语言程序中的main()函数必须放在程序的开始部分。
10.以下程序的输出结果是:
D
main()
{intx=10,y=10;
printf("%d%d\n",x--,--y);
}
A.1010B.99C.910D.109
11.inta=1,b=3;,则下列表达式的结果为“真”的是:
D
A.a>=2||!
b&&b<4B.b-a&&!
a||a-b&&a/b
C.a-!
a%b&&!
b-!
b%bD.a+b&&a-b&&b-3&&a||b
12.请选出合法的C语言赋值语句C
A.a=b=58B.i++;C.a=58,b=58D.k=int(a+b);
13.若有以下定义和语句:
B
charc1='b',c2='e';
printf("%d,%c\n",c2-c1,c2-'a'+'A');
则输出结果是:
A.2,MB.3,EC.2,ED.输出项与对应的格式控制不一致,输出结果不确定。
14.运行以下程序段后变量a的值是:
D
inta=0,b=3;
switch(a+b&&a++&&b-a&&a)
{
case0:
a++;
case1:
b++;
case2:
a+=b;break;
case3:
a-=b;
default:
a;
}
(A)-3(B)1(C)5(D)6
15.在以下一组运算符中,优先级最高的运算符是:
C
(A)<=(B)=(C)%(D)&&
16.设inta=12,则执行完语句a+=a-=a*a后,a的值是D
(A)552(B)264(C)144(D)-264
17.C语言中基本数据类型包括B
(A)整型、实型、逻辑型(B)整型、实型、字符型
(C)整型、字符型、逻辑型(D)整型、实型、逻辑型、字符型
18.执行下面程序片段的结果是B
intx=23;
do{
printf("%2d",x--);
}while(!
x);
(A)打印出321(B)打印出23(C)不打印任何内容(D)陷入死循环
19.若k是int型变量,且有下面的程序片段:
D
k=-3;
if(k<=0)printf("####")
elseprintf("&&&&");
上面程序片段的输出结果是
(A)####(B)&&&&(C)####&&&&(D)有语法错误,无输出结果。
20.为表示关系x≥y≥z,应使用C语言表达式A
(A)(x>=y)&&(y>=z)(B)(x>=y)AND(y>=z)(C)(x>=y>=z)(D)(x>=y)&(y>=z)
21.若c为char类型变量,能正确判断出c为小写字母的表达式是D
A)'a'<=c<='z'B)(c>='a')||(c<='z')C)c>='a'||c<='z'D)c<='z'&&c>='a'
22.下面程序执行后输出sum的值是D
A)15B)14C)0D)不确定
main()
{inti,sum;
for(i=0;i<6;i++)sum+=i;
printf("%d\n",sum);
}
23.以下叙述正确的是:
D
A)可以把include和if定义为用户标识符
B)可以把include定义为用户标识符,但不能把if定义为用户标识符
C)可以把if定义为用户标识符,但不能把include定义为用户标识符
D)include和if都不能定义为用户标识符
二、判断下列描述的正确性,对者划√,错者划╳。
1.switch语句中必须有break语句,否则无法退出switch语句。
0
2.C中标识符内的大小写字母是没有区别的。
0
3.隐含的类型转换都是保值映射,显式的类型转换都是非保值映射。
0
4.运算符的优先级和结合性可以确定表达式的计算顺序。
1
5.while循环语句的循环体至少执行一次。
0
6.开关语句不可以嵌套,在开关语句的语句序列中不能再有开关语句。
0
7.C语言在编译时不检查语法;0
8.在C语言中,”A”是错误的char类型的常数;1
9.字符(char)型数据在微机内存中的存储形式是ASCII码;1
10.C语言的源程序不必通过编译就可以直接运行;0
11.“Int”是合法的C语言关键字;0
三、写出下列程序的运行结果。
3.
voidmain()
{inta=0,i;
for(i=1;i<5;i++)
{switch(i)
{case0:
case3:
a+=2;
case1:
case2:
a+=3;
default:
a+=5;
}
}
printf(“%d”,a);31
}
4.
voidmain()
{inta=15,b=21,m=0;
switch(a%3)
{case0:
m++;break;
case1:
m++;
switch(b%2)
{default:
m++;
case0:
m++;break;
}
};
printf(“%d”,m);}1
5.从键盘输入1325。
voidmain()
{intn1,n2;
scanf("%d",&n2);
while(n2!
=0)
{n1=n2%10;
n2=n2/10;
printf("%d",n1);
}
}5231
6.voidmain()
{inta=5,b=4,c=3,d;
d=(a>b>c);
printf("%d\n",d);
}
先计算a>b结果为真,得到1然后计算1>c结果为假得到0
0
7.voidmain()
{ints,i;
for(s=0,i=1;i<3;i++,s+=i);
printf("%d\n",s);
}5
四、完成程序。
1.程序的功能是:
分别计算1到10之间奇数之和及偶数之和
voidmain()
{inta,b,c,i;a=c=0;
for(i=0;i<=10;i+=2){
a+=i;
b=____i+1____;
c+=b;
}
printf("偶数之和=%d\n",a);
printf("奇数之和=%d\n",__c___);
}
2.下面程序的功能是:
输出100以内能被3整除且个位数为6的所有整数。
#include
voidmain()
{inti,j;
for(i=0;_i<10___;i++){
j=i*10+6;
if(__j%3!
=0__)continue;
printf("%d",j);
}
}
i
5.得到一个输入数字的反转数,然后一次输出这个整数。
voidmain()
{intn,right_digit,newnum=0;
printf("Enterthenumber:
");
scanf("%d",&n);
printf("reverseorderis");
do{right_digit=n%10;
//生成所输入数字的反转数
newnum=newnum*10+right_digit;
n=①
}while(n!
=0);
printf("%d\n",newnum);
}
6.输入学号,并输出其中能被7或9整除的学号,当学号输入0值时结束循环。
voidmain()
{intnum;
do{scanf(“%d”,&num);
if(num/7==0||num/9==0)
printf(“%d”,num);
}while(num!
=0);
}
1.求1-5的阶乘之和。
n!
=(n-1)!
*nsum:
和。
初值为0。
factorial:
积。
初值为1。
#include
voidmain()
{inti,factorial=1,sum=0;
for(i=1;i<=5;i++){
factorial*=i;
sum+=factorial;
}
printf(“%d”,sum);
}
2.输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
#include
voidmain()
{charch;intletter=0,space=0,digit=0,other=0;
while((ch=getchar())!
='\n'){
if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))
letter++;
elseif(ch>='0'&&ch<='9')
digit++;
elseif(ch=='')
space++;
else
other++;
}
printf("%d,%d,%d,%d",letter,digit,space,other);}
五、程序设计题
5.打印图案。
(选做)
voidmain()
{inti,j,k;
for(i=0;i<=3;i++){
for(j=0;j<=2-i;j++)printf("");
for(k=0;k<=2*i;k++)printf("*");
printf("\n");
}
for(i=0;i<=2;i++){
for(j=0;j<=i;j++)printf("");
for(k=0;k<=4-2*i;k++)printf("*");
printf("\n");}
}
6.输入两个正整数m和n,用辗转相除法求最大公约数和最小公倍数。
(选做)
voidmain()
{inta,b,m,n,temp;
printf("Pleaseinputthetwonumber:
\n");
scanf("%d,%d",&m,&n);
if(m{temp=m;m=n;n=temp;}
a=m;b=n;
while(b!
=0)/*a中放的是最大公约数*/
{temp=a%b;a=b;b=temp;}
printf("最大公约数是:
%d\n",a);
printf("最小公倍数是:
%d\n",m*n/a);
}
7.键盘输入若干个数,直至输入0为止,输出偶数及其个数。
voidmain()
{intx;intcount=0;
scanf(“%d”,&x);
while(x!
=0){
if(x%2==0){
printf(“%d\n”,x);
count++;}
scanf(“%d”,&x);
}
printf("%d\n",count);
}
7.设计具有以下功能的程序:
从键盘上输入若干个非负整数,统计并输出最大数和最小数,当输入负数时结束输入。
(自己完成,并上机验证)
#include
voidmain()
{
inti,j,max=0,min=0;
do{
scanf("%d",&i);
if(max
if(min>i)
min=i;
}while(i>=0);
printf("%d%d\n",max,min);
}