1、计算机等级考试二级C语言超级经典400道题目1、C语言程序的基本单位是_c_ A) 程序行 B) 语句 C) 函数 D) 字符、C、12、C语言程序的三种基本结构是_a_ A、顺序结构,选择结构,循环结构 B、递归结构,循环结构,转移结构 C、嵌套结构,递归结构,顺序结构 D、循环结构,转移结构,顺序结构、A、13、C语言规定,程序中各函数之间 A) 既允许直接递归调用也允许间接递归调用 B) 不允许直接递归调用也不允许间接递归调用 C) 允许直接递归调用不允许间接递归调用 D) 不允许直接递归调用允许间接递归调用、A、14、C语言中可处理的文件类型是( b) A) 文本文件和数据文件 B)文
2、本文件和二进制文件 C) 数据文件和二进制文件 D)数据代码文件、B、15、C语言可执行程序的开始执行点是( c) A) 程序中第一条可执行语句 B) 程序中第一个函数 C) 程序中的main函数 D) 包含文件中的第一个函数、C、16、C语言提供的合法的数据类型关键字是 A)double B) short C) integer D) char、B、17、C语言中,运算对象必须是整型数的运算符是a A) % B) C) %和 D) * *、A、18、C语言中函数返回值的类型是由( d)决定。 A) return语句中的表达式类型 B) 调用函数的主调函数类型 C) 调用函数时临时 D) 定义函
3、数时所指定的函数类型、D、19、C语言中数组名作为参数传递给函数,作为实在参数的数组名被处理为_。 A、 该数组的长度。 B、该数组的元素个数。 C、 该数组中各元素的值。 D、 该数组的首地址。、D、110、C语言中数组下标的下限是_。 A、1 B、0 C、视具体情况 D、无固定下限、B、111、C语言中提供的合法关键字是_ A、swith B、cher C、case D、default、D、112、C语言中文件的存取方式是_c_。 A、顺序存取 B、随机存取 C、顺序存取、随机存取均可 D、顺序存取、随机存取均不可、C、113、C语言中最简单的数据类型包括 A) 整型、实型、逻辑型 B)
4、整型、实型、字符型 C) 整型、字符型、逻辑型 D) 整型、实型、逻辑型、字符型、B、114、sizeof(float)是(c ) A) 一种函数调用 B) 一个不合法的表示形式 C) 一个整型表达式 D) 一个浮点表达式、C、1b15、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);、B、116、表达式:10!=9的值是 A) true B) 非零值 C) 0 D) 1、D、11
5、7、表示关系x=y=z的c语言表达式为 A) (X=Y)&(Y=Z) B) (X=Y)AND(Y=Z) C) (X=Y=Z) D) (X=Y)&(Y=Z)、A、118、程序片段:在TC20中, int i=65536; printf(%dn,i);的输出结果是_ A) 65536 B) 0 C) 有语法错误,无输出结果 D) -1、B、119、当调用函数时,实参是一个数组名,则向函数传送的是_ A) 数组的长度 B) 数组的首地址 C) 数组每一个元素的地址 D) 数组每个元素中的值、B、120、对嵌套子程序调用说法正确的是_。 A、 外层子程序可以调用所有的内层子程序 B、 内层了程序只可以
6、调用包含本身的外层子程序,不可以隔层调用 C、 外分程序必须能完全套住内分程序 D、 以上说法均不正确、C、121、对于基类型相同的两个指针变量之间,不能进行的运算是 A) B) = C) + D) -、C、122、合法的C语言中,合法的长整型常数是 A) t B) A C) 65 D) A、A、123、假定int类型变量占用两个字节,其有定义:int x10=0,2,4;,则数组x在内存中所占字节数是 A) 3 B) 6 C) 10 D) 20、D、124、假定有以下变量定义: int k=7 ,x=12; 则能使值为3的表达式是 A x%=(k%=5) B x%=(k-k%5) C x%=
7、k-k%5 D (x%=k)-(k%=5)、D、125、请读程序片段(字符串内没有空格): printf(%dn,strlen(ATSn0121);的输出结果是 A) 11 B) 10 C) 9 D) 8 、C、126、请选出合法的C语言赋值语句 A) a=b=58 B) i+; C) a=58,b=58 D) k=int(a+b);、B、127、若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是 A) -3 B) 9 C) -12 D) 6、C、128、若int类型占两个字节,则以下语句输出为_。 int k=-1; printf(%d,u%n,k,k); A、-1,
8、-1 B、-1,65536 C、-1,32768 D、-1,65535、D、129、若变量a是int类型,并执行了语句:a=A+1、6;,则正确的叙述是 A) a的值是字符C B) a的值是浮点型 C) 不允许字符型和浮点型相加 D) a的值是字符A的ASCII值加上1。、D、130、若变量已正确说明为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、0 22 33 C) 10、0 D) 10 22 22、0 33、0 33、B、131、若要求在if后
9、一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为 A) a0 B) !a C) a=0 D) a、B、132、若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值是 A)1 B)2 C)2、0 D)2、5、C、133、若有定义:int a=8,b=5,c;,执行语句c=a/b+0、4;后,c的值为 A) 1、4 B) 1 C) 2、0 D) 2、B、134、若有定义:int x,y;char a,b,c;并有以下输入数据(此处 代表换行符,/u代表空格): 1u2 AuBuC 则能给x赋整数1,给y赋整数2,给a赋字符A,给b赋字符B,给c赋字符C 的正确程序
10、段是 A) scanf(x=%d y+%d,&x,&y);a=getchar();b=getchar();c=getchar(); B) scanf(%d %d,&x,&y);a=getchar();b=getchar();c=getchar(); C) scanf(%d%d%c%c%c,&x,&y,&a,&b,&c); D) scanf(%d%d%c%c%c%c%c%c:&x,&y,&a,&a,&b,&b,&c,&c);、D、135、若有定义和语句: char s10:s=abcd;printf(%sn,s); 则结果是(以下u代表空格) A) 输出abcd B) 输出a C) 输出abcd
11、uuuuu D) 编译不通过、D、136、若有以下程序段, int c1=1,c2=2,c3; c3=1、0/c2*c1; 则执行后,c3中的值是 A) 0 B) 0、5 C) 1 D) 2、A、137、若有以下定义: char a; int b; float c; double d; 则表达式a*b+d-c值的类型为 A) float B) int C) char D) double、D、1数据类型相运算38、若有以下定义和语句 char c1=b,c2=e; printf(%d,%cn,c2-c1,c2-a+A); 则输出结果是: A)2,M B)3,E C)2,E D)输出项与对应的格式
12、控制不一致,输出结果不确定、B、139、若有以下函数调用语句: fun(a+b,(x,y),fun(n+k,d,(a,b);在此函数调用语句中实参的个数是 A)3 B)4 C)5 D)6、A、1实参与形参41、若执行下面的程序时从键盘上输入5,则输出是 A) 7 B) 6 C) 5 D) 4 main() int x; scanf(%d,&x); if(x+5) printf(%dn,x); else printf(%dn,x-);、B、143、设 a、b、c、d、m、n均为 int型变量,且 a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式 (m=ab)&(n=cd)运算后,n的
13、值为_ A) 0 B) 1 C) 2 D) 3、C、144、设 int a=12,则执行完语句 a+=a-=a*a后,a的值是 A) 552 B) 264 C) 144 D) -264、D、1运算符的优先级45、设 int b=2;表达式(b2)/(b1)的值是 A) 0 B) 2 C) 4 D) 8、A、146、设a,b和c都是int型变量,且a=3,b=4,c=5,则下列表达式中,值为0的表达式是_ A)a&b B)a=b C)a|b+c&b-c D)!(aB)&!C|1)、D、1 47、设x、y、z和k都是int型变量,则执行表达式:x=(y=4,z=16,k=32)后,x的值为 A 4
14、 B 16 C 32 D 52、C、1理由48、设x=3,y=-4,z=6,写出表达式的结果。 !(xy)+(y!=z)|(x+y)&(y-z) A、0 B、1 C、-1 D、6、B、149、设x和y均为int 型变量,则以下语句:x+=y;y=x-y;y=x-y;x-=y;的功能是 A、把x 和y按从大到小排列 B、把x和y按从小到大排列 C、无确定结果 D、交换x和y中的值、D、150、设有 int x=11; 则表达式 (x+ * 1/3) 的值是 A) 3 B) 4 C) 11 D) 12、A、1运算符51、设有如下的变量定义: int i =8,k ,a,b ; unsigned l
15、ong w=5; double x=1,42,y=5、2; 则以下符合C语言语法的表达式是 A、 a+=a-=(b=4)*(a=3) B、 x%(-3); C、 a=a*3=2 D、 y=float(i)、A、152、设有如下定义: char *aa2=abcd,ABCD; 则以下就法中正确的是 A) aa数组成元素的值分别是abcd和ABCD B) aa是指针变量,它指向含有两个数组元素的字符型一维数组 C) aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址 D) aa数组的两个元素中各自存放了字符a和A的地址、D、153、设有如下定义: int x=10,y=3,z; 则语
16、句 printf(%dn,z=(x%y,x/y)代表什么); 的输出结果是 A) 1 B) 0 C) 4 D) 3、D、154、设有数组定义: char array =China; 则数组 array所占的空间为 A) 4个字节 B) 5个字节 C) 6个字节 D) 7个字节、C、155、设有说明语句:char a=72;则变量a A) 包含1个字符 B) 包含2个字符 C) 包含3个字符 D) 说明不合法、A、156、设有以下语句:int x=03,y=02,z=01;那么语句printf(%d,x|y&Z)的执行结果()。 (A) 1 (B) 2 (C) 3 (D) 0、C、157、下列i
17、f语句中,不正确的是_。 A、if(xy); B、if(x=y) x+=y; C、if(x!=y) scanf(%d,&x) else x=1; D、if(x、C、1为什么第一个和第三个58、下列变量定义中合法的是 A) short _a=1-、le-1; B) double b=1+5e2、5; C) long do=0xfdaL; D) float 2_and=1-e-3;、A、1定义59、下列标识符中不合法的是_ A、s_name B、_e C、fox D、3DS、D、160、下列不正确的转义字符是 A) B) C) 074 D) 0、C、161、请读程序: main() int a=1
18、,b=2; printf(%dn,a=a+1,a+6,b+2); 则上面程序的输出结果是_ A、2 B、3 C、4 D、1、A、1?62、请读程序: int i=0,j=0,a=6; if(+i0)|(+j0)a+; printf(i=%d,j=%d,a=d%n,i,j,a); 则上面程序的输出结果是_ A、i=0,j=0,a=6 B、i=1,j=0,a=7 C、i=1,j=1,a=6 D、i=1,j=1,a=7、B、163、下列程序段的输出结果为_? int y=1; while(y-); printf(y=%dn,y); A、y=-1B、y=0C、死循环D、y=9 、A、165、下列程序执
19、行后的输出结果是 A) G B) H C) i D) J main() int x=f; printf(%c n,A+(x-a+1); 、A、166、下列程序执行后的输出结果是(小数点后只写一位) A) 6 6 6、0 6、0 B) 6 6 6、7 6、7 C) 6 6 6、0 6、7 D) 6 6 6、7 6、0 main() double d; float f; ling l; int i; i=f=1=d=20/3; printf(%d %ld %f %f n, i,l,f,d); 、A、167、下列可作为C语言赋值语句的是 A)x=3,y=5 B)a=b=6 C)i-; D)y=int
20、(x);、C、168、下列描述中不正确的是 A) 字符型数组中可以存放字符串 B) 可以对字符型数组进行整体输入、输出 C) 可以对整型数组进行整体输入、输出 D) 不能在赋值语句中通过赋值运算符=对字符型数组进行整体赋值、C、169、下列说法中正确的是_。 A、在switch语句中一定要使用break语句 B、在switch语句中不一定要使用break语句 C、break语句是switch语句的一部分 D、break只能用于switch语句中、B、170、下列运算符其优先级最高的是_。 A、| B、& C、+ D、=、C、171、下面的DO循环中,一共循环()次。 M=5 N=1 DO WH
21、iLE N=M N=N+1 ENDDO (A) 1 (B) 6 (C) 4 (D) 5、D、172、请读程序: #include main() int a=1,b=4,c=2; float x=5、5,y=9、0,z; z=(a+b)/c+sqrt(double)y)*1、2/c+x; printf(%fn,z); 则上面程序的输出结果是_ A、数据溢出B、9、3C、9、300000D、0、93、C、173、请读程序: int a,b,c; a=(b=(c=10)+5)-5; printf(a,b,c=d%,d%,d%,a,b,c); c=a=0; b=(a+10); printf(a,b,c
22、=%d,d%,d%,a,b,c); 则上面程序的输出结果是_ A、a,b,c=0,10,10 a,b,c=10,15,10 B、a,b,c=10,15,10 a,b,c=10,15,10 C、a,b,c=10,15,10 a,b,c=0,10,0 D、a,b,c=10,15,10 a,b,c=10,15,15、C、174、写出下列语句执行后a,b的值。 int a=6,b; b=(+b)+(a+); A、a=8,b=14 B、a=7,b=8 C、a=14,b=14 D、a=8,b=8、A、175、请读程序: m=1234、123; printf=(%-8、3fn,m); printf=(%10
23、、3fn,m); 则上面程序的输出结果是_ A、1234、12300 1234、123 B、1234、123 1234、123 C、1234、123 1234、12300 D、1234、12300 1234、123、B、176、一个C语言的语句至少应包一个_ A、 B、逗号 C、分号 D、什么不要、C、177、一个完整的C源程序是_。 A、要由一个主函数(或)一个以上的非主函数构成 B、由一个且仅由一个主函数和零个以上(含零)的非主函数构成 C、要由一个主函数和一个以上的非主函数构成 D、由一个且只有一个主函数或多个非主函数构成、B、178、已知整型变量a=13和b=6,则a&b的值是_,ab
24、的值是_ A、4 13 B、4 11 C、1 11 D、4 13、B、179、以下for语句构成的循环执行了()次。 # include #define N i #define M N+1 # define NUM (M+1)*M/2 main( ) int i,n=0; for (i=1;i=num;i+) n+; printf(%d,n); (A) 5 (B) 6 (C) 8 (D) 9、C、180、以下程序的输出结果是_0_ # include main( ) printf(%dn,NULL); (A) 不确定的 (B) 0 (C) -1 (D) 1、B、181、在调用函数时,以下描述中
25、正确的是_。 A、调用函数时,实参可以是表达式 B、调用函数时,将为形参分配内存单元 C、调用函数时,实参与形参的原型不一定一致 D、调用函数时,实参与形参可以用内存单元、D、182、有以下程序段 int k=0 while(k=1)k+; while 循环执行的次数是 A) 无限次 B) 有语法错,不能执行 C) 一次也不执行 D) 执行1次、A、183、有以下函数 char fun(char *p) return p; 该函数的返回值是 A) 无确切的值 B) 形参p中存放的地址值 B) 一个临时存储单元的地址 D) 形参p自身的地址值、B、184、语句printf(%dn,12&012)
26、;的输出结果是_ A) 12 B) 8 C) 6 D) 012、B、185、语句:printf(%d,(a=2)&(b= -2);的输出结果是_ A) 无输出 B) 结果不确定 C) -1 D) 1、D、186、运算完下面的C语言程序段以后,a的值是_,b的值是_,c的值是_。 int x=10,y=9; int a,b,c; a=(-x=y+)?-x:+y; b=x+; c=y; A、6 9 13 B、8 7 11 C、8 9 10 D、8 7 10、C、187、在C语言程序中,注释部分从哪开始,到哪结束? A、从(到)结束 B、从REM开始无结束志标志 C、无起始标志 D、从/*开始,*/
27、结束、D、188、在C语言提供的合法的关键字是 A) swicth B) cher C) Case D) default、D、189、在C语言中,不正确的int类型的常数是_ A) 32768 B) 0 C) 037 D) 0xAF、A、190、在C语言程序中,当while语句构成的循环中的条件为_时,结束循环。 A、0 B、1 C、true D、非0、A、191、在C语言中,函数的隐含存储类别是 A) auto B) static C) extern D) 无存储类别、C、192、在C语言中,合法的长整型常数是 A) OL B) 4962710 C) 324562& D) 216D、A、19
28、3、在C语言中,合法的字符常量是 A) 084 B) x43 C) ab D) 0、B、194、在C语言中,若对函数类型未加明显式说明,则函数的隐含类型是_类型 A) void B) double C) int D) char、C、195、在C语言中,形参的缺省存储类是 A) auto B) register C) static D) extern、A、196、在C语言中,要求运算数必须是整型的运算符是 A) % B) / C) D) !、A、197、在宏定义 #define PI 3、14159中,用宏名PI代替一个 A) 单精度数 B) 双精度数 C) 常量 D) 字符串、D、198、在C
29、语言程序中,可以用做变量名的是_ A) 1e5 B) a1 C) int D) *p、B、199、在以下一组运算符中,优先级最高的运算符是 A)= B)= C)% D)&、C、1100、字符(char)型数据在微机内存中的存储形式是_ A) 反码 B) 补码 C) EBCDIC码 D) ASCII码、D、1102、指出下面正确的输入语句是( ) A:scanf(a=b=%d,&a,&b) B:scanf(a=%d,b=%f,&a,&b) C:scanf(%3c,c) D:scanf(%5、2f,&a)、B、2103、执行下面的程序后,a的值为 main() int a,b; for (a=1,
30、b=1;a=20) break; if(b%3=1) b+=3; continue; b-=5; A) 7 B) 8 C) 9 D) 10、B、2104、在执行以下程序时,如果从键盘上输入:ABCdef回车,则输出为 A)ABCdef B)abcdef C)abc D)DEF # include main() chsr ch; while(ch=getchar()!=n) if(ch=A& ch0?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; e
31、lse y=-1; else y=-1;、A、2119、以下合法的赋值语句是 A) x=y=100 B) d-; C) x+y; D) c=int(a+b);、B、2120、以下函数返回a所指数组中最小的值所在的下标值 fun(int *a, int n) int i,j=0,p; p=j; for(i=j;i、D、2121、以下函数值的类型是 fun ( float x ) float y; y= 3*x-4; return y; A) int B) 不确定 C) void D) float、A、2122、以下说法中正确的是 A) C语言程序总是从第一个的函数开始执行 B) 在C语言程序中,
32、要调用的函数必须在main()函数中定义 C) C语言程序总是从main()函数开始执行 D) C语言程序中的main()函数必须放在程序的开始部分、C、2123、以下所列的各函数首部中,正确的是 A) void play(var a:integer,var b:integer) B) void play(int a,b) C) void play(int a,int b) D) sub play(a as integer,b as integer)、C、2124、以下叙述正确的是 A)输入项可以是一个实型常量,如: scanf(%f、3、5); B)只有格式控制,没有输入项,也能正确输入数据
33、到内存,例如: scanf(a=%d,b=%d); C)当输入一个实型数据时,格式控制部分可以规定小数点后的位数,例如: scanf(%4、2f,&f); D)当输入数据时,必须指明变量地址,例如: scanf(%f、&f); 、C、2125、以下叙述正确的是 A) do-while语句构成的循环不能用其它语句构成的循环来代替。 B) do-while语句构成的循环只能用break语句退出。 C) 用do-while语句构成的循环,在while后的表达式为非零时结束循环。 D) 用do-while语句构成的循环,在while后的表达式为零时结束循环。、D、2126、以下叙述中不正确的是 A)
34、在C中,函数中的自动变量可以赋初值,每调用一次,赋一次初值。 B) 在C中,在调用函数时,实在参数和对应形参在类型上只需赋值兼容。 C) 在C中,外部变量的隐含类别是自动存储类别。 D) 在C中,函数形参可以说明为register变量。、C、2127、以下叙述中不正确的是_ A) 在不同的函数中可以使用相同名字的变量 B) 函数中的形式参数是局部变量 C) 在一个函数内定义的变量只在本函数范围内有效 D) 在一个函数内的复合语句中定义的变量在本函数范围内有效、D、2128、以下程序运行后,输出结果是 A)1000 B)10010 C)00110 D)10100 main () int y=18
35、,i=0,j,a8; do ai=y%2;i+; y=y/2; while(y=1); for(j=i-10;j-)printf(%d,aj); printf(hn); 、B、2129、以下程序运行后,如果从键盘上输入: book book 则输出结果是 A)*8 B)#9 C)#6 D)*9 #include main() char a180,a280,*s1=a1,*s2=a2; gets(s1); gets(s2); if(!strcmp(s1,s2) printf(“*”); else printf(“#”); printf(“%dn”,strlen(strcat(s1,s2) 、B、
36、2130、以下程序运行后,输出结果是 A)6385 B)22 C)33 D)693825 main() char ch25=693,825,*p2; int i,j,s=0; for (i=0;i=0 & pij=9;j+=2) s=10*s+pij-0; printf(%dn,s); 、A、2131、以下程序运行后,输出结果是 A)84 B)99 C)95 D)44 int d=1; fun (int p) int d=5; d+=p+; printf(%d,d); main() int a=3; fun(a); d+=a+; printf(%dn,d); 、A、2132、以下程序执行后a的
37、值是 A)4 B)1 C)0 D)运行时出错,a无定值 main() int a,k=4,m=6,*p1=&k,*p2=&m; a=p1=&m; printf(%dn,a); 、C、2133、以下程序执行后sum的值是 A)15 B)14 C) 不确定 D)0 min() int i , sum; for(i=1;i、C、2134、以下程序中,while循环的循环次数是 main() int i=0; while(i、D、2135、以下定义语句中,错误的是 A) int a=1,2; B) char *a3; C) char s10=test; D) int n=5,an;、D、2136、以下
38、对C语言函数的有关描述中,正确的是 A) 在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参 B) C函数既可以嵌套定义又可以递归调用 C) 函数必须有返回值,否则不能使用函数 D) C程序中有调用关系的所有函数必须放在同一个源程序文件中、A、2137、以下对枚举类型名的定义中正确的是_ A)enum a=one,two,three; B)enum a one=9,two=-1,three; C)enum a=one,two,three; D)enum a one,two,three;、B、2138、以下各选项企图说明一种新的类型名,其中正确的是 A) typedef v1
39、int; B) typedef v2=int; C) typedefv1 int v3; D) typedef v4: int;、C、2139、以下选项中,不能正确赋值的是 A) char s110;s1=Ctest; B) char s2=C, t, e, s, t; C) char s320=Ctest; D) char *s4=Ctestn、A、2140、以下选项中,非法的字符常量是 A) t B) 17 C)n D) xaa、C、2141、以下选项中不属于C语言的类型的是 A) signed short imt B) unsigned long int C) unsigned int D) long short、D、2142、以下选项中合法的字符常量是 A)B B) 010 C) 68 D) D、B、2143、以下循环体的执行次数是 A) 3 B) 2 C) 1 D) 0 main() int i,j; for(i=0,j=1; i=j+1; i+=2, j-)printf(%d n,i); 、C、2144、以下有4组用户标识符,其中合法的一组是 A) for B) 4d