《C语言程序设计 习题大全(含答案) C语言-2.doc》由会员分享,可在线阅读,更多相关《C语言程序设计 习题大全(含答案) C语言-2.doc(28页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C语言基础一:1.下列四组选项中,均不是C语言关健字的选项是( A )。A) define B) gect C) include D) while IF char scanf go type printf case pow2.下面四个选项中,均是合法整型常量的选项是( A )。A)160 B)-0xcdf C) -01 D)-0x48a -0xffff 01a 986,012 2e5 011 0xe 0668 0x3.下面四个选项中,均是不合法的转义符的选项是( B )。A) B) 1011 C) 011 D) abc f 101 xf A x1f4.下面不正确的字符串常量是( A )。A)a
2、bc B)1212 C)0 D) 5.以下选项中不合法的用户标识符是( A )。 A)abc.c B)file C)Main D)PRINT6.C语言提供的合法关键字是( D )。A) swith B) cher C) Case D) Default7.下列标识符组中,合法的用户标识符为 AA)_0123与ssiped B)del-word与signedC)list与*jer D) keep%与wind8.在C语言中,逻辑值真的表示是用( C )。A) true B) 整型值0 C)非另整型值 D) T9若有以下定义char s=092;则该语句( B )A)使s的值包含一个字符 B)定义不合
3、法,s的值不确定 C)使s的值包含4个字符 D)使s的值包含3个字符10设C语言中,int类型数据占2个字节,则float类型数据占( D )个字节。A)1 B)2 C)8 D)411已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2=A+6-3后,c2中的值为( A )。A)D B)68 C)不确定的值 D)C12逻辑运算符两侧运算对象的数据类型是 ( D )。A) 只是0或1 B) 只能是0或非0正数 C) 只能是整型或字符型数据 D) 可以是任何合法的类型数据13TURBO C中int类型变量所占字节数是( B )。 A)1 B)2 C)3 D)414在C语言中,ch
4、ar型数据在内存中的存储形式是( D )。A) 补码 B) 反码 C) 原码 D) ASCII码15若有以下定义,则能使值为3的表达式是( D )。int k=7, x=12;A)x%=(k%=5) B)x%=(k-k%5) C)x%=k-k%5 D)(x%=k)-(k%=5)16判断char型变量c1是否为小写字母的正确表达式为 ( D )。A) a=c1=A. &(c1=c1)|(z=a)&(c1bc 的值是【 0 】10设x,y,z均为int型变量,请写出描述x,y中有一个为负数的表达式【 x=0|y=0 】11若a=6,b=4,c=3,则表达式 a&b|b-c的值是【1 】12设x=3
5、,y=-4,z=5,则表达式!(xy)+(y!=z)|(x+y)&(y=z)的值是【 1 】基础二1下面四个选项中,均是非法常量的选项是( A )。A)as B) C)-0x18 D)0xabc -0fff 01 01177 0 0a 12,456 0xf a2下面四个选项中,均是不合法整型常量的选项是( D )。 A)-0f1 B)-0xcdf C) -018 D)-0x48eg -0xffff 017 999 -0680011 12,456 5e2 03f3下面正确的字符常量是( C )。A) c B) C) W D) 4以下每个选项都代表一个常量,其中正确的整型常量是( B )。A)1.
6、2 B)-20 C)1,000 D)4 5 65以下选项中不合法的用户标识符是( C )。 A)_123 B)Printf C)A$ D)Dim6在下列C语言程序中,可以用做变量名的是( B )。A) 1 B) a1 C) int D) *p7C语言提供的合法数据关键字是( A )。A) float B) Sagned C) Integer D) Char8以下符号中不能用作用户标识符的符号是( B )。A)_256 B)void C)scanf D)Struct9若k为int型变量,则以下语句( C )。k=8567;printf(|%-06d|n,k);A)输出格式描述不合法 B)输出为|
7、008567| C)输出为|8567| D)输出为|-08567|10sizeof(float)是( B )。A)一个双精度表达式 B)一个整型表达式 C)一种函数调用 D)一个不合法的表达式11在C语言中, int、char和short三种类型数据在内存中所占用的字节数( D )。A)由用户自己定义 B)均为2个字节 C)是任意的 D)由所用机器的机器字长决定12判断char型变量c1是否为小写字母的正确表达式为 ( D )。A) a=c1=A. &(c1=c1)|(z=a)&(c1=z)13以下叙述中正确的是( B )。Aa是实型变量,C语言允许进行以下赋值a=10,因此可以这样说:实型变
8、量中允许存放整型值B在赋值表达式中,赋值号右边即可以是变量也可以是任意表达式C执行表达式a=b后,在内存中a和b存储单元中的原有值都将被改变,a的值已由原值改变为b的值,b的值由原值变为0D已有a=3,b=5当执行了表达式a=b,b=a之后,已使a中的值为5,b中的值为314表达式18/4*sqrt (4.0)/8值的数据类型为( C )。A)int B)float C)double D)不确定15下列运算符中,不属于关系运算符的是( C )。A) = C) ! D) ! =16若希望当A的值为奇数时,表达式的值为真,A的值为偶数时,表达式的值为假,则以下不能满足要求的表达式是 ( C )。A
9、) A%2= =1 B) !(A%2= =0) C) !(A%2) D) A%217已知各变量的类型说明如下:int i=8,k,a,b;unsigned long w=5;double x=1.42,y=5.2;则以下符合C语言语法的表达式是( A )。A)a+=a-=(b=4)*(a=3) B)a=a*3=2 C)x%(-3) D)y=float(i)18 若变量已正确定义并赋值,下面符合C语言语法的表达式是( B )。 A)a=a+7; B)a=7+b+c,a+ C)int 12.3%4 D)a=a+7=a+b19逗号表达式(a=3*5,a*4),a+15的值为( C )。A)15 B)
10、60 C)30 D)不确定20设Int n=3;则n+的结果是( B )。A)2 B)3 C)4 D)51用小数或指数形式输入实数时,在scanf函数语句里格式字符为( BCD )。A)i B)f C)e D)g2可以使用( CD )输入字符型数据。A)putchar(c); B)getchar(c); C)getchar();D)scanf(%c,&c);1C语言中数据有常量与变量之分。2一般一个字符变量在内存中占一个字节。3C语言规定,可以在定义变量时,同时使变量初始化。4把k1、k2定义成基本整型变量,并赋初值0的定义语句是int k1=k2=0; 。错5如果i的原值为3,则:j = +
11、 i,j的值为3。 错6凡是表达式都有一个值。7输入语句的格式为:scanf(%d,%d,%d,a,b,c);是正确的。 错8在scanf(%d,%*d,%d,&a,&b)函数中,当输入为1,2,3时,将1赋给a,将2赋给b。 错9getchar函数的功能是接收从键盘输入的一个整数。 错10假定变量a,b,c在说明时已赋初值,则 if (a=b;)0) c=a;是正确的。 错1112printf函数是一个标准库函数,它的函数原型在头文件string.h中。 错13在printf函数中,格式字符d的意义是:以十进制形式输出带符号整数。14 在printf函数中,输出表列的各输出项之间可用冒号分隔
12、。 错15若int x=3; printf(%d,&x);则系统不会报错,会输出x的地址。16int a=0,b=1,c=2;则表达式a|b+c&b=c的值为01若有以下定义:char c=010;则变量C中包含的字符个数为( 1 )。2若有以下定义:int x=3,y=2;float a=2.5,b=3.5;则下面表达式的值为【 1 】。(x+y)%2+(int)a/(int)b3若a是int型变量、且a的初值为6,则执行下面表达式后,a的值为【 60 】。a+=a-=a*a4若x是int型变量,则执行下面表达式后,x的值为【 4 】。x=a=4,6*25若a是int型变量,且a的初值为6,
13、则计算表达式后a的值为【 60 】。a+=a-=a*a 6scanf函数的地址表列中给出各变量的地址,地址是由【 地址运算符& 】后跟变量名组成的。7使用getchar函数接收字符,若输入多于一个字符时,只接收第【 一 】个字符。8 C语言的格式输出函数是【 printf() 】。9当a=5,b=4,c=2时,表达式ab!=c 的值是【 1 】10已知A=7.5,B=2,C=3.6,表达式AB&CA | AB的值是【 0 】11若a=3,b=2,c=1,则表达式a-b5) printf(%dn,m);else printf(%dn,m-);A)7 B)6 C)5 D)42以下程序的输出结果为(
14、 ) # include main ( ) int i=0, j=0, a=6; if (+i0)&(+j0) a+; printf (i=%d, j=%d, a=%dn, i,j,a); A) i=0, j=0, a=6 B) i=1, j=1, a=7 C) i=1, j=0, a=7 D) i=0, j=1, a=73有如下程序main() int a=2,b=-1,c=2; if(ab) if(b12 ? x+10:x-12; printf(%dn, y);A) 0 B) 22 C) 12 D) 106以下程序的输出结果是( )main() int i=0, j=0, k=6; if
15、(+i0)|(+j0) k+; printf(%d, %d, %dn, i, j, k);A) 0, 0, 6 B) 1, 0, 7 C) 1, 1, 7 D) 0, 1, 77若变量都已正确说明,则以下程序段输出为( ) int a=1,b=2,c=3; if(ab) a=b; b=c; c=a; printf(a=%d b=%d c=%dn,a,b,c);A)a=1 b=2 c=1 B)a=1 b=2 c=3 C)a=1 b=3 c=1 D)a=2 b=3 c=28当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是( )if(ab)if(cd)x=1;else if(ac)
16、if(by);B)if(x=y)&(x!=0)x+=y;C)if(x!=y)scanf(%d,&x);else scanf(%d,&y);D)if(xy)x+;y+;10有以下程序: #includestdio.h main( ) char i; for (; (i=getchar ()!=n;) switch (i-a) case 0: putchar (i); case 1: putchar (i+1);break; case 2: putchar (i+2); case 3: break; default: putchar (i);break; printf (n); 输入下列数据后,程
17、序的输出结果是( ) abcde A) abcde B) abcee C) abbde D) abccdd11若a、 b、c1、c2、x、y、均是整型变量,正确的switch语句是( )A) switch(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 1 :y=a-b; break case 2: x=a*d; break case c1:case
18、4:x=a+b;break; default:x=a+b; case c2:case 11:y=a-b;break; default:y=a*b;break; 12写出下面程序输出结果( ) int x=1, y=0, a=0, b=0; switch(x) case 1: switch(y) case 0: a+; case 1: b+; 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=213C语言的for语句中的表达式可以部分或全部省略,但两个( )不可省略。但
19、当三个表达式均省略后,因缺少判断条件,循环会无限制地进行下去,形成死循环。A) B) +C) ;D) ,14下面有关for循环的正确描述是( )。A) for循环只能用于循环次数已经确定的情况B) for循环是先执行循环体语句,后判定表达式C) 在for循环中,不能用break语句跳出循环体D) for循环体语句中,可以包含多条语句,但要用花括号括起来15以下程序段( )。x=-1;do x=x*x;while(!x)A) 是死循环 B) 循环执行2次 C) 循环执行一次 D) 有语法错误16如下的数组中,数组array占用的内存空间是( )个字节。 char array=c,h,i,n,a;
20、 A. 1 B. 5 C. 6 D. 不确定 17设有程序段int k=10;while(k=0) k=k-1;则下面描述正确的是( )。A) while 循环执行10次B) 循环是无限循环C) 循环体语句一次也不执行D) 循环体语句执行一次18下列程序段的运行结果是( ) int n=0; while(n+3); printf(%d,n) A. 2 B. 3 C. 4 D. 以上都不对19设有程序段t=0;while(printf(*); t+; if (t3) break; 下面描述正确的是( )。A) 其中循环控制表达式与0等价B) 其中循环控制表达式与0等价C) 其中循环控制表达式是不
21、合法的D) 以上说法都不对20下面程序的运行结果是( )。#include main() int y=10; do y-; while(-y); printf(%dn,y-);A) -1 B) 1 C) 8 D) 0 21以下程序段的输出结果是( ). main() int i=5; for ( ;i+y;x=i+) i=x;B) for( ; ;x+=i);C) while(1)x+;D) for(i=10; ; i-) sum+=i;23有如下语句 int x=3; do printf(%dn,x-=2); while(!(-x); 则上面程序段( ) A. 输出的是1 B. 输出的是1和
22、-2 C. 输出的是3和0 D. 是死循环24以下不是无限循环的是( ) A. for(y=0,x=1;x+y;x=i+) i=x; B. for( ; ;x+=i); C. while(1) x+; D. for(i=10; ;i-) s+=i;25以下正确的描述是( )。A) continue语句的作用是结束整个循环的执行B) 只能在循环体内和switch语句内使用break语句C) 在循环体内使用break语句或continue语句的作用相同D) 从多层循环嵌套中退出时,只能使用goto语句26以下程序输出结果为( ) #include stdio.h main() int i,b,k=
23、0; for(i=1;i=0) k+; printf(%d,%dn,k,b); A. 3,-1 B. 8,-1 C. 3,0 D. 8,-227以下程序段中循环体总的执行次数是( )int i,j;for(i=7;i;i-) for(j=0;j6;j+).A) 42B) 21C) 13D) 3628以下不正确的描述是( )A. break 语句不能用于循环语句和switch语句外的任何其他语句 B. 在switch语句中使用break语句或continue语句的作用相同C. 在循环语句中使用continue语句是为了结束本次循环,而不是终止整个循环的执行D. 在循环语句中使用break语句是为
24、了使流程跳出循环体,提前结束循环1else语句总是和靠它最近的if匹配。2switch语句中一定有default分支3case后只能跟常量,不能跟变量4break语句的作用就是结束本层循环。5do-while语句构成的循环不能用其它语句构成的循环来代替。6用do-while语句构成循环时,只要while后的表达式为0时就结束循环。7for(表达式1;表达式2;表达式3)中,表达式1和表达式3不能同时都是逗号表达式。8for循环中,如果表达式2为空,则该循环一定是死循环。9while循环的while()后没有分号,而do-while循环的while()后一定要有一个分号。10for(i=0,j=
25、10;i=j;i+,j-) k=i+j;执行完后,k的值为50。1若a、b均为int型变量,且a=100,则以下的for循环是死循环. for (b=100;a!=b;+a,b+) printf(-n);执行语句:for(i=1;i+4;+i);后;变量i的值是5。2以下程序的运行结果是【 】main()int x,y,z; x=1;y=2;z=3; x=y-0)s=a+b; if(a0) if(c0)w=a-b; else t=c; printf(%d,%d,%dn,s,w,t);5阅读下面程序:main() int s, t, a, b; scanf(%d%d,&a, &b); s=1;
26、t=1; if(a0) s=s+1; if(ab) t=s+t; else if (a=b) t=5; else t=2*s; printf(s=%d, t=%d, s, t);6为了使输出结果t=4, 输入量a和b应满足的条件是【 】7下面程序的功能是在输入的一批整数中求出最大者,输入0结束循环。#include main() int a,max=0; scanf(%d,&a) while(【】) if (maxa) max=a; scanf(%d,&a); printf(%d,max);8执行下面的程序段后,k值是【】。k=1; n=263;do k*=n%10; n/=10; while
27、(n);9等差数列的第一项a=2,公差d=3,下面程序的功能是在前n项和中,输出能被4整除的所有的和。请填空。#include main() int a,d,sum; a=2;d=3;sum=0; do sum+=a; a+=d; if (【】) printf(%dn,sum); while(sum200);10鸡兔共有30只,脚共有90个,下面程序段是计算鸡兔各有多少只,请填空。for(x=1;x=29;x+) y=30-x; if (【】) printf(%d,%dn,x,y);11写出下面程序的运算结果【】。 # include main ( ) int a=14, b=63; whil
28、e (a!=b) while (ab) a-=b; while (ab) b-=a; printf (%dn,a); 12下列程序的输出为【】。 #include main() int i,j,x=0; for(i=0;i3;i+) if(i%3=2) break; x+; for(j=0;j4;j+) if(j%2) break; x+; x+; printf(x=%dn,x); case 1:printf(*2*);break; case 2:printf(*3*);break; C语言(数组)一设有程序:main() int i,a11; printf(给数组赋值:n); for (i=
29、0;i=10;i+) scanf(%d,( ); . . printf(输出数组:n); for(i=0;i=10;i+) printf(%d,( ); 则在程序中的两个园括号中分别应填入:A) &ai和&ai B) ai和&aiC) &ai和ai D) ai和ai 设已定义:int a15; 则数组a占用的内存单元数是( ).A) 15B) 16C) 30D) 32 阅读程序:main() int a2=0,i,j,k=2; for(i=0;ik;i+)for(j=0;jk;j+) aj=ai+1; printf(%dn,ak);以上程序的输出结果是( ).A) 1B) 3C) 2D) 不确定的值阅读程序:f(int b,int n) int i,r=1; for(i=0;i=n;i+) r=r*bi; return r;main() int x,a=2,3,4,5,6,7,8,9; x=f(a,3);