C语言习题集(修改版).doc_第1页
C语言习题集(修改版).doc_第2页
C语言习题集(修改版).doc_第3页
C语言习题集(修改版).doc_第4页
C语言习题集(修改版).doc_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言习题集第三章 数据类型、运算符与表达式一选择题1以下字符列中,能作为C程序自定义标识符的是A) num(10) B)file_bak C) break D) class + 22 下列字符列中,不是C语言提供的合法关键字是A)switch B)begin C) case D) default3 键盘符号是指如其标记所示能显示的字符。下列字符中属于键盘符号的是A) B)n C) t D) b4 下列字符列中,不是用来表达转义字符是 A) B) C) 074 D) 05 下列字符列中,可以作为“字符串常量”的是 A)ABC B)ABC C) abc D) a6 在用一个字节存储一个字符的系统中,n在内存占用的字节数是 A)1 B)2 C) 3 D) 47 字符串 xyz在内存占用的字节数是 A)3 B)4 C) 6 D) 88 在以下字符列中,合法的长整型常数是 A)0L B)4962 C) 0.054838743 D) 2.1869e109 一个char型数据,它的值在内存中存放的是 A)ASCII代码值 B)BCD代码值 C) 内码值 D) 十进制代码值10 执行语句“x = (a = 3, b = a-);”后,x,a,b的值依次为 A)3,3,2 B)2, 3,2 C) 3,2,3 D) 2,3,311 设有语句“int a=3;”,则执行了语句“a + = a - = a*a;”后,变量a的值是 A)3 B)0 C) 9 D) -1212 在以下一组运算符中,优先级最高的运算符是 A)0) printf(“%d”,a); B) a+;C) if (ab) a=(a*b,b,a);D) a+=a-=a*a;(2)若变量已正确定义并赋值,下面符合C语言语法的表达式是 ( )A) a:=b+1 B) a=b=c+2 C) int 18.5%3 D) a=a+7=c+b(3)若变量a、i已正确定义,且i已正确赋值,合法的语句是( ) A) a=1 B) +i;C) a=a+=5; D) a=int(i);(4)下列可作为C语言赋值语句的是( )A)x=3,y=5 B)a=b=6C) i-D) y=(int)x;(5)设有如下的变量定义:int i=8,k,a,b;unsinged long w=5;double x=1.42,y=5.2;则以下符合C语言语法的表达式是( )A)a+=a-=(b=4)*(a=3)B)x%(-3);C)a=a*3=2D)y=float(i)(6)若已定义x和y为double类型,则表达式x=1,y=x+3/2 的值是( ) A) 1B) 2 C) 2.0D) 2.5(7)设有如下定义:int x=l,y=-1;,则语句:printf(%dn,(x-&+y);的输出结果是( )A) 1 B) 0 C) -1 D) 2(8)已知ch是字符型变量,下面不正确的赋值语句是( )A)cka十b; B) chO; C)ch7十9; D)ch5十9;(9)已知ch是字符型变量,下面正确的赋值语句是( )A) ch123; B)chxff; C) ch08; D)ch;(10)若有以下程序段:int c1=1,c2=2,c3; c3=1.0/c2*c1; 则执行后,c3中的值是( )A) 0 B) 0.5 C) 1 D) 2(11)设x、y、z和k都是int型变量,那么执行表达式:x=(y=4,z=16,k=32)后,x的值为( )A)4 B)16C)32D)52(12)假定有以下变量定义:int k=7,x=12;则能使值为3 的表达式是( ) A)x%=(k%=5) B)x%=(k-k%5)C)x%=k-k%5 D)(x%=k)-(k%=5)(13)若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是( )A) -3 B) 9 C) -12 D) 6(14)假定x和y为double型,则表达式x=2,y=x+3/2的值是( )A) 3.500000 B) 3 C) 2.000000 D) 3.000000(15)设正x、y均为整型变量,且x=10 ,y=3,则以下语句的输出结果是( )printf(%d,%dn,x-,-y);A) 10,3 B) 9,3 C) 9,2 D)10,2(16)设x为int型变量,则执行以下语句后,x的值为( )x=10 ;x=x-=x-x;A)10 B)20 C)40 D)30(17)有如下程序 main( ) int y=3,x=3,z=1; printf(“%d %dn”,(+x,y+),z+2); 运行该程序的输出结果是( )A) 3 4 B) 4 2 C) 4 3 D) 3 3(18)设x和y均为int型变量,则以下语句:x+=y;y=x-y;x-=y;的功能是( )A)把x和y按从大到小排列B)把x和y按从小到大排列C)无确定结果D)交换x和y中的值(19)以下程序的输出结果是( )main( ) int a=12,b=12; printf(“%d %dn”,-a,+b);A)10 10B)12 12C)11 13D)11 10(20)以下程序的输出结果是( )main( ) int a=12,b=12; printf(“%d %dn”,-a+b,+b);A)24 13B)23 13C)24 12D)23 12(21)语句:printf(%d,(a=2)&(b= -2);的输出结果是( )A)无输出 B)结果不确定 C)-1 D)1(22)以下程序的输出结果是( )main() int a=3;printf(%dn,(a+=a-=a*a) );A) -6 B)12 C) 0 D) 12(23)语句:printf(%d,strlen(abc12301den);的输出结果是( )A) 10 B) 4 C) 6 D)11(24)语句:printf(%d,strlen(abc12309den);的输出结果是( )A) 10 B) 4 C) 6 D)11(25)语句:printf(%d,strlen(abc12399den);的输出结果是( )A) 10 B) 4 C) 6 D)11(26)若有以下定义:char a;int b;float c;double d;则表达式a*b/d-c值的类型为( )A) float B)int C)char D) double(27)以下变量x.、y、z均为double类型且已正确赋值,不能正确表示数学式子的C语言表达式是( )A) x/y*z B) x*(1/(y*z) C) x/y*1/z D) x/y/z(28)x、y均已正确定义并赋值,数学式在C程序中对应正确的表达式为( )A) sqrt(x*x+y*y)/x*yB) SQRT(x*x+y*y)/x*yC) sqrt(x*x+y*y)/x/y)D) SQRT(x*x+y*y)/(x*y)(29)下列语句不能正确输出字符A的是( C )A)putchar(A); B) putchar(101);C) putchar(A); D) putchar(65);(30)下列关于getchar函数的使用不正确的是( )A) int ch; ch=getchar(); B) char ch; ch=getchar(); C) char ch; getchar(ch); D) putchar(getchar();(31)若变量已正确说明为float类型,要通过语句scanf(%f %f %f ,&a,&b,&c);给a赋于10.0,b赋予22.0,c赋予33.0,不正确的输入形式是:( )A) 10 B) 10.0,22.0,33.02233C) 10.0 D) 10 2222.0 33.0 33(32)有如下定义:int x ;float y ;char z ,要通过语句scanf(%d%f%c,&x,&y,&z);给x赋10,y赋20.0,z赋 a,正确的输入形式是( )【注:代表空格字符】A) 10,20.0,aB) 1020.0aC) 1020.0aD) 10,20.0a(33) x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是( )A) INPUT x、y、z; B)scanf(%d%d%d,&x,&y,&z);C) scanf(%d%d%d,x,y,z); D) read(%d%d%d,&x,&y,&z);(34)设i是int型变量,f是float型变量,用下面的语句给这两个变量输入值:scanf(“i=%d,f=%f”,&i,&f);为了把100和765.12分别赋给i和f,则正确的输入为( )A)100765.12 B)i=100,f=765.12 C)100765.12 D)x=100y=765.12(35)以下程序的输出结果是( ) main() printf(n*s1=%15s*,chinananjing); printf(n*s2=%-5s*,chi);A) *s1=chinananjing *B) *s1=chinananjing *s2=*chi* *s2=chi *C) *s1=* chinananjing *D) *s1= chinananjing*s2=chi* *s2=chi *(36)printf函数中用到格式符5s,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按方式( );如果字符串长度小于5,则输出按方式( )。A)从左起输出该字串,有补空格B)按原字符长从左向有全部输出c)右对齐输出该宇串,左补空格D)输出错误信息(37)若有定义:int a=-1;则语句printf(%un,a);的输入出结果是( ) A)65535 B)1 C)-32767 D)32767(38)下列程序的运行结果是( )main() long y=-43456; printf(y=%-8ldn,y); printf(y=%-08ldn,y); printf(y=%08ldn,y); printf(y=%+8ldn,y);A) y=-43456B) y=-43456 y =-43456 y=-43456 y =-0043456 y=-0043456 y =-43456 y=+ -43456C) y=-43456 D) y=-43456 y =-43456 y=-43456 y =-0043456 y=-0043456 y =-43456 y=+43456(39)下列程序的运行结果是( )main() int y=2456; printf(y=%3on,y); printf(y=%8on,y); printf(y=%#8on,y);A) y=2456 B) y=4630Y=2456 y=4630Y=#2456 y=#4630C) y=2456 D) y=4630Y=2456y=4630Y=02456 y=04630二、填空。(1)设y是int型变量,请写出判断y为奇数的关系表达式【1】。(2)语句: x+;+x; x=x+1;x=l+x; ,执行后都使变量x中的值增1,请写出一条同一功能的赋值语句(不得与列举的相同)【2】。(3)下列程序的输出结果是16.00,请填空。main () int a=9, b=2; float x= 【 3 】, y=1.1,z;z=a/2+b*x/y+1/2;printf (%5.2f n , z ); (4)若想通过以下输入语句使a中存放字符串1234,b中存放字符5,则输入数据的形式应该是【4】 char a10,b;scanf(“a=%sb=%c”,a,&b);(5)设x和y均为int型变量,且x=1,y=2,则表达式1.0*x/y的值为【5】(6)若有定义:int a=10,b=9,c=8;接着顺序执行下列语句后,变量b中的值是【6】c=(a-=(b-5); c=(a%11)+(b=3); 第五章 选择结构程序设计 一选择题。(1)设整型变量m,n,a,b,c,d均为1,执行“(m=ab)&(n=ab)”后,m,n的值是 A)0,0 B)0,1 C) 1,0 D) 1,1(2)在以下一组运算符中,优先级最高的运算符是 A)= B)= C) + D) &(3)设a为整型变量,下列C表达式中,不能表达数学关系式:10a15的是 A)10a10&a15 D) !(a=15)(4)设a,b和c都是int型变量,且a=3,b=4,c=5,则下面的表达式中值为0的是A)a&b B)a=b C) a|b+c&b-c D) !(a=A&ch0) y = 1; else y = 0; -1 (x0) 1 (x 0) 0 (x0) -1 (x0) 0 (x 0) 1 (x 0) 0 (x 0)(10)设int a = 8, b = 7, c = 6, x = 1;执行语句 if (a 6) if (b 7) if (c 8) x = 2; else x = 3;后x的值是A)0 B)1 C) 2 D) 3(11) 设变量m,n,a,b,c,d均为0,执行(m = a=b)| (n=c=d)后,m,n的值是 A)0,0 B)0,1 C) 1,0 D) 1,1(12) 设a为5,执行下列语句后,b的值不为2的是 A)b = a/2 B)b = 6-(-a) C) b = a%2 D) b = a 3 ? 3: 2(13) 设a=1,b=2,c=3,d=4,则表达式a b ? a : c d ? a : d的结果为 A)4 B)3 C) 2 D) 1(14) 表达式“9!= 7”的值是 A) true B)非0值 C) 0 D) 1二、填空。(1)设有下列运算符:、+、+、&、b的值为,abc的值为。(3)若已知a=10,b=20,则表达式!az)?x+2:x-2,3,2”后,x = 。(5)能表述“20x30或x-100”的C语言表达式是。(6)C语言中运算结果可以当成逻辑值使用的表达式有:表达式、表达式、表达式、表达式、表达式、表达式。(7)若有定义语句“int a = 25, b = 14, c = 19;”,以下语句的执行结果是。if(a+=25 & b- = 2 & c+) printf(“*a=%d,b=%d,c=%dn”, a, b, c);else printf(“#a=%d,b=%d,c=%dn”, a, b, c);(8)以下两条if语句可合并成一条if语句为。if (a b) printf(“*y = %dn”, y);else printf(“#x = %dn”, x);(9)以下程序的输出结果是_。 main() int x = 100, a = 10, b = 20, ok1 = 5, ok2 = 0; if(ab) if(b!=15) if(!ok1) x = 1; else if(ok2) x = 10; else x = -1; printf(“%dn”, x);第六章 循环控制一选择题。(1) 设有程序段int k=10;while (k=0) k=k-1;则下面描述中正确的是_A)while循环执行10次 B)循环是无限循环C)循环体语句一次也不执行 D)循环体语句执行一次(2) 设有以下程序段int x=0,s=0;while (!x!=0) s+=+x;printf(“%d”,s);则_A)运行程序段后输出0 B)运行程序段后输出1C)程序段中的控制表达式是非的 D)程序段执行无数次(3) 语句while(!e)中表达式!e等价于_A) e= =0 B)e!=1 C)e!=0 D)e= =1(4) 下面程序段的运行结果是_ a=1;b=2;c=2; while(abc) t=a;a=b;b=t;c-; printf(“%d,%d,%d”,a,b,c);A)1,2,0 B)2,1,0 C)1,2,1 D)2,1,1(5) 下面程序的运行结果是_ x=y=0; while(x5) y+;x+=+y; printf(“%d,%d”,y,x);A)3,6 B)4,6 C)20,8 D)8,20(6) 下面程序段的运行结果是_ int n=0; while (n+=2) printf(“%d”,n);A)12 B)123 C)1234 D)语法有错(7) 已知:int a,b;对于下列if 语句:if (a=b) printf(“a is equal to bn”);在编译时,C编译程序_A) 能指出该语句有语法错误 B) 不能指出该语句有语法错误(8) 若要求在if 后一对圆括号内表示a不等于0的关系,则能正确表示这一关系的表达式为_ A)a0 B)!a C)a=0 D)a(9) 以下错误的if 语句是_A) if (xy); B)if (x= =y) x+=y ; C)if (x!=y) scanf(“%d”,&x) else scanf(“%d”,&y); D)if (x.y) x+;y+;(10) C语言对嵌套if 语句的规定是:else 总是与_配对.A)其之前最近的if B)第一个if C)缩进位置相同的if D) 其之前最近的if 且尚未配对的if (11) 为了判断两个字符串是否相等,应当使用_A)if(s1= =s2) B)if (s1=s2) C)if (strcpy(s1,s2) D)if (strcmp(s1,s2)= =0)(12) 若有说明int x,y; 不能实现以下函数关系的程序段是1 (x0)y= -1 (x0)0 (x=0)A) if (x=0)if (x=0) if(x0) y=1; if (x0) y=1; else y=0;else y=-1; else y=-1; (13) 下列关于是switch 语句和break语句的结论中,正确的是_A)break 语句是switch语句中不可缺少的的一部分B)在switch语句中可以根据需要使用或不使用break语句C)在switch语句中不可以使用break语句D)default关键字是switch语句中不可缺少的一部分。(14) 下面程序的运行结果是_ main() int y=10; do y-; while (-y); printf(“%dn”,y-);A)-1 B)1 C)8 D)0(15) 在下列选项中,没有构成死循环的程序段是_A) int i=100 B) for( ; ; );while(1) i=i%100+1;if(i100) break;C) int k=1000; D) int s=36;do+k; while(k=1000); while(s);-s;(16) 以下程序输出结果是_A) 7 B) 6 C) 5 D) 4main() int m=5;if(m+5) printf(%dn,m);esle printf(%dn,m- -);(17) 当a=1,b=3,c=5,d=5时,执行下面一段程序后,x的值为_ if(ab)if(cd) x=1;elseif(ac)if(bd) x=2;else x=3;else x=6;else x=7;A) 1 B) 2 C) 3 D) 6(18) 有如下程序_main() int x=23;do printf(“%d”,x-);while(!x);该程序的执行结果是A) 321 B) 23 C) 不输出任何内容 D) 陷入死循环(19) 设有程序段x= -1;do x=x*x;while (!x);A)是死循环 B)循环执行二次 C)循环执行一次 D)有语法错误(20) 运行以下程序后,如果从键盘上输入 china#,则输出结果为 #include main() int v1=0,v2=0;char ch;while(ch=getchar()!=#)switch(ch) case a:case h:default: v1+;case 0: v2+;printf(%d,%dn,v1,v2);A) 2,0 B) 5,0 C) 5,5 D) 2,5(21) 以下程序的输出结果是 main( ) int i;for(i=1;i0?1:x0) y=1; B) if(x) else if(x0)y=1; else y=0; else if(x=0) if(x0)y=1; if(x0)y=1; else if(x=0)y=0; else y=-1; else y=-1;(23) 以下循环体的执行次数是 main() int i,j; for(i=0,j=1; i=j+1; i+=2, j-) printf(%d n,i); A) 3 B) 2 C) 1 D) 0 (24) 以下叙述正确的是 A) do-while语句构成的循环不能用其它语句构成的循环来代替。 B) do-while语句构成的循环只能用break语句退出。 C) 用do-while语句构成的循环,在while后的表达式为非零时结束循环。 D) 用do-while语句构成的循环,在while后的表达式为零时结束循环。 (25) 有如下程序main() int i,sum=0;for(i=1;i6) n-;printf(“%d”,n);该程序段的输出结果是A) 987 B) 876 C) 8765 D) 9876(27) 有如下程序main()int x=1,a=0,b=0;switch(x)case 0: b+;case 1: a+;case 2: a+;b+;printf(a=%d,b=%dn,a,b);该程序的输出结果是A)a=2,b=1 B)a=1,b=1 C)a=1,b=0 D)a=2,b=2(28) 阅读以下程序: main() int x; scanf(%d,&x); if(x-5) printf(%d,x); else printf(%d,x+); 程序运行后,如果从键盘上输入5,则输出结果是 _A)3 B) 4 C) 5 D) 6(29) t为int类型,进人下面的循环之前,t的值为0 while( t=l ) 则以下叙述中正确的是 _A) 循环控制表达式的值为0 B) 循环控制表达式的值为1 C) 循环控制表达式不合法 D) 以上说法都不对(30) 以下程序的输出结果是 _main() int a=1,b=10;do b-=a;a+; while (b-0);printf(“a=%d,b=%dn”, a,b); A a=3,b=11 Ba=2,b=8 Ca=1,b= -1 Da=4,b=9 (31) 以下程序的输出结果是 _main() int a, b; for(a=1, b=1; a=10) break; if (b%3= =1) b+=3; continue; printf(%dn,a); A) 101 B) 6 C) 5 D) 4(32) 在执行以下程序时,如果从键盘上输入,ABCdef,则输出为_#includemain() char ch;while(ch=getchar()!=n) if(ch=A & ch=a & ch=z) ch=ch-32;printf(%c,ch);printf(n);A ABCdef B abcDEF C abc D DEF(33) 有以下程序段int k=0;while(k=1)k+;while 循环执行的次数是_A)无限次 B)有语法错,不能执行 C)一次也不执行 D)执行1次(34) 以下程序的输出结果是_main() int num= 0;while(num=2) num+; printf(%dn,num);A) 1 B) 1 C) 1 D) l2 2 23 34 (35) 若a、b、c1、c2、x、y、均是整型变量,正确的switch语句是_A) swich(a+b); B) switch(a*a+b*b) case 1:y=a+b; break; case 3: case 0:y=a-b; break; case 1:y=a+b;break; case 3:y=b-a,break;C) switch a D) switch(a-b) case c1 :y=a-b; break default:y=a*b;break;case c2: x=a*b; break case 3:case 4:x=a+b;break;default:x=a+b; case 10:case 11:y=a-b;break; (36) 以下程序的输出结果是 #include main() int i=0,a=0; while(i20) for(;) if(i%10)=0) break; else i-; i+=11; a+=i; printf(%dn,a); A) 21 B) 32 C) 33 D) 11 (37) 若有定义: float w; int a, b; 则合法的switch语句是_ A) switch(w) B) switch(a); case 1.0: printf(*n); case 1 printf(*n); case 2.0: printf(*n); case 2 printf(*n); C) switch(b) D) switch(a+b); case 1: printf(*n); case 1: printf(*n); default: printf(n); case 2: printf(*n); case 1+2: printf(*n); default: printf(n); (38) 下面程序执行的结果是_- for(y=1;y=0); if (I100) break;(40) 下面程序的运行结果为_ #include main()int x,y,i; for (i=1;i 3; j ) if ( j%3 ) j;j; j;printf ( “%d ”, j ); (4) 执行下面的程序后,a的值是()。 main() int a, b;for ( a = 1, b = 1; a = 20) break;if ( b%3 = = 1) b += 3; continue; b = 5; (5) 以下程序运行后的输出结果是【】。 main() int i=10, j=0; do j=j+i; i-; w

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论