《C语言全部考试系统题库含答案.docx》由会员分享,可在线阅读,更多相关《C语言全部考试系统题库含答案.docx(79页珍藏版)》请在课桌文档上搜索。
1、C语言考试系统题库第一聿C语言基础知识(C语言概述、算法、数据类型运算符表达式、位运算)一、判断题(正确的填A,错误的填B)R1.在C语言中,逗号运算符的优先级最低。(八)2 .在C语言可执行程序的开始执行点是程序中第一个函数。(B)3 .5chw是合法的变量名。(B)4 .C语言程序书写格式自由,一行内可以写几个语句,一个语句可以分写在多行上。(八)5 .当输入数据时,必须指明变量的地址,如SCaniT%F4f)(八)N6.表达式i+与+i在任何场合功能完全相同。(B)7.在赋值表达式中,赋值号左边的变量和右边的表达式之值的数据类型可以不相同。(八)R8.C语言程序中,语句以逗号结尾。(B)
2、9 .在C程序中,APH和aph代表不同的变量。(A)10 .a-=7等价于a=a-70(A)N11.Printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按原字符长从左向右全部输出。(A)12 .如果xy为真或ay)&(ab)就为真。(B)13 .C语言程序的变量必须先定义再使用。(A)14 .若a和b是同类型变量,在执行了赋值语句a=b;后b中的值将放入a中,b中的值将丢失。(B)15 .程序的执行总是从main函数开始,在程序的最后一个函数中结束。(B)16 .变量的三个属性是指变量的名字、变量的值和变量在内存中的地址。(八)17 .运算符优
3、先顺序:赋值运算符逻辑运算符关系运算符=y) AND (y=z)D) (x=y) & (y=z)C) 077D)01D s i zeofA)(x=y)&(y=z)C)(x=y=z)13 .不合法的八进制数是A)0B)02814、以下不能定义为用户标识符是AMainB_0C_int15.若x=5,y=4则y*=x+5;V的值为(A.40B.20CB.15D.3016、组成C语言程序的基本单位是()oA)过程?B)子程序C)函数?D)主程序和子程序17.下列哪个标识符是C语言合法的标识符()oA)a*bB)-XyZC)ba2D)5iN18若有定义:inta=7;floatx=2.5,y=4.7;则
4、表达式x+a%3*(int)(x+y)4的值是()A)2.75?B)3.5?C)2.5?D)019.设intm=1,n=2;则+m=n的结果是()A、0B、1C、2D、3N20.若变量已定义并赋值,下列符合C语法的表达式是:()A、a:=b+1B、a=b=c+2C、int18.5%3D、a=a+7=c+bR(3)在C程序中,设一表达式中包含有int,long,unsigned和char类型的变量和数据,则表达式最后的运算结果类型是()A.intB.charC.unsignedD.longR21.C语言中基本的数据类型包括oA)整型、实型、逻辑型B)整型、实型、字符型C)整型、字符型、逻辑型D)
5、整型、实型、逻辑型、字符型N22.若定义X和y为double类型,则表达式:x=2,y=x+52的值是A)4B)4.5C)4.0D)3.023 .在以下运算符中,优先级最高的运算符是A)?:B)+C)&D)+=24 .C语言中基本的数据类型不包括A)整型B)字符串型C)字符型D)实型25 .若定义intx=7,y=5,z;则表达式:z=x+52*y的值是A)7B)7.5C)17D)19.56.以下说法中正确的是()A、C语言程序总是从第一个定义的函数开始执行B、在C语言程序中,要调用的函数必须在main()函数中定义C、C语言程序总是从main()函数开始执行D、C语言程序中的main()函数
6、必须放在程序的开始部分(1)设inta=2,b;则执行b=a&1;语句后,b的结果是()A.OB.1C.2D.3N(2)逗号表达式(a=3*5,a*4),a+15的值是()A.15B.60C.30D.757 .若已经定义了一个字符型变量为a,下面哪个表达式的含义跟其余表达式不同:A)a!=0B)a!=0,C)aD)!a8 .在以下运算符中,优先级最高的运算符是A),B)C)&D)+=9 .在C语言中,逻辑值“真”用表示。A)trueB)大于0的数C)非0的整数D)非0的数10 .表达式是满足:当C的值为1、3、5三个数中任意一个时值为“真”,否则值为“假”的表达式A)(c=1)|(c=3)|(
7、c=5)B)(c!=1)&(c!=3)&(c!=5)C)(C=I)&(c=3)&(c=5)D)(c=1)11(c=3)11(c=5)1 .C语言中,int类型数据占2个字节,则IOng类型数据占()A、1个字节 B、2个字节C、3个字节 D、4个字节2 .下列字符串是合法的标识符的是()。A、_HJB、9_studentC、IongDLINE13 .下列说法中正确的是()oA、C程序书写时,不区分大小写字母B、C程序书写时,一行只能写一个语句C、C程序书写时,一个语句可分成几行书写D、C程序书写时每行必须有行号4 .在C语言中,要求参加运算的数必须是整数的运算符是()oA、/B、!C、%D、二
8、二5 .C语言中,逻辑“其”等价于()oA、大于零的数B、大于零的整数C、非零的数D、非零的整数6.假设在程序中a,b,c均被定义为整型,并且已赋大于1的值,则下列能正确表示代数式1/abc的表达式是()oAx1a*b*cC、1ab(float)c1 .下列合法的字符常量是(B、1(a*b*c)D、1.0abc )oD. 0,A、,084,B、,43,C、,ab,A、switch B、cher C、CaseD、 sturct2 .在C语言提供的合法的关键字是()3 .若已定义X和y为d。UbIe类型,则表达式:x=1,y=x+32的值是A、2B、1C、2.0D、2.5三、程序填空题1以下程序不
9、用第三个变量实现两个数对调的操作。#includ“stdio.hmain()inta,b;scanf(%d,%d,&a,&b);a=;(三个字符)b=;(三个字符)a=a-b;printf(%d,%d,a,b);2、选择程序的运行结果。main()intx=1,y=2,z,a,b,c,d;z=+x+y;printf(x=%dn,x);printf(y=%dn,y);*输出结果(三个字符)*/a=-1;b=-2;c=+a&b+;printf(b=%dn,b);/*输出结果(三个字符)*/3以下程序的结果为main()(unsignedinta=3,b=10;printf(w%dn,a1);/*输
10、出结果/printf(%dn,a2&b1);/*输出结果0*/14若x=3,y=z=4,则下列表达式的值是。(1)?(z=y=x)?1:0/*值为0*/(2)?z=y&y=x/*值为1*/5已知fIoatx=4.3,inty;执行语句y=(int)X后,X为int型(填写小写英文字母),且y=4(填写阿拉伯数字);6表达式c&d,的值为1(填写阿拉伯数字),c,&d|!(3+4)的值为1(填写阿拉伯数字)。7若X为int类型,则与逻辑表达式“x”等价的表达式是x!=0,与逻辑表达式“!x”等价的表达式是x=08表示“整数X的值大于5时逻辑值为“真”的表达式是x5,逻辑值为“假”的表达式是x=5
11、9已知字母A的ASCll码为十进制数65,且设Ch为字符型变量,则表达式Ch二A-4+9的值为F(一个字符常量);若定义:charc=72;则变量C中包含的字符个数为1(数字)。10、C语言所提供的基本数据类型的整型类型包括:短整型、整型、长整型。(按每种类型所占字节数,从小到大排列)第二章C语言程序结构(顺序程序设计、选择结构程序设计、循环控制)一、判断题(正确的填A,错误的填B)1. do-whiIe语句中的条件为非O时,就结束该循环。(B)2. 在SWitCh-CaSe语句中,不是每个CaSe后都要使用break语句。(A)3. Break语句只能用于循环结构中。(B?)48.未给变量赋
12、初值,只是运行结果不正确,不会有其他不良影响。(B)5、SWitCh语句中,可以不使用break语句;(八)6、for语句中,三个表达式都可以省略;(八)7 (7)在for循环中使用break语句的目的是使流程跳出循环体,终止当前循环(八)8 .COntinUe语句只能用于循环语句中。(八)9 .WhiIe语句中的条件为。时,就结束该循环。(八)10 .在循环体内使用break语句或continue语句的作用相同。(B)在C语言中,逻辑值“真”用表示。11 )112)大于0的数13)非0的整数14)非。的数在循环语句的循环体中,COntinUe语句的作用是()。15)立即终止整个循环16)17
13、)结束本次循环18)语句WhiIe(!e);中,条件!e等价于(19.e=020 . e!=0继续执行cont i nue语句之后的循环体 结束本次循环并跳出循环)21. e!=122. e=1设intc=5和inta;a=2+(c+=c+,c+8,+c),则a=23)1524)1425)1326)16若要表示if(a不等于0)这一关系式,则能正确表示这一关系的表达式为if()27)a028)!a29)a=030)a单项选择题Nk以下不是死循环的语句是0for(;xi);while(1)x+;for(i=10;i-)sum+-i;for(;(c=gtchar0)!=4n,;)printf(%c
14、,c);2.设有程序段int k = 10 ;while ( k - 0 ) k = k - 以下描述正确的是()0A.循环体语句一次也不执行。C. whi Ie循环语句执行十次。3.对下述程序,正确的判断是 ma i n () int a,b;scanf (%d, %d, &a, &b); if(ab)a-b; b=a;eIse a+; b+; pr i ntf (%d, %d, af b); )A.有语法错误不能通过编译C.若输入5, 4则输出4, 5R4. 以下程序 ma i n () (int i=010, j=10, k=0x10;pr i ntf (%d, %d, %dn, i,
15、j, k);有语法错误不能通过编译 输出结果是()A.8, 10, 16B.8, 10, 10R5.若变量已正确说明为int类型B.循环是无限循环。D.循环体语句执行一次。B.若榆入4, 5则输出5, 6D.若输入5, 4则输出5, 5C. 10, 10, 10 D. 10, 10, 16要给a,b,c输入数据,以下语句正确的是A)read(a,b,c);B)SCanf(%d%d%d”,a,b,c);C)scanf(ii%D%D%D,f,&a,%b,%c);D)scanf(d%d%dw,&a,&b,&c);R6.已知在ASCII字符集中,数字O的序号为48,下面程序的输出结果为main()ch
16、arx,y;x=,0;y=9,;pirntf(%d,%dnw,x,y);)A)因输出格式不合法,输出错误信息B)48,57D)48,5800,97.语句for(k=0;k=y=z,A) (y=z)C) (x=y=z)C) 01234D)没有输出结果应使用C语言表达式OB)(x=y)AND(y=z)D) (x=y)&(y=z)6.若变量已正确定义,语句if(ab)k=0;elsek=1;和.B、 k=ab;D、 ab)?1:0;C、k=a=b;9.以下程序的输出结果是.voidmain()inta=2,b=5;printf(a=%d,b=%d,a,b);)A)a=%2,b=%5B)a=2,b=5
17、C)a=%d,b=%dD)a=%d,b=%dN10.以下程序的输出结果是voidmain()intx=10,y=10;Printf(%d%dn”,x,y);)A)1010B)99C)910D)10911.若要表示if(a不等于0)这一关系式,则能正确表示这一关系的表达式为if()A)a0B)!aR12对于循环语句While(1);下面()C)a=O是正确的D)aA、死循环B、循环一次C、不进入循环体D、编译有错13.下面程序的输出是(假设int数据是2个字节)voidmain()inta=32768;printf(a=%dnw,a);)A)a=32768B)a=32767C)a=-32768D
18、)a=-114.表达式是满足:当C的值为1、3、5三个数中任意一个时值为“真”,否则值为“假”的表达式A)(c=1)|(c=3)|(c=5)B)(c!=1)&(c!=3)&(c!=5)C)(C=I)&(c=3)&(c=5)N15.以下程序段的输出结果是一intx=3;doprintf(%3d,-=2;)while(!(x);A)1D)(c=1)11(c=3)11(c=5)B)30C)1-2D)死循环16、数字字符0的ASCll值为48,若有以下程序main()(chara=,b=,2,;printf(%c,b+);printf(%dn,b-a);)程序运行后的输出结果是A3,2B50,2C2,
19、2D2,5017、有以下程序main()Iinta,b,d=25;a=d/10&(-1);b=a&(-1);printf(1,%d,%dn,a,b);程序运行后的输出结果是A6,1B2,1C6,0D2,018 .若定义floata;现要从键盘输入a的数据,其整数位为3位,小数位为2位,则选用()oB) scanf (%5. 2f,a);D) scanf (,%f, a);A)scant(n%f,a);?C)scanf(,%6.2f,&a);?19 .若定义inti;则以下循环语句的循环执行次数是()ofor(i=2;i=0;)printf(d,i);A)无限次B)O次C)I次D)2次20 .下
20、面程序段x=3;doy=-;if(!y)(printf(x);continue;printf(#);whi le(1=x=2);A) 将输出#C)是死循环将输出#*D)含有不合法的控制表达式21 .以下程序中,WhiIe循环的循环次数是()。#includestdio.h”main()inti=0;while(i10)if(i5)printf(,%d,x);eIseprintf(,%dnzr,-1);A.7和5B.6和3C7和4D.6和4(6)语句WhiIe(!e);中,条件!e等价于()A.e=0B.e!=0C.e!=1D.e0R25下面程序的输出是main()(intk=11;printf
21、(k-%d,k-%o,k=%xn,k,k,k);)A)k=11,k=12,k=13B)k=11,k=13,k=13C)k=11,k=013,k=oXbD)k=11,k=13,k=b26(7)下面程序的运行结果是()main()inti=1,sum=0;Iop:SUiTFsum+i;i=i+2;if(i6)gotoIop;printf(,sum=%dn/,sum);)A.sum=4B.sum=9C.sum=1627.以下程序的输出结果是voidmain()inta=2,b=5;printf(“a二%d,b=%d”,a,b);)A)a=%2,b=%5B)a=2,b=5C)a=%d,b=%dD)a=
22、%d,b=%d28执行下面的程序后,a的值为main()inta,b;for(a=1,b=1;a=20)break;if(b%3=1)(b+=3;continue;b-=5;)A)7B)8C)9D)102930.下面的程序会()mainOintx=3,y=0,z=0;if(x=y+z)Printf(*);elsePrintf(#”);)A、有语法错误不能通过编译C、可以通过编译,但不能通过连接,因而不能运行4.以下程序的输出结果是()main()intx=10,y=10,i;for(i=0;x8;y=+i)D. sum=25B、输出* * * *D、输出# # # #PrirTtf(%d%d,
23、x一,y);)A.10192B,9876C,10990D1010911 .下面程序的输出是main()(1 ntk=11;printf(k=%d,k=%o,k=%xn,k,k,k);)A)k=11,k=12,k=13B)k=11,k=13,k=13C)k=11,k=013,k=oXbD)k=11,k=13,k=2.两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是main()(intx;scanf(%d,&x);if(x+5)printf(%dH,x)eIseprintf(%dn,x);)A)7和5B)6和3C)7和4D)6和43.读程序#include”StdiO.hmain()i
24、nta;fIoatb,c;scanf(%2d%3f%4f,&a,&b,&c);printf(na=%d,b=%f,c=%fn,a,b,c);)A)a=98,b=765,c=4321B) a=1,b=432,c=8765C) a=98,b=765.000000,c=4321.000000D) a=98,b=765.0,c=4321.05.下面程序的输出是main()intx=3,y=6,a=0;while(x+!=(y-=1)(a+=1;if(yx)break;)printf(x-%d,y-%d,a-%dn,x,y,a);)A)x=4,y=4,a=1B)x=5,y=5,a=1C)x=5,y=4,
25、a=3D)x=5,y=4,a=16.7.8.8.三、程序填空题F1.以下程序可判断输入的一个整数是否能被3或7整除,若能整除,输出“yes”,否则输出“no”。请填空。include“stdio.h”voidmain()(intk;printf(Enteraintnumber:,);SCanf(“%d,);if()printf(yesn);eIseprintf(non);N2.下面程序的功能是计算1-3+5-7+?7-99+101的值。main()(?int?i,t=1,s=0;for(i=1;i=101;i+=2)?7t=;s=s+t;t=;printf(n%dn,s);)F3.下面程序的功
26、能是从键盘上输入若干学生的学习成绩,统计并输出最高成绩和最低成绩,当输入为负数时结束输入。main()!?fIoat?x,amax,amin;scanf(,%f,&x);amax-x;amin-x;while(=0)?if(xamax)7amax-x;?if(x)?amin=x;scanf(,%f,&x);1printf(namax=%fnamin=%fn”,ama,amin);)F4.下面程序的功能是计算100至1000之间有多少个数其各位数字之和是5o#includeStdiO.hvoidmain()(inti,s,k,count=0;for(i=100;i=1000;i+)(s=0;k=
27、i;while(k)(s=s+k10;k=;)if()count+;printf(%d”,CoUrTt);F5下列程序功能是求数组中主对角线元素之和,请补充完成main()inta33,i,j,s=O;for(i=0;i3;i+)for(j=0;j3;j+)scanf(,%d,);for(i=0;i3;i+)for(j=0;j3;j+)if()s+=aij;printf(s=%dn,s);)R6.下面程序的功能是:输入一个字符,如果它是一个大写字母,则把它变成小写字母,如果它是一个小写字母,则把它变成大写字母,其它字符不变,请将程序补充完整:main()(charch;scanf(c”,&ch
28、);if(ch=A,&ch三,Z,)ch=ch+32;elseif(三,a,&ch三,z,;printf(a%cff,ch);)R7.请将用户输入的x,y,Z三个整数按照从小到大的顺序排列main()(intx,y,z,t;scanf(%d,%d,%d,&x,&y,&z);if(y)t=y;y=x;x=t;if(z)t=z;z=x;x=t;if(z)t=y;y=z;z=t;printf(smaIItobig:%d,%d,%dn,x,y,z);)F8.以下程序从读入的整数数据中,统计大于零的整数个数和小于零的整数个数。用输入零来结束输入,程序中用i统计大于零的个数,用变量j统计小于零的整数。请填
29、空。voidmain()intn,i,j;i=0;j=0;Printf(EnterINTnumbers,withOtoendnw);scanf(“%d”,&n);while()if(n0)i=i+;if(n0)j=j+;;)printf(i=%4dj=%4dn,i,j);)F9.以下程序用“辗转相除法”来求出两个正整数的最大公约数。请填空。若两个数分别放在m和n中,求最大公约数的算法如下:)/ J* )/ )/ )/ 2 3 4 5 6 z z(x ( /X (1)将两数中最大的那个放在m中,小的放在n中。求出印被n除后的余数ro若余数为O则执行步骤(7);否则执行步骤(4)。把除数作为新的被
30、除数;把余数作为新的除教。求出新的余数ro重复步骤到。(7)输出n,n即为最大公约数。voidmain()(intr,m,n;printf(Enter叫n:);scant(%d%d,&m,&n;printf(m=%dn=dn99,m,n);if(mn)r=m;m=n;n=r;r三;whil(r!=0)m=n,n=r,r=m;printf(“)R10.以下程序可判断输入的一个字符是否为小写字母,如果是,则转换为对应的大写字母并输出;否则,就原样输出。请填空。#includeiistdio.h,voidmain()chark;printf(Enteracharacterhere:,);scanf(
31、a%cff,&k;if(三,a,&k=z,Printf(%cn”,k-32);eIseprintf(cn,k);)1.程序打印如下形式的图形* * * *main()for(inti=1;i=4;i+)for(inti=1;j=i;i+)Printf(“n”);)2.充下列程序,找出100200之间的全部素数#incIudmath,h”main()inm,k,i,n=O;for(m=101;m=200;m=n2)(k=sqrt(m);for(i=2;(6)ik)(printf(%d9m);n=n+1;if(n%10=0)printf(unf9);)printf(“n”);第三章数组(正确的填A
32、,错误的填B)一、判断题1 .字符串“girl”大于字符串“good”。(B)2 .C语言中有字符串变量,与字符数组等价。(B)R3.同一数组可以存储不同类型的值。(?B)N4.若有:inta;则a+1和a1的值以及类型都一样。(B)R5.字符,0,的值就是0。(八)6 .C语言中是用字符串变量来存放字符串。(B)7 .表达式SiZeof(abc)的值是4(B)AN8.同数组的名字一样,函数的名字也是一种指针。(八)9、C语言中在定义数组时,一个数组的数组元素的数据类型可以不相同;(B)10chara10;a10=9;上述语句编译不会出错;(八)BR11.数组元素的下标是从1开始标号的。(B)
33、N12.若a为一维数组名,则*(a+i)与ai等价。(八)13 .循环语句中的COntinile语句的作用是结束整个循环。(B)14 .字符串“That”小于字符串the。(A)15 .字符个数多的字符串比字符个数少的字符串大。(B)有以下语句:intb;charc10则正确的输入语句是16 )scanf(%d%s,&b,&c);17)scanf(d%s,&b,c);18) scanf(%d%s,b,c);19)scanf(%d%s,b,&c);已有定义:Chara=xyz,b=x,y,z,)以下叙述中正确的是20数组a和b的长度相同21a数组长度小于b数组长度22a数组长度大于b数组长度设有
34、数组定义:chararray=China;则数组array所占的存贮空间为个字节.234245256267若定义intX10;则TUrbOC编译系统为该数组分配个字节存储单元。27.1028.1129.2030.21单项选择题Rk对两个数组a和b进行如下初始化chara=nABCDEF;charb=(,A,B,C,D,E,F,;则以下叙述正确的是()A)a与b数组完全相同B)a与b长度相同?C)a和b中都存放字符串D)a数组比b数组长度长R2.若有说明:inta34;则对a数组元素的正确引用是()A.a24B.a1,3C.a1+10D.a(2)(1)R3.合法的数组定义是()A、inta=st
35、ring;B、inta5=0,1,2,3,4,5;C、vhsts=string;D、chara=0,1,2,3,4,5);4.以下正确的声明是()oA.inta14=1,2,3,4,5);B.floatx3=1,2,3);C.longb23=1,1,2,1,2,3;D.doubley3=0;5下列语句的执行结果是()ostaticcharStr10二china;printf(%d”,strIen(str);A.10B.6C.5D.0R6、以下能正确定义一维数组的选项是B char a = 0,1,2, 3,4, 5);D int a5=0123;Ainta5=0,1,2,3,4,5);Cchara=A,B,C;7.下面程序段的运行结果是()ochara7=abcdef;charb4=,jABC”;strcpy(a,b);printf(a%cff,a5);A.空格B.08定义如下变量和数组,则输出结果是()