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知识点:算术表达式4有如下程序main()int a; char c=10;floa
2、t 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.5 B、1 65 1.5 6.5 C、1 65 1.0 6.5 D、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语言语法的表达式是_B_。A、a:=b+1 B、a=b=c+2 C、int 18.5%3 D、a=a+7=c+b知识点
3、:赋值表达式7设变量x为float型且已赋值,则以下语句中能将x中的数值保留到小数点后两位,并将第三位四舍五入的是_C_。A、x=x*100+0.5/100.0 B、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函数必须出现在所有函数之后 D、main函数必须出现在固定位置知识点:简单C语言程序的构成和格式9以下说法中正确的是_D_。A、#define和printf都是C语句 B
4、、#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; /* 给a赋值 */b=20; /* 给b赋值 */printf(a+b=%dn,a+b);程序运行后的输出结果是_B_。A、a+b=10 B、a+b=30 C、30 D、出错知识点:简单C语言程序的构成和格式13以下选项中,不能
5、作为合法常量的是_B_。A、1.234e04 B、1.234e0.4 C、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 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、Doubl
6、e C、4d D、_8_知识点:常量、变量和标识符18以下4组用户定义标识符中,全部合法的一组是_A_。A、_main enclude sin B、If -max turboC、txt REAL 3COM D、int k_2 _001 ?知识点:常量、变量和标识符19以下定义语句中正确的是_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、Void C、_3com_ D、int知识点:
7、常量、变量和标识符21以下有4组用户标识符,其中合法的一组是_C_。A、For -sub Case B、4d DO Size C、f2_G3 IF abc D、WORD Void define知识点:常量、变量和标识符22C语言中最简单的数据类型包括_B_。A、整型、实型、逻辑型 B、整型、实型、字符型C、整型、字符型、逻辑型 D、整型、实型、逻辑型、字符型知识点:常量、变量和标识符23下列选项中,合法的C语言关键字是_D_。A、VAR B、cher C、integer D、default知识点:常量、变量和标识符24以下不能定义为用户标识符的是_D_。A、Main B、_0 C、_int D
8、、sizeof知识点:常量、变量和标识符25下列叙述中正确的是_D_。A、C语言中既有逻辑类型也有集合类型 B、C语言中没有逻辑类型但有集合类型C、C语言中有逻辑类型但没有集合类型 D、C语言中既没有逻辑类型也没有集合类型知识点:常量、变量和标识符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_。
9、#include 7main()int a,b,d=241;a=d/100%9;b=(-1)&(-1);printf(%d,%dn,a,b);?A、6,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)
10、%(int)a D、w=a=b;知识点:赋值表达式31设int a=12,则执行完语句a+=a-=a*a后,a的值是_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;,以
11、下C语言表达式与代数式 1/2(a+b)h) 计算结果不相符的是_B_。A、(a+b)*h/2 B、(1/2)*(a+b)*h C、(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.0/c2*c1;则执
12、行后,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、65536 B、0 C、有语法错误,无输出结果 D、-1知识点:整型数据4
13、1若有以下定义和语句:int u=010,v=0x10,w=10;printf(%d,%d,%dn,u,v,w);则输出结果是: _A_。A、8,16,10 B、10,10,10 C、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 B、17,17,17 C、17,0x11,021 D、17,21,11知识点:整型数据44下面程序的输出是_C_
14、。main()unsigned a=32768;printf(a=%dn,a);A、a=32768 B、a=32767C、a=-32768 D、a=-1知识点:整型数据45在C语言中,合法的长整型常数是_A_。A、0L B、4962710 C、324562& D、216D知识点:整型数据46C语言中运算对象必须是整型的运算符是_A_。A、%= B、/ C、= D、5) printf(%dn,x);else printf(%dn,x-);则输出是_B_。A、7 B、6 C、5 D、4知识点:自加、自减运算符和逗号运算符50有以下程序main ()char a1=M, a2=m;printf(%c
15、n, (a1,a2);以下叙述中正确的是_B_。A、程序输出大写字母M B、程序输出小写字母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=2003;printf(%dn,(x,y);则以下叙述中正确的是_D_。A、输出语句中格式说明符的个数少于输出项的个数,不能正确输出B、运行时产生错误信息C、输出值为2002D、输出值
16、为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;#define d 2则下面语句中错误的是_D_。A、a+; B、b+; C、c+; D、d+;知识点:自加、自减运算符和逗号运算符56以下程序的输出结果是_D_。main()int x=10,y=10;printf(
17、%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 200 D、输则格式符不够, 输出不确定的值知识点:自加、自减运算符和逗号运算符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
18、和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,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知识点:自加、自减运算符和
19、逗号运算符62有以下程序main()int y=10;while(y-);printf(y=%dn,y);程序执行后的输出结果是_B_。A、y=0 B、y=-1 C、y=1 D、while构成无限循环知识点:自加、自减运算符和逗号运算符63以下叙述中正确的是_B_。A、全局变量的作用域一定比局部变量的作用域范围大B、静态(static)类别变量的生存期贯穿于整个程序的运行期间C、函数的形参都属于全局变量D、未在定义语句中赋初值的auto变量和static变量的初值都是随机值知识点:局部变量及其作用域和生存期64下面程序的输出是_C_。fun3(int x)static int a=3;a+=x
20、;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以下叙述中正确的是_A_。A、局部变量说明为static 存储类,其生存期将得到延长B、全局变量说明为static 存储类,其作用域将被扩大C、任何存储类的变量在未赋初值时,其值都是不确定的D、形参可以使用的存储类说明符与局部变量完全相同知识点:局部变量及其作用域和生存期66有以下程序int fun(int x,int n)static int sum=0,i;for(i=0;in;i+) su
21、m+=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);程序执行后的输出结果是_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知识点:调用函数和被
22、调用函数之间的数据传递74有以下程序void f(int x,int y)int t;if(x2) return(fib(n-1)+fib(n-2);else return(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
23、 fun(char x,char y)if(xy) return x;return y;main()int a=9,b=8,c=7;printf(%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);该函数
24、调用语句中,含有的实参个数是_A_。A、3 B、4 C、5 D、有语法错知识点:函数的调用92以下函数值的类型是_A_。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(%
25、dn,d);程序运行后的输出结果是_A_。A、9 B、11 C、19 D、21知识点:函数的定义和返回值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(doubl
26、e b,double a); D、double myadd(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将其类型定义为无值型知识点:函数的
27、说明99下列叙述中正确的是_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、int a23=1,2,3,4;知识点:二维数组的定义和二维数组元素的引用103以下程序的输出结
28、果是_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知识点:二维数组的定义和二维数组元素的引用知识点:二维数组的定义和二维数组元素的引用106以下数组定义中错误
29、的是_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+) printf(%d ,mki);
30、执行后输出结果是_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、1470 C、5430 D、输出值不定知识点:二维数组的定义和二维数
31、组元素的引用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_。A、 2 0 0 B、 2 0 4 C、 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,s