admin 管理员组文章数量: 887032
2024年1月17日发(作者:length profile)
C语言练习题(12月3日讲解)
C语言单元练习题
第一单元数据类型、表达式及顺序结构练习题
一、选择题:
1. 不合法的C语言整型常量是 D 。
A. –012
B. 0x35
C. 123L
D. 8E2
2. 不合法的C语言实型常量是 A 。
A. E3
B. .123
C. –6.2E4
D. 5.0
3. 不合法的C字符常量是 D 。
A. ′2′
B. ′101′
C. ′AB′
D. ′n′
4.下列四组选项中,均是不合法的用户标识符的选项是 B 。
A. W P_0 do
B. b-a goto int
C. float la0 _A
D. -123 abc TEMP
5.下列四组选项中,均是合法转义字符的选项是 A 。
A. ‘”’‘’‘n’
B. ‘’‘017’‘”’
C. ‘018’‘f’‘xab’
D. ‘0’‘101’‘xlf’
6. 定义三个变量a、b、c,并分别赋初值为5。能实现该功能的语句是 C 。
A. int a=b=c=5;
B. int a,b,c=5;
C. int a=5,b=5,c=5;
D. int a=5;b=5;c=5;
7. 若x,y,t均为int类型,则执行语句x=y=3;t=++x||++y;后,y的值是 B 。
A. 不定值
B. 4
C. 1
D. 3
8.若x、i、j、k都是int型变量,则计算下面表达式后,x的值为 C 。
x=(i=4,j=16,k=32)
A. 4
B. 16
C. 32
D. 52
9.设有说明:char w;int x; float y;double z;则表达式w*x+z-y值的数据类型为 D 。
A. float
B. char
C. int
D. double
10.设以下变量均为int类型,则值不等于7的表达式是 C 。
A. (x=y=6,x+y,x+1)
B. (x=y=6,x+y,y+1)
C. (x=6,x+1,y=6,x+y)
D. (y=6,y+1,x=y,x+1)
11、以下选项中不能用作C程序合法常量的是( D )。
A. 1.234
B. '123'
C.123
D."x7G"
12、以下选项中可用作C程序合法实数的是( A )
A. .1e0
B.3.0e0.2
C.E9
D.9.12E
13、阅读以下程序
#include
main()
{ int case; float printF;
printf(“请输入2个数:”);
scanf(“%d %f”,&case,&pjrintF);
printf(“%d %fn”,case,printF);
}
该程序编译时产生错误,其出错原因是( A )
A.定义语句出错,case是关键字,不能用作用户自定义标识符
B.定义语句出错,printF 不能用作用户自定义标识符
C.定义语句无错,scanf不能作为输入函数使用
D.定义语句无错,printf不能输出case的值
14、下列标识符中,不合法的用户标识符为( D )。
A. Pad
B. CHAR
C. a_10
D. a≠b
15、以下选项中能表示合法常量的是( D )。
A.整数:1,200
B.实数:1.5E2.0
C.字符斜杠:‘’
D.字符串:"007"
16、以下选项中,能用作数据常量的是( D )。
A.o115
B. 0118
C.1.5e1.5
D. 115L
17、若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是( A )。
A.1
B.0
C.2
D.3
18、若有定义语句:int x=10;,则表达式x-=x+x的值为( B )
A.-20
B.-10
C.0
D.10
19、表达式:(int)((double)9/2)-(9)%2的值是( B )。
A.0
B.3
C.4
D.5
20、若有定义:double a=22;int i=0,k=18;,则不符合C语言规定的赋值语句是( D )。
A.a=a++,i++;
B.i=(a+k)<=(i+k);
C.i=a;
D.i=!a;
21、表达式a+=a-=a=9的值是( D )。
A.9
B._9
C.18
D.0
x=5, y=14; 则表达式x+7/y+0.6 值为( B )。
A.7.1
B.5.6
C.6.6
D.6.1
23、有以下程序执行后的输出结果是( D )。
main( )
{ int i,s=0;
for(i=1;i<10;i+=2) s+=i+1;
printf("%dn",s);}
A.自然数1~9的累加和 B.自然数1~10的累加和
C.自然数1~9中的奇数之和 D.自然数1~10中的偶数之和
24、C语言中运算对象必需是整型的运算符是( B )。
A./ B. % C.* D.+
25、若有表达式(w)?(--x):(++y),则其中与w 等价的表达式是( A)。
A.w==l
B.w==0
C.w!=l
D.w!=0
26、希望当num的值为奇数时,表达式的值为“真”,num的值为偶数时,表达式的值为“假”,则以下不能满足的表达式是( C )。
A. num%2==1
B. !(num%2==0)
C. !(num%2)
D. num%2
27、若有以下类型说明语句:
char w; int x; float y; double z; 则表达式 w*x+z-y的结果为( D )类型.A.float B.char C.int D.double
28、表达式3.6-5/2+1.2+5%2的值是( D )。
A.4.3 B. 4.8 C. 3.3 D.3.8
29、若有定义int x,y;并已正确给变量赋值,则以下选项中与表达式(x-y)?(x++): (y++)中的条件表达式(x-y)等价的是( A )。
A.(x-y)>0 B (x-y<0) C.(x-y<0║x-y>0) D.(x-y)==0
30、能正确表示逻辑关系:"a≥8或a≤5"的C语言表达式是( D )。
A.a>=8 or a<=5 B.a>=5 | a<=8 C.a>=8 && a<=5
D.a>=8 || a<=5
31、C语言中,数字029 是一个(C )。
A.不合法数字 B.十进制数 C.八进制数 D.十六进制数
32 、已定义变量如下: int a=5, b=7,c; 则执行语句a>b?(c=
(a++)-(++b)): (c=a+++8); 后c的值为(B )
A.15
B.14
C.13
D.12
33、设有定义:int k=0;,以下选项的四个表达式中与其他三个表达式的值不相同的是( D )。
A.k++
B.k+=1
C.++k
D.k+1
34、以下选项中,合法的C语言数值常量是( A )。
A.028
B.'12A'
C.'177’
D. N
35、C语言中运算符优先级最低的是(B )。
A.++
B. ,
C.-
D.!=
36、以下程序运行后的输出结果是( 2 )。
void fun(int p)
{ int d=2; p=d++; printf(“%d”,p);}
37、有以下程序运行时,输入的值在哪个范围才会有输出结果( B )。
main(){
int x; scanf("%d",&x);
if(x<=3) ;
else if(x!=10) printf("%dn",x); }
A.不等于10的整数 B.大于3且不等于10的整数
C.大于3或等于10的整数 D.小于3的整数
38.有以下程序
#include
main()
{ int x=011; 1+1*8=9
printf("%dn",++x);
}
程序运行后的输出结果是(C)
A.12
B.11
C.10
D.9
39.以下选项中可用作C程序合法实数的是(A)
A.1e0 B3.0e0.2 C.E9 D..12E
40.若有定义语句:int a=3,b=2,c=1;,以下选项中错误的赋值表达式是(A)
A.a=(b=4)=3;
B.a=b=c+1;
C.a=(b=4)+c;
D.a=1+(b=c=4);
二、填空题:
1.若有定义int m=5,y=2;,则计算表达式y+=y-=m*=y后的y值是 -16 。2.若s是int型变量,且s=6,则表达式s%2+(s+1)%2的值为 1 。
3. 若a是int型变量,则表达式(a=4*5,a*2),a+6的值为 26 。
4.若x和a均是int型变量,则计算表达式x=(a=4,6*2)后的x值为 12 ,
计算表达式x=a=4,6*2后的x 值为 4 。
5. 若a是int型变量,则计算表达式a=25/3%3后a的值为 2 。
6.若x和n均是int型变量,且x和n的初值均为5,
则计算表达式x+=n++后x的值为 10 ,n的值为 6 。
7. 若有定义:char c=‘010’;则变量c中包含的字符个数为
1 。8.若有定义:int x=3,y=2;float a=2.5,b=3.5;则下面表达式的值为 1 (x+y)%2+(int)a/(int)b
9. 已知字母a的ASCII码为十进制数97,且设ch为字符型变量,
则表达式ch=‘a’+‘8’-‘3’的值为 f 。
三、程序阅读题:(写出程序运行结果)
1. 以下程序的输出结果是 a,98 。
#include
main()
{ int x=97; char y=’b’;
printf(“%c,%d”, x, y);
}
2. 以下程序的输出结果是 x=-60 。
#include
main()
{ int x=6;
x+=x-=x*x;
printf(“x=%dn”, x);
}
3. 以下程序的输出结果是 x=20 。
#include
main()
{ int x;
(x=4*5,x*5),x+25;
printf(“x=%dn”, x);
}
4. 以下程序的输出结果是 -1 。
#include
main()
{ int i=1,j;
j= -i++;
printf(“%dn”, j) ;
}
5. 有以下程序,运行后的输出结果是 b,b 。
main( )
{ char a='a',b;
print f("%c,",++a);
printf("%cn",b=a++);}
6.以下程序的输出结果是 1,0,7 。
main( )
{ int i=0,j=0,a=6;
if((++i>0)||(++j>0))
a++;
printf("%d,%d,%d",i,j,a); }
四、编程题:(顺序结构编程)
1. 输入华氏温度,输出摄氏温度。C=5/9*(F-32)
/*由华氏温度转化为摄氏温度*/
2. 输入底面半径r和高度h,计算并输出圆柱体的体积v。
v=πr2h(π取3.14,v计算结果保留到小数点后两位)
3.从键盘输入一扇形的半径和角度,求扇形的面积和周长。
4. 从键盘输入学生的三门考试成绩,计算并输出平均成绩。
第二单元选择结构练习题
一、选择题:
1、若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是()。
A.1
B.0
C.2
D.3
2、 if语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是()。
A.必须是逻辑值
B.必须是整数值
C.必须是正数
D.可以是任意合法的数值
3、有以下程序运行时,输入的值在哪个范围才会有输出结果()。
main(){
int x; scanf("%d",&x);
if(x<=3) ;
else if(x!=10) printf("%dn",x); }
A.不等于10的整数 B.大于3且不等于10的整数
C.大于3或等于10的整数 D.小于3的整数
4、在嵌套使用if语句时,C语言规定else总是()。
A.和之前与其具有相同缩进位置的if配对 B.和之前与其最近的if配对
C.和之前与其最近的且不带else的if配对 D.和之前的第一个if配对
5、若有表达式(w)?(--x):(++y),则其中与w 等价的表达式是( )。
A.w==l
B.w==0
C.w!=l
D.w!=0
6、希望当num的值为奇数时,表达式的值为“真”,num的值为偶数时,表达式的值为“假”,则以下不能满足的表达式是()。
A. num%2==1
B. !(num%2==0)
C. !(num%2)
D. num%2
7、设有定义:int a=1,b=2,c=3;,以下语句中执行效果与其它三个不同的是()。
(a>b) c=a,a=b,b=c;
(a>b) {c=a,a=b,b=c;}
(a>b) c=a;a=b;b=c;
(a>b) {c=a;a=b;b=c;}
8、若有表达式(w)?(--x):(++y),则其中与w 等价的表达式是( )。
A.w==l
B.w==0
C.w!=l
D.w!=0
9、有以下程序运行时,输入的值在哪个范围才会有输出结果()。
main(){
int x; scanf("%d",&x);
if(x<=3) ;
else if(x!=10) printf("%dn",x); }
A.不等于10的整数 B.大于3且不等于10的整数
C.大于3或等于10的整数 D.小于3的整数
10、若变量已正确定义,在if (W)printf(“%dn,k”);中,以下不可替代W的是
A.a<>b+c
=getchar()
C.a==b+c
D.a++
11.逻辑运算符两侧运算对象的数据类型。
A)只能是0或1 B)只能是0或非0正数
C)只能是整型或字符型数据 D)可以是任何基本数据类型的数据
12.下列表达式中,不满足“当x的值为偶数时值为真,为奇数时值为假”的要求。 A)x%2==0 B)!x%2!=0 C)(x/2*2-x)==0
D)!(x%2)
13.以下程序片段。
int x=2,y=3;
printf( );
A)什么都不输出 B)输出为:***x=2
C)输出为:###y=2 D)输出为:###y=3
14.能正确表示“当x的取值在[1,10]和[200,210]范围内为真,否则为假”的表达式是。
A)(x>=1) && (x<=10) && (x>=200) && (x<=210)
B)(x>=1) | | (x<=10) | | (x>=200) | | (x<=210)
C)(x>=1) && (x<=10) | | (x>=200) && (x<=210)
D)(x>=1) | | (x<=10) && (x>=200) | | (x<=210)
15.C语言对嵌套if语句的规定是:else总是与。
A)其之前最近的if配对 B)第一个if配对
C)缩进位置相同的if配对 D)其之前最近的且尚未配对的if配对
16.设:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b) &&
(n=c>d)后n的值为。
A)1 B)2 C)3 D)4
17.下面是错误的if语句(设int x,a,b;)
A)if (a=b) x++; B)if (a=<="">
C)if (a-b) x++; D)if ( x ) x++;
18.以下程序片段。
main ( )
{ int x=0,y=0,z=0;
if (x=y+z) printf(“***”);
else printf(“###”); }
A)有语法错误,不能通过编译 B)输出:***
C)可以编译,但不能通过连接,所以不能运行 D)输出:###
19.对下述程序,是正确的判断。
main ( )
{ int x,y;
scanf(“%d,%d”,&x,&y);
if (x>y) x=y;y=x;
else x++;y++;
printf(“%d,%d”,x,y); }
A)有语法错误,不能通过编译 B)若输入3和4,则输出4和5
C)若输入4和3,则输出3和4 D)若输入4和3,则输出4和5
20.若w=1,x=2,y=3,z=4,则条件表达式w<="" p="" w="" y=""
y
21.下述表达式中,可以正确表示x≤0或x≥1的关系。
A)(x>=1) | | (x<=0) B)x>=1 | x<=0
C)x>=1 && x<=0 D)(x>=1) && (x<=0)
22.下述程序的输出结果是。
main ( )
{ int a=0,b=0,c=0;
if (++a>0 || ++b>0) ++c;
printf(“%d,%d,%d”,a,b,c);
}
A)0,0,0 B)1,1,1 C)1,0,1 D)0,1,1
23.下述程序的输出结果是。
main ( )
{ int x=-1,y=4,k;
k=x++<=0 && !(y--<=0);
printf(“%d,%d,%d”,k,x,y);}
A)0,0,3 B)0,1,2 C)1,0,3 D)1,1,2
24.以下程序输出结果是。
main ( )
{ int x=1,y=0,a=0,b=0;
switch(x) {
case 1:switch (y) {
case 0 : a++ ; break ;
case 1 : b++ ; break ;
}
case 2:a++; b++; break;
case 3:a++; b++;
}
printf(“a=%d,b=%d”,a,b);
}
A)a=1,b=0 B)a=2,b=1 C)a=1,b=1 D)a=2,b=2
25.下述程序的输出结果是。
main ( )
{ int a,b,c;
int x=5,y=10;
a=(--y=x++)?–y : ++x ;
b=y++ ; c=x ;
printf(“%d,%d,%d”,a,b,c);
}
-5,5,6
A)6,9,7 B)6,9,6 C)7,9,6 D )7,9,7
26.当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是。
if (a
if (c
else
if (a
if (b
else x=3;
else x=6;
else x=7;
A)1 B)2 C)3 D)4
27.在下面的条件语句中(其中S1和S2表示C语言语句),只有一个在功能上与其他三个语句不等价。
A)if (a) S1; else S2; B)if (a==0) S2; else S1;
C)if (a!=0) S1; else S2; D)if (a==0) S1; else S2;
28.若int i=0;执行下列程序后,变量i的正确结果是。
switch (i) {
case 9: i+=1 ;
case 10: i+=1 ;
case 11: i+=1 ;
default : i+=1 ;
}
1
A)10 B)11 C)12 D)13
29.若有说明语句int i=5,j=4,k=6;float f;则执行f=(i p="">
A)4.0 B)5.0 C)6.0 D)7.0
30.若有定义:int a=3,b=2,c=1;并有表达式:①a%b,②a>b>c,③b&&c+1,④c+=1,则表达式值相等的是。
A)①和②B)②和③C)①和③D)③和④
填空题:
1.C语言提供6种关系运算符,按优先级高低它们分别是________,________,________,________,________,________等。
2.C语言提供三种逻辑运算符,按优先级高低它们分别是________,________,________。
3.将条件“y能被4整除但不能被100整除,或y能被400整除”写成逻辑表达式________。
4.设x,y,z均为int型变量;写出描述“x,y和z中有两个为负数”的C语言表达式:x*y*z>0&&(x<0||y<0||z<0)________。
5.已知A=7.5,B=2,C=3.6,表达式A>B && C>A || AB的值是________。
6.有int x=3,y=-4,z=5;则表达式(x&&y)==(x||z)的值为________。
7.若有x=1,y=2,z=3,则表达式(x< bdsfid="500" p=""><>
8.执行以下程序段后,a=________,b=________,c=________。
int x=10,y=9, a,b,c ;
a = (x--=y++) ? x-- : y++ ;
b = x++ ;
c = y ;
读程题:
1.以下程序的输出结果是。
main()
{int a=1,b=0;
if(a==0) b++;
else if(a==0)
if(a)b+=2;
else b+=3;
printf(”%d\n”,b);
}
2.以下程序的输出结果是。
main()
{ int x=1,y=0;
if(!x) y++;
else if(x==0)
if (x) y+=2;
else y+=3;
printf("%dn",y);
}
3. 以下程序的输出结果是。
main( )
{ int a=100;
if(a>100) printf("%dn",a<=100);
else printf("%dn",a<=100);
}
4、以下程序的输出结果是。main()
{ int i;
for(i=0;i<3;i++)
{switch(i)
{ case 1: printf("%d",i);
case 2: printf("%d",i);
default: printf("%d",i);}}}
5、以下程序的输出结果是。
main( )
{ int i=0,j=0,a=6;
if((++i>0)||(++j>0)) a++;
printf("%d,%d,%d",i,j,a); }
6.若运行时输入100↙,写出以下程序的运行结果。main ( )
{ int a ;
scanf(“%d”,&a);
printf(“%s”,(a%2!=0)?”No”:”Yes”);
}
7.写出以下程序的运行结果。
main ( )
{ int a=2,b=7,c=5;
switch (a>0) {
case 1: switch (b<0) {
case 1: printf(“@”); break ;
case 2: printf(“!”); break ; }
case 0: switch (c==5) {
case 1: pritnf(“*”) ; break ;
case 2: printf(“#”) ; break ;
default : printf(“#”) ; break ;
}
default : printf(“&”);
}
printf(“n”);}
编程题:
1.有三个整数a,b,c,由键盘输入,输出其中最大的数。
2.编程输入整数a和b,若大于100,则输出百位以上的数字,否则输出两数之和。
3.给出一百分制成绩,要求输出成绩等级’A’,’B’,’C’,’D’,’E’。90分以上为’A’,80-89分为’B’,70-79分为’C’,60-69分为’D’,60分以下为’E’。
4.提高题:给一个不多于5位的正整数,要求:①求出它是几位
数;②分别打印出每一位数字;③按逆序打印出各位数字,例如原数是321,应输出123。
第三单元循环结构练习题
选择题:
1、有以下程序执行后的输出结果是( D )。
main( )
{ int i,s=0;
for(i=1;i<10;i+=2) s+=i+1;
printf("%dn",s);}
A.自然数1~9的累加和 B.自然数1~10的累加和
C.自然数1~9中的奇数之和 D.自然数1~10中的偶数之和
2、以下关于for语句的说法不正确的是()。
A. for循环只能用于循环次数已经确定的情况
B. for循环是先判断表达式,后执行循环体语句
C. for循环中,可以用break跳出循环体
D. for循环体语句中,可以保含多条语句,但要用花括号括起来
3、若i和k都是int类型变量,有以下for语句
for(i=0,k=-1;k=1;k++) printf("*****n");
下面关于语句执行情况的叙述中正确的是()。
A.循环体执行两次
B.循环体执行一次
C.循环体一次也不执行
D.构成无限循环
4、以下程序程序的执行后的输出结果是()。
main()
{int i,t[][3]={9,8,7,6,5,4,3,2,1};
for(i=0;i<3;i++) printf(“%d”,t[2-i][i]);}
A.7 5 3
B. 3 5 7
C.3 6 9
D.7 5 1
5、以下程序运行后的输出结果是( A)。
void fun(char*s)
{ while(*s)
{ if(*s%2==0) printf(“%c”,*s); s++;}
}
main()
{ char a[]={“good”};fun(a);printf(“n”);}
注意:字母a的ASCⅡ码值为97
A.d
6、已知 int t=0; while(t=1){...} 则以下叙述正确的是()。
A)循环控制表达式的值为0
B)循环控制表达式的值为1
C)循环控制表达式不合法
D)以上说法都不对
7、设有以下程序段
int x=0,s=0;
while(!x!=0)s+=++x;
printf("%d",s); 则
A)运行程序段后输出0
B)运行程序段后输出1
C)程序段中的控制表达式是非法的
D)程序段执行无限次
8、设i,j,k均为int型变量,则执行完下面的for语句后,k的值为( C )。for(i=0, j=10; i<=j; i++, j- -) k=i+j;
A.6
B.9
C.10
D.11
9、C语言中,break; 语句可以用于循环语句和( A )语句中。
10、for(i=0; i<=15; i++) printf("%d", i ); 循环结束后,i 的值为()。
A.14
B.15
C.16
D.17
11.有以下程序
main()
{ char b,c; int i; b='a'; c='A';
for(i=0;i<6;i++)
{ if(i%2) putchar(i+b);
else putchar(i+c);
} printf("n");}
程序运行后的输出结果是(B)
A. ABCDEF
B. AbCdEf
C. aBcDeF
D. abcdef
12、与语句“while(!x)”等价的语句是()。
A. while(x==0)
B. while(x!=0)
C. while(x==1)
D. while(x!=1)
13、下述程序段中,while循环执行次数是()。
int k=0;
while(k=1) k++;
A.无限次
B. 有语法错误,不能执行
C.一次也不执行
D. 执行一次
14、以下程序中,while循环的次数是()。
#include
void main( )
{int i=0;
while(i<10) { if(i<1) continue; if(i= =5)break; i++;}}
A. 1
B. 死循环,不能确定次数
C. 6
D. 10
15.下面程序段
while (k=0) {printf(“%d”,k);k--;}
则下面描述中正确的是 C 。
A)while循环执行10次 B)循环是无限循环
C)循环题语句一次也不执行 D)循环体语句执行一次
16.以下程序段的循环次数是。
for (i=2; i==0; ) printf(“%d” , i--) ;
A)无限次 B)0次 C)1次 D)2次
17.下面程序的输出结果是 B 。
main ( )
{ char c='A’;
int k=0;
do {
switch (c++) {
case ‘A’ : k++ ; break ;
case ‘B’ : k-- ;
case ‘C’ : k+=2 ; break ;
case ‘D’ : k%=2 ; continue ;
case ‘E’ : k*=10 ; break ;
default : k/=3 ;
}
k++;
} while (c<’G’) ;
printf (“k=%d”,k) ;
}
A)k=3 B)k=4 C)k=2 D)k=0
19.下面程序的输出结果是。
main ( )
{ int x=9;
for (; x>0; x--) {
if (x%3==0) {
printf(“%d”,--x);
continue ;
} } }
A)741 B)852 C)963 D)875421
20. int i=100;以下不是死循环的程序段是。
A)while (1) {i=i%100+1 ;if (i>100) break ;} B)for ( ; ; ) ;
C) int k=0; do { ++k; } while (k>=0); D)int
s=36;while(s) ;--s ;
21.下述程序段的运行结果是 C 。
int a=1,b=2, c=3, t;
while (a
A)1,2,0 B)2,1,0 C)1,2,1 D)2,1,1
22.下面程序的功能是从键盘输入一组字符,从中统计大写字母和
小写字母的个数,选择填空。
main ( )
{ int m=0,n=0;
while ((【】) ! ’n’)
{
if (c>=’A’ && c<=’Z’) m++;
if (c>=’a’ && c<=’z’) n++;
} }
A)c=getchar( ) B)getchar( ) C)c==getchar( ) D)scanf(“%c”,&c) 23.下述语句执行后,变量k的值是。
int k=1;
while (k++<10);
A)10 B)11 C)9 D)无限循环,值不定
24.下面程序的输出结果是。
main ( )
{ int k=0,m=0,i,j;
for (i=0; i<2; i++) {
for (j=0; j<3; j++)
k++ ;
k-=j ;
}
m = i+j ;
printf(“k=%d,m=%d”,k,m) ;
}
A)k=0,m=3 B)k=0,m=5 C)k=1,m=3 D)k=1,m=5
25.下面for循环语句。B
int i,k;
for (i=0, k=-1; k=1; i++, k++)
printf(“***”);
A)判断循环结束的条件非法 B)是无限循环
C)只循环一次 D)一次也不循环
26.语句while (!E); 括号中的表达式!E等价于。
A)E==0 B)E!=1 C)E!=0 D)E==1
27.以下是死循环的程序段是。
A) for (i=1; ; ) {
if (i++%2==0) continue ;
if (i++%3==0) break ;
}
B) i=32767; do { if (i<0) break ; } while (++i) ;
C) for (i=1 ; ;) if (++I<10) continue ;
D. i=1 ; while (i--);
28.执行语句for (i=1;i++<4;) ; 后变量i的值是 B 。
A)3 B)4 C)5 D)不定
29.以下程序段。
x=-1;
do
{ x=x*x; }
while (!x);
A)是死循环 B)循环执行2次 C)循环执行1次 D)有语法错误
30.下面程序的功能是在输入的一批正数中求最大者,输入0结束循环,选择填空。main ( )
{ int a,max=0;
scanf(“%d”,&a);
while (【】) { if (max<="" scanf="" }="">
A)a==0 B)a C)!a==1 D)!a
31.以下不是死循环的语句是 C。
A)for (y=9,x=1;x>++y;x=i++) i=x ;
B)for ( ; ; x++=i ) ;
C)while (1) { x++ ; }
D)for (i=10 ; ; i--) sum+=i ;
32.下面程序段的运行结果是。
x=y=0;
while (x<15) y++,x+=++y ;
printf(“%d,%d”,y,x);
A)20,7 B)6,12 C)20,8 D)8,20
33.以下for循环的执行次数是。
for (x=0,y=0; (y=123) && (x<4) ; x++) ;
A)无限循环 B)循环次数不定 C)4次 D)3次
34.若运行以下程序时,输入2473↙,则程序的运行结果是。
main ( )
{ int c;
while ((c=getchar( )) ! =’n’)
switch (c-‘2’) {
case 0 :
case 1 : putchar (c+4) ;
case 2 : putchar (c+4) ; break ;
case 3 : putchar (c+3) ;
default : putchar (c+2) ; break ;
}
printf(“n”);
}
A)668977 B)668966 C)66778777 D)6688766
读程题:
1.以下程序的输出结果是 3 5 7 。
main( )
{ int i,x[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0; i<3; i++) printf("%d ",x[i][2-i]);
}
2.以下程序的输出结果是。
main()
{int n[2],i,j;
for(i=0;i<2;i++)n[i]=0;
for(i=0;i<2;i++)
for(j=0;j<2;j++)n[j]=n「i」+1;
printf(”%dn”,n[1]);}
3.以下程序的输出结果是。
main()
{ int i, a[6]={2,3,4,5,6,7};
for(i=1; i<6; i+=2)
printf("%d ", a[i]);
}
4.以下程序的输出结果是。
main()
{ int i, j, a[3][4]={{0,1,2},{3,4,5,6},{7,8}};
for(i=0;i<3;i++)
{ for(j=i;j<4;j++)
printf("%5d", a[2-i][j]);
printf("n"); }
}
5、以下程序的输出结果是 3 。
main()
{ char s[ ]="012xy08s34f4w2";
int i,n=0;
for(i=0;s[i]!=0;i++)
if(s[i]>='0'&&s[i]<='9') n++;
printf("%dn",n); }
)
6.写出下面程序运行的结果。
main ( )
{ int x,i ;
for (i=1 ; i<=100 ; i++) {
x=i;
if (++x%2==0)
if (++x%3==0)
if(++x%7==0)
printf(“%d ”,x) ; }}
7.写出下面程序运行的结果。
main ( )
{ int i,b,k=0 ;
for (i=1; i<=5 ; i++) { b=i%2; while (b--=0)
printf(“%d,%d”,k,b);}
8.写出下面程序运行的结果。
main ( )
{ int a,b;
for (a=1,b=1 ; a<=100 ; a++) {
if (b>=20) break;
if (b%3==1) { b+=3 ; continue ; }
b-=5;
}
printf(“%dn”,a);}
9.写出下面程序运行的结果。
main ( )
{ int k=1,n=263 ;
do { k*= n%10 ; n/=10 ; } while (n) ;
printf(“%dn”,k);}
10.写出下面程序运行的结果。
main ( )
{ int i=5 ;
do {
switch (i%2) {
k++ ; }
case 4 : i-- ; break ;
case 6 : i-- ; continue ;
}
i-- ; i-- ;
printf(“%d”,i);
}while (i>0) ;
}
11.写出下面程序运行的结果。
main ( )
{ int i,j;
for (i=0;i<3;i++,i++) {
for (j=4 ; j>=0; j--) {
if ((j+i)%2) {
j-- ;
printf(“%d,”,j);
continue ;
}
--i ; j-- ;
printf(“%d,”,j) ; }}}
12.写出下面程序运行的结果。
main ( )
{ int a=10,y=0 ;
do {
a+=2 ; y+=a ;
if (y>50) break ;
} while (a=14) ;
printf(“a=%d y=%dn”,a,y) ;
}
13.写出下面程序运行的结果。
main ( )
{ int i,j,k=19;
while (i=k-1) {
k-=3 ;
if (k%5==0) { i++ ; continue ; }
else if (k<5) break ;
i++;
}
printf(“i=%d,k=%dn”,i,k);
}
14.写出下面程序运行的结果。
main ( )
{ int y=2,a=1;
while (y--!=-1)
do {
a*=y ;
a++ ;
} while (y--) ;
printf(“%d,%dn”,a,y);
}
15.写出下面程序运行的结果。
main ( )
{ int i,k=0;
for (i=1; ; i++) {
k++ ;
while (k<="">
k++ ;
if (k%3==0) goto loop ;
}
}
loop:
printf(“%d,%dn”,i,k);
}
编程题:
1.输入两个正整数m和n,求其最大公约数和最小公倍数。
2.输入一行字符,分别统计出其中英文字母,空格,数字和其他字符的个数。
3.求(即求1!+2!+3!+…+19!+20!)。
4.打印出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方之和等于该数本身。
5.编写程序,求s=1+2+3+……+n,直到累加和大于或等于5000为止,输出s及n的值。
6.编写程序输出如下图形。
*
**
***
****
*****
版权声明:本文标题:C语言练习题(12月3日讲解) 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1705478700h486434.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论