1、华中科技大学 C 语言期末考试题库试题及答案汇总1 设 int a=12 ,则执行完语句 a+=a-=a*a 后,a 的值是 _D_ 。A、552 B 、264 C 、144 D 、-264知识点:算术表达式2 以下变量 x、y、z 均为 double 类型且已正确赋值,不能正确表示数字式子 x/(y*z) 的C 语言表达式是 _A_ 。A、x/y*z B 、x*(1/(y*z)C 、x/y*1/z D 、x/y/z知识点:算术表达式3 若有定义: int a=8,b=5,c;, 执行语句 c=a/b+0.4; 后,c 的值是 _B_ 。A、1.4 B 、1 C 、2.0 D 、2知识点:算术
2、表达式4 有如下程序main()int a; char c=10;float f=100.0; double x;a=f/=c*=(x=6.5);printf(%d %d %3.1f%3.1fn,a,c,f,x);程序运行后输出结果是 _B_ 。A、1 65 1 6.5B 、1 65 1.5 6.5C 、1 65 1.0 6.5D 、2 65 1.5 6.5知识点:赋值表达式5 若变量 a、i 已正确定义,且 i 已正确赋值,合法的语句是 _B_ 。A、a=1 B 、+i; C 、a=a+=5; D 、a=int(i);知识点:赋值表达式6 若变量已正确定义并赋值,下面符合 C 语言语法的表达
3、式是 _B_ 。A、a:=b+1 B 、a=b=c+2C 、int 18.5%3 D 、a=a+7=c+b知识点:赋值表达式7 设变量 x 为 float 型且已赋值,则以下语句中能将 x 中的数值保留到小数点后两位,并将第三位四舍五入的是 _C_ 。A、x=x*100+0.5/100.0B 、x=(x*100+0.5)/100.0C、x=(int)(x*100+0.5)/100.0 ? D、x=(x/100+0.5)*100.0知识点:赋值表达式8 在一个 C 程序中 _B_ 。A、main 函数必须出现在所有函数之前 B、main 函数可以在任何地方出现C、main 函数必须出现在所有函数
4、之后 D、main 函数必须出现在固定位置知识点:简单 C 语言程序的构成和格式9 以下说法中正确的是 _D_ 。A、#define 和 printf 都是 C 语句 B、#define 是 C 语句,而 printf 不是C、printf 是 C 语句,但 #define 不是 D、#define 和 printf 都不是 C 语句知识点:简单 C 语言程序的构成和格式10 若 k 是 int 型变量,且有下面的程序片段k=-3if(k0); D 、if(b=0) m=1;n=2; ?知识点:简单 C 语言程序的构成和格式12 有以下程序main()int a=0,b=0;a=10; /*
5、给 a 赋值 */b=20; /* 给 b 赋值 */printf(a+b=%dn,a+b);程序运行后的输出结果是 _B_ 。A、a+b=10 B 、a+b=30 C 、30 D 、出错知识点:简单 C 语言程序的构成和格式13 以下选项中,不能作为合法常量的是 _B_ 。A、1.234e04 B 、1.234e0.4C 、1.234e+4 D 、1.234e0知识点:实型数据14 以下符合 C 语言语法的实型常量是 _C_ 。A、1.2E0.5 B 、3.14159E C 、.5E-3 D 、E15知识点:实型数据15 表达式 3.6-5/2+1.2+5%2 的值是 _D_ 。A、4.3
6、B 、4.8 C 、3.3 D 、3.8知识点:算术表达式16 下列定义变量的语句中错误的是 _D_ 。A、int _int B 、double int_C 、char For D 、float US$知识点:常量、变量和标识符17 以下不合法的用户标识符是 _C_ 。A、j2_KEY B 、DoubleC 、4d D 、_8_知识点:常量、变量和标识符18 以下 4 组用户定义标识符中,全部合法的一组是 _A_ 。A、_main enclude sinB 、If -max turboC、txt REAL 3COMD 、int k_2 _001 ?知识点:常量、变量和标识符19 以下定义语句中
7、正确的是 _C_ 。A、char a=A b=B;B 、float a=b=10.0;( 正解 a=10.0 b=10.0)C、int a=10,*b=&a;D 、float *a,b=&a; ?知识点:常量、变量和标识符20 以下不能定义为用户标识符的是 _D_ 。A、scanf B 、VoidC 、_3com_ D 、int知识点:常量、变量和标识符21 以下有 4 组用户标识符,其中合法的一组是 _C_ 。A、For -sub CaseB 、4d DO SizeC 、f2_G3 IF abcD 、WORD Void define知识点:常量、变量和标识符22 C 语言中最简单的数据类型包
8、括 _B_ 。A、整型、实型、逻辑型 B、整型、实型、字符型C、整型、字符型、逻辑型 D、整型、实型、逻辑型、字符型知识点:常量、变量和标识符23 下列选项中,合法的 C 语言关键字是 _D_ 。A、VAR B 、cher C 、integer D 、default知识点:常量、变量和标识符24 以下不能定义为用户标识符的是 _D_ 。A、MainB 、_0 C 、_int D 、sizeof知识点:常量、变量和标识符25 下列叙述中正确的是 _D_ 。A、C 语言中既有逻辑类型也有集合类型 B、C 语言中没有逻辑类型但有集合类型C、C 语言中有逻辑类型但没有集合类型 D 、C 语言中既没有逻
9、辑类型也没有集合类型知识点:常量、变量和标识符26 当 c 的值不为 0 时,在下列选项中能正确将 c 的值赋给变量 a 、b 的是 _C_ 。A、c=b=a; B 、(a=c) (b=c);C 、(a=c)&(b=c); D 、a=c=b;知识点:赋值表达式27 以下选项中非法的表达式是 _D_ 。A、0=x100 B 、i=j=0 C 、(char)(65+3) D 、x+1=x+1知识点:赋值表达式28 以下程序的输出结果是 _B_ 。#include 7main()int a,b,d=241;a=d/100%9;b=(-1)&(-1);printf(%d,%dn,a,b); ?A、6,
10、1 B 、2,1 C 、6,0 D 、2,0知识点:赋值表达式29 以下循环体的执行次数是 _C_ 。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答案: C知识点:赋值表达式30 有以下定义语句double a,b; int w; long c;若各变量已正确赋值,则下列选项中正确的表达式是 _C_ 。A、a=a+b=b+B 、w%(int)a+b)C 、(c+w)%(int)aD 、w=a=b;知识点:赋值表达式31 设 int a=12 ,则执行完语句 a+=a-=a*a 后,a 的
11、值是 _D_ 。A、552 B 、264 C 、144 D 、-264知识点:算术表达式32 以下变量 x、y、z 均为 double 类型且已正确赋值,不能正确表示数字式子 x/(y*z)的 C 语言表达式是 _A_ 。A、x/y*z B 、x*(1/(y*z)C 、x/y*1/z D 、x/y/z知识点:算术表达式33 若有定义: int a=8,b=5,c;, 执行语句 c=a/b+0.4; 后,c 的值是 _B_ 。A、1.4 B 、1 C 、2.0 D 、2知识点:算术表达式34 设有定义: float a=2,b=4,h=3;, 以下 C 语言表达式与代数式 1/2(a+b)h)
12、计算结果不相符的是 _B_ 。A、(a+b)*h/2 B 、(1/2)*(a+b)*hC 、(a+b)*h*1/2 D 、h/2*(a+b)知识点:算术表达式35 假定 x 和 y 为 double 型,表达式 x=2,y=x+3/2 的值是 _D_ 。A、3.500000 B 、3 C 、2.000000 D 、3.000000知识点:算术表达式36 若已定义 x 和 y 为 double 类型,则表达式 x=1,y=x+3/2 的值是 _C_ 。A、1 B 、2 C 、2.000000 D 、2.500000知识点:算术表达式37 若有以下程序段int c1=1,c2=2,c3;c3=1.
13、0/c2*c1;则执行后, c3 中的值是 _A_ 。A、0 B 、0.5 C 、1 D 、2知识点:算术表达式38 设有 int x=11; 则表达式( x+ * 1/3 )的值是 _A_ 。?A、3 B 、4 C 、11 D 、12知识点:算术表达式39 下列程序的输出结果是 _C_ 。main()double d=3.2; int x,y;x=1.2;y=(x+3.8)/5.0;printf(%d n,d*y);A、3 B 、3.2 C 、0 D 、3.07知识点:算术表达式40 请读程序片段:int i=65536;printf(%dn,i);上面程序片段的输出结果是 _B_ 。A、6
14、5536 B 、0C 、有语法错误,无输出结果 D、-1知识点:整型数据41 若有以下定义和语句 :int u=010,v=0x10,w=10;printf(%d,%d,%dn,u,v,w);则输出结果是 : _A_ 。A、8,16,10 B 、10,10,10C 、8,8,10 D 、8,10,10知识点:整型数据42 在 C 语言中,不正确的 int 类型的常数是 _A_ 。A、32768 B 、0 C 、037 D 、0xAF知识点:整型数据43 以下程序的输出结果是 _D_ 。main( )int k=17;printf(%d,%o,%x n,k,k,k);A、17,021,0x11
15、B 、17,17,17C 、17,0x11,021 D 、17,21,11知识点:整型数据44 下面程序的输出是 _C_ 。main()unsigned a=32768;printf(a=%dn,a);A、a=32768 B 、a=32767C 、a=-32768D 、a=-1知识点:整型数据45 在 C 语言中,合法的长整型常数是 _A_ 。A、0L B 、4962710C 、324562& D 、216D知识点:整型数据46 C 语言中运算对象必须是整型的运算符是 _A_ 。A、%= B 、/ C 、= D 、5) printf(%dn,x);else printf(%dn,x-);则输出
16、是 _B_ 。A、7 B 、6 C 、5 D 、 4知识点:自加、自减运算符和逗号运算符50 有以下程序main ()char a1=M, a2=m;printf(%cn, (a1,a2);以下叙述中正确的是 _B_ 。A、程序输出大写字母 MB、程序输出小写字母 mC、格式说明符不足,编译出错 D、程序运行时产生出错信息知识点:自加、自减运算符和逗号运算符51 以下程序的输出结果是 _B_ 。main()int a;printf(%dn,(a=3*5,a*4,a+5);A、65 B 、20 C 、15 D 、10知识点:自加、自减运算符和逗号运算符53 设有如下程序段int x=2002,y
17、=2003;printf(%dn,(x,y);则以下叙述中正确的是 _D_ 。A、输出语句中格式说明符的个数少于输出项的个数,不能正确输出B、运行时产生错误信息C、输出值为 2002D、输出值为 2003知识点:自加、自减运算符和逗号运算符54 有以下程序main()int x,y,z;x=y=1;z=x+,y+,+y;printf(%d,%d,%dn,x,y,z);程序运行后的输出结果是 _C_ 。A、2,3,3 B 、2,3,2 C 、2,3,1 D 、2,2,1知识点:自加、自减运算符和逗号运算符55 设有以下定义int a=0;double b=1.25;char c=A;#defin
18、e d 2则下面语句中错误的是 _D_ 。A、a+; B 、b+; C 、c+; D 、d+;知识点:自加、自减运算符和逗号运算符56 以下程序的输出结果是 _D_ 。main()int x=10,y=10;printf(%d %dn,x-,-y);A、10 10 B 、99 C 、9 10 D 、10 9知识点:自加、自减运算符和逗号运算符57 若 x 和 y 都是 int 型变量, x=100 、y=200 ,且有下面的程序片段printf(%d,(x,y);上面程序片段的输出结果是 _A_ 。A、200 B 、100 C 、100 200D 、输则格式符不够 , 输出不确定的值知识点:自
19、加、自减运算符和逗号运算符58 设有如下定义 :int x=10,y=3,z;则语句printf(%dn,z=(x%y,x/y);的输出结果是 _D_ 。A、1 B 、0 C 、4 D 、 3知识点:自加、自减运算符和逗号运算符59 两次运行下面的程序 ,如果从键盘上分别输入 6 和 4, 则输出结果是 _A_ 。main( )int x;scanf(%d,&x);if(x+ 5)printf(%d,x);elseprintf(%dn,x-);A、7 和 5 B 、6 和 3 C 、7 和 D 、6 和 4知识点:自加、自减运算符和逗号运算符60 若 t 为 double 类型,表达式 t=1
20、,t+5,t+ 的值是 _D_ 。A、1 B 、6.0 C 、2.0 D 、1.0知识点:自加、自减运算符和逗号运算符61 以下程序的输出结果是 _A_ 。#includemain()int i=10,j=10;printf(%d,%dn,+i,j-);A、11,10 B 、9,10 C 、010,9 D 、10,9知识点:自加、自减运算符和逗号运算符62 有以下程序main()int y=10;while(y-);printf(y=%dn,y);程序执行后的输出结果是 _B_ 。A、y=0 B 、y=-1 C 、y=1D 、while 构成无限循环知识点:自加、自减运算符和逗号运算符63 以
21、下叙述中正确的是 _B_ 。A、全局变量的作用域一定比局部变量的作用域范围大B、静态 (static) 类别变量的生存期贯穿于整个程序的运行期间C、函数的形参都属于全局变量D、未在定义语句中赋初值的 auto 变量和 static 变量的初值都是随机值知识点:局部变量及其作用域和生存期64 下面程序的输出是 _C_ 。fun3(int x)static int a=3;a+=x;return(a);main()int k=2, m=1, n;n=fun3(k);n=fun3(m);printf(%dn,n);A、3 B 、4 C 、6 D 、 9知识点:局部变量及其作用域和生存期65 以下叙述
22、中正确的是 _A_ 。A、局部变量说明为 static 存储类,其生存期将得到延长B、全局变量说明为 static 存储类,其作用域将被扩大C、任何存储类的变量在未赋初值时,其值都是不确定的D、形参可以使用的存储类说明符与局部变量完全相同知识点:局部变量及其作用域和生存期66 有以下程序int fun(int x,int n)static int sum=0,i;for(i=0;in;i+) sum+=xi;return sum;main()int a=1,2,3,4,5,b=6,7,8,9,s=0;s=fun(a,5)+fun(b,4);printf(%dn,s);程序执行后的输出结果是 _
23、C_ 。A、45 B 、50 C 、60 D 、55知识点:局部变量及其作用域和生存期67 以下程序执行后 sum 的值是 _C_ 。main()int i,sum;for(i=1;iy) f(x,y);else if(yz) f(y,z);else f(x,z);printf(%d,%d,%dn,x,y,z);执行后输出结果是 _C_ 。A、1,2,3 B 、3,1,2 C 、1,3,2 D 、2,3,1知识点:调用函数和被调用函数之间的数据传递74 有以下程序void f(int x,int y)int t;if(x2) return(fib(n-1)+fib(n-2);else retu
24、rn(2);main() printf(%ldn,fib(3); 该程序的输出结果是 _B_ 。A、2 B 、4 C 、6 D 、 8知识点:函数的调用83 设函数 fun 的定义形式为void fun(char ch,float x) 则以下对函数 fun 的调用语句中,正确的是_D_ 。A、fun(abc,3.0); B 、t=fun(D,16.5);C 、fun (65,2.8);D 、fun(32,32);知识点:函数的调用84 有以下程序char fun(char x,char y)if(xy) return x;return y;main()int a=9,b=8,c=7;prin
25、tf(%cn,fun(fun(a,b),fun(b,c);程序的执行结果是_D_ 。A、函数调用出错B、 8 C 、9 D 、7知识点:函数的调用85 若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是_D_ 。A、函数调用可以作为独立的语句存在 B、函数调用可以作为一个函数的实参C、函数调用可以出现在表达式中 D、函数调用可以作为一个函数的形参知识点:函数的调用86 有如下函数调用语句func(rec1,rec2+rec3,(rec4,rec5);该函数调用语句中,含有的实参个数是 _A_ 。A、3 B 、4 C 、5 D 、有语法错知识点:函数的调用92 以下函数值的类型是 _A
26、_ 。fun(float x)float y;y=3*x-4;return y;A、int B 、不确定 C、void D 、float知识点:函数的定义和返回值93 在 C 语言中,形参的缺省存储类是 _A_ 。A、auto B 、register C 、static D 、extern知识点:函数的定义和返回值94 有以下程序int f(int a) return a%2; main()int s8=1,3,5,2,4,6,i,d=0;for(i=0;f(si);i+) d+=si;printf(%dn,d);程序运行后的输出结果是 _A_ 。A、9 B 、11 C 、19 D 、21知识
27、点:函数的定义和返回值95 在 C 语言中,函数的隐含存储类别是 _C_ 。A、auto B 、static C 、extern D 、无存储类别知识点:函数的定义和返回值97 若程序中定义了以下函数double myadd(double a,double b) return (a+b); 并将其放在调用语句之后, 则在调用之前应该对该函数进行说明, 以下选项中错误的说明是_A_ 。A、double myadd(double a,b);B 、double myadd(double,double);C、double myadd(double b,double a);D 、double myadd
28、(double x,double y);知识点:函数的定义和返回值98 若有以下程序#include void f(int n)main()void f(int n);f(5);void f(int n); printf(%dn,n); 则以下叙述不正确的是 _C_ 。A、若只在主函数中对函数 f 进行说明,则只能在主函数中正确调用函数 fB、若在主函数前对函数 f 进行说明,则在主函数和其它函数中都可以正确调用函数 fC、对于以上程序,编译时系统会出提示出错信息:提示对 f 函数重复说明D、函数 f 无返回值,所以可用 void 将其类型定义为无值型知识点:函数的说明99 下列叙述中正确的是
29、 _D_ 。A、C 语言编译时不检查语法 B、C 语言的子程序有过程和函数两种C、C 语言的函数可以嵌套定义 D 、C 语言所有函数都是外部函数知识点:库函数101 以下不能正确定义二维数组的选项是 _D_ 。A、int a22=1,2;B 、int a2=1,2,3,4;C、int a22=1,2,3;D 、int a2=1,2,3,4;知识点:二维数组的定义和二维数组元素的引用102 以下能正确定义二维数组的是 _B_ 。A、int a3;B 、int a3=2*3;C 、int a3=;D 、inta23=1,2,3,4;知识点:二维数组的定义和二维数组元素的引用103 以下程序的输出结
30、果是 _A_ 。main()int a33=1,2,3,4,5,6,i,j,s=0;for (i=1;i3;i+)for(j=0;j=i;j+) s+=aij;printf(%dn,s);A、18 B 、19 C 、20 D 、21知识点:二维数组的定义和二维数组元素的引用104 以下程序的输出结果是 _C_ 。main() int i,x33=1,2,3,4,5,6,7,8,9;for(i=0;i3;i+)printf(%d,xi2-i);A、1,5,9 B 、1,4,7 C 、3,5,7 D 、3.6.9知识点:二维数组的定义和二维数组元素的引用知识点:二维数组的定义和二维数组元素的引用1
31、06 以下数组定义中错误的是 _B_ 。A、int x3=0 ;B、int x23=1,2,3,4,5,6;C、int x3=1,2,3,4,5,6; D 、int x23=1,2,3,4,5,6;知识点:二维数组的定义和二维数组元素的引用107 以下数组定义中不正确的是 _D_ 。A、int a23;B 、int b3=0,1,2,3;C、int c100100=0;D 、int d3=1,2,1,2,3,1,2,3,4;知识点:二维数组的定义和二维数组元素的引用108 有以下程序main()int m3=1,4,7,2,5,8,3,6,9;int i,j,k=2;for(i=0;i3;i+
32、) printf(%d ,mki); 执行后输出结果是 _C_ 。A、4 5 6 B 、2 58 C 、3 6 9 D 、7 8 9知识点:二维数组的定义和二维数组元素的引用109 以下能正确定义数组并正确赋初值的语句是 _D_ 。A、int N=5,bNN;B 、int a12=1,3;C、int c2=1,2,3,4;D 、int d32=1,2,34;知识点:二维数组的定义和二维数组元素的引用111 以下程序的输出结果是 _A_ 。main()int a44=1,3,5,2,4,6,3,5,7;printf(%d%d%d%dn,a03,a12,a21,a30);A、0650 B 、147
33、0 C 、5430D 、输出值不定知识点:二维数组的定义和二维数组元素的引用112 定义如下变量和数组 :int i;int x33=1,2,3,4,5,6,7,8,9;则下面语句的输出结果是 _C_ 。for(i=0;i3;i+) printf(%d ,xi2-i);A、1 5 9 B 、1 47 C 、3 5 7 D 、3 6 9知识点:二维数组的定义和二维数组元素的引用113 有以下程序main()int x32=0,i;for(i=0;i3;i+) scanf(%d,xi);printf(%3d%3d%3dn,x00,x01,x10);若运行时输入: 2 4 6 ,则输出结果为 _B_
34、 。A、 2 0 0 B 、 2 0 4C 、 2 4 0 D 、 2 4 6知识点:二维数组的定义和二维数组元素的引用130 当调用函数时,实参是一个数组名,则向函数传送的是 _B_ 。A、数组的长度 B、数组的首地址 C、数组每一个元素的地址 D、数组每个元素中的值知识点:函数之间对一维数组和数组元素的引用132 有以下程序void sum(int a) a0=a-1+a1; main() int a10=1,2,3,4,5,6,7,8,9,10;sum (&a2);printf(%dn,a2);程序运行后输出结果是 _A_ 。A、6 B 、7 C 、5 D 、 8知识点:函数之间对一维数组和数组元素的引用138 有以下程序main() char s=abcde;s+=2;printf(%dn,s0);执行后的结果是 _D_ 。A、输出字符 a 的 ASCII 码 B、输出字符 c 的 ASCII 码 C、输出字符 cD 、程序出错知识点:函数之间对一维数组和数组元素的引用139 请读程