《C语言期末考试试题及详细答案(共27页).docx》由会员分享,可在线阅读,更多相关《C语言期末考试试题及详细答案(共27页).docx(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上选择练习题 1、C语言中最简单的数据类型包括( B )。 A、整型,实型,逻辑型B、整型,实型,字符型 C、整型,字符型,逻辑型D、整型,实型,逻辑型,字符型 2、C语言中,运算对象必须是整型数的运算符是(A )。 A、%B、/C、%和/D、* 3、为表示关系xyz,应使用C语言表达式( A )。 A、(xy)&(yz) B、(xy)AND(yz) C、(xyz) D、(xy) &(yz) 4、C语言程序的基本单位是( C )。 A、程序行 B、语句 C、函数 D、字符 5、C语言的程序一行写不下时,可以( D )。 A、用逗号换行 B、用分号换行 C、用回车符换行
2、D、在任意一空格处换行标识符由字母,数字和下划线组成且第一个字符必须为字母或下划线 6、下述标识符中,( C )是合法的用户标识符。 A、A&B B、void C、_student D、ab* 7、在C语言中,字符型数据在内存中以( B )形式存放。 A、补码 B、ASCII码 C、反码 D、原码 8、一个程序由若干文件组成,共用同一变量,则此变量的存储类别应该为( B )。auto自动变量register寄存器变量extern 外部变量static静态变量 A、auto B、extern C、static D、Register 9、以下关于switch语句和break语句的描述中,只有(B
3、)是正确的。 A、在switch语句中必须使用break语句 B、在switch语句中,可以根据需要使用或不使用break语句 C、break语句只能用于switch语句中 D、break语句是switch语句的一部分 10、C语言规定:调用一个函数时,实参变量和形参变量之间的数据传递是(B )。 A、地址传递 B、值传递 C、由实参传给形参,并由形参传回给实参 D、由用户指定传递方式 11、下述C语言转义符中( D )是非法的。 A、b B、037 C、0xf D、 12、为了要计算s=10!(10的阶乘),则以下对s的定义正确的是( D )。 A、int s B、unsigned s C、
4、short s D、long s 13、判断变量ch中的字符是否为大写字母,最简单的正确表达式是( A )。 A、ch=A&ch=z B、A=ch=Z C、A=ch=z D、ch=A&ch=z 14、在C语言中,能表示无符号长整型常数的是(D )。 A、OL B、U C、u D、2UL 15、能正确表示C语言的字符常量的是( C )。 A、0x41 B、A C、0 D、0 16、C语言中逻辑表达式的值为( A )。 A、0或1 B、非零值或零值 C、true或false D、true或false 17、C语言提供的基本数据类型关键字是( C )。 A、integer B、FLOAT C、uns
5、igned D、Double 18、若定义语句:int b =1,2,3,4,5,*P=b;则表达式*p+的值是( A )。 A、1 B、2 C、b0的地址 D、b1的地址 19、在下列选项中,不正确的表达式是( C )。 A、ab B、c-, +b, a+=1 C、a=c+bn-m=k D、p+ 20、若有以下定义: int a =1,2,3,4,5,6,7; char cl=b,c2=2; 则数值不为2的表达式是( D )。 A、a1 B、d-cl C、a3-c2 D、c2-0 25、下述对C语言字符数组的描述中错误的是( C )。 A、字符数组可以存放字符串 B、字符数组中的字符串可以整
6、体输入、输出 C、可以在赋值语句中通过赋值运算符=对字符数组整体赋值 D、不可以用关系运算符对字符组中的字符串进行比较 27、以下程序的输出结果是( A )。 main( ) int i=010, j=10, k=ox10; printf(%d,%d,%dn,i,j,k); A、8,10,16 B、8,10,10 C、10,10,10 D、10,10,16 28、以下程序的输出结果是( B )。 #includestdio.h main( ) printf(%dn,NULL); A、不确定的值(因变量无定义) B、0 C、-1 D、1 29、以下程序的输出结果是( B )。 main( ) c
7、har c1=6,c2=0; printf(%d,%d,%dn,c1,c2,c1-c2); A、因输出格式不合法,输出出错信息 B、54,48,6 C、6.0,7 D、6,0,6 32、下述对C语言字符数组的描述中错误的是( C )。 A、字符数组可以存放字符串 B、字符数组中的字符串可以整体输入、输出 C、可以在赋值语句中通过赋值运算符=对字符数组整体赋值 D、不可以用关系运算符对字符组中的字符串进行比较 33、Turbo C中,对于以下程序( A )。 main( ) int x,y; y=creat(&x); printf(%d n, y); creat(int a) return a+
8、; A、编译时会给出错信息 B、顺利进行编译、连接、执行;不报任何错误 C、顺利通过编译、连接、但不能执行 D、顺利通过编译,但连接出错 34、设有如下定义: int x=10, y=4,z;则语句: printf(%dn, z=(x%y, x/y);的输出结果是( C )。 A、1 B、0 C、2 D、3 35、下述程序段的输出结果是( D )。 main( ) int x=10, y=10; printf(%d, %dn, x+, +y); A、10,10 B、11,11 C、11,10 D、10,11 36、定义如下变量和数组: int j; int x33=1,2,3,4,5,6,7,
9、8,9;则下面语句的输出结果是( C )。 for(i=0;i3;i+ printf(%d, xi2-i); A、159 B、147 C、357 D、369 37、若要求在if后一对圆括号中表示a不等于0的关系,则不能正确表示这一关系的表达式为( C )。 A、a0 B、!a C、a=0 D、a 38、若m,y,z均为int型变量,则执行下面语句后m值是(A )。 m=1;x=2;y=3;z=4; m=(mx)m:x; m=(my)m:y; m=(mz) m:z; A、1 B、2 C、3 D、4 39、若有定义:int a=7;float x=2.5,y=4.7,则表达式x+a%3*(int)
10、(x+y)%2/4的值是( A )。 A、2. B、2. C、3. D、0. 40、如下说法不正确的是( C )。 A、ca+b等效于c(a+b) B、若a,b均为真,则a|b为真 C、表达式c&d的值为0 D、逻辑运算符!比逻辑运算符|的优先级高 41、putchar()函数可以向终端输出一个( B )。 A、整型变量表达式值 B、字符 C、字符串 D、实型变量值 42、表达式18/4*sqrt(4.0)/8值的数据类型为( C )。 A、int B、float C、double D、不确定 43、若已定义a为整型变量: a=-2L; printf(%dn,a);则以上语句( B )。 A、
11、赋值不合法 B、输出值为-2 C、输出为不确定值 D、输出值为2 45、若int类型数据占两个字节,则以下语句的输出为( D )。 int k= -1; printf(%d,%un,k,k); A、-1,-1 B、-1,32767 C、-1,32768 D、-1,65535 46、已知字母a的ASCII码十进制值为97,则执行以下语句后的输出为( C )。yhg char a=a; a-; printf(%d,%cn,a+2-0,a+3-0); A、b,c B、a运算不合法,故有语法错 C、98,c D、格式描述和输出项不匹配,输出无定值 47、下面语句中( B )是C语言的正确赋值语句。 A
12、、a=1,b=2 B、I+; C、a=b=5 D、y=int(x);A中声明变量并初始化时:int a=1,b=5;但是,只赋值时是不能这样写的,应该写成a=1;b=2;C无分号,不是完整的语句,D中x没有定义,如果是 int x=3;int y; y=int(x);这样是对的 48、设有以下说明语句 struct stu int a; float b; stutype;则下面的叙述不正确的是( C )。 A、struct是结构体类型的关键字 B、struct stu是用户定义的结构体类型 C、stutype是用户定义的结构体类型名 D、a和b都是结构体成员名 49、能正确表示:当x的取值范围
13、在1,10或100,110内为真,否则为假的表达式是( C )。 A、(x1)&(x10)&(x100)&(x110) B、(x1)|(x10)|(x100)|(x110) C、(x1)&(x10)|(x100)&(x110) D、(x1)|(x10)&(x100)&(x110) 50、设n为整型变量,则循环语句for(n=10;n0;n-)的循环次数为( A )。 A、10 B、9 C、11 D、12 51、在对文件进行操作时,若要求文件的位置指针回到文件的开头,则应当调用的库函数是( D )。 A、fopen() B、fseek() C、fclose() D、rewind() 52、下列哪
14、个数组定义是正确的( D )。 A、int a5.5; B、INT a10; C、int an; D、int a3+2; 53、一个变量的指针就是( A )。 A、变量的地址 B、变量的值 C、变量的名称 D、变量的类型 55、下列正确的说法是(C )。 A、宏替换是在程序运行时进行的 B、函数调用是在程序编译时进行的 C、宏替换时,如果实参是表达式,应先求表达式的值,再替换 D、函数调用时,如果实参是表达式,应先求表达式的值,再替换 56、对于数学式/2a,下面正确的C语言表达式是( D )。 A、sqr(x)/2a B、sqr(x)/2*a C、sqrt(x)/(2*a) D、sqrt(x
15、)/2*a 57、若int类型数据占2字节,则以下语句的输出为( D )。 int k=32768; printf(%d,%un,k,k); A、-1,65535 B、-1,32767 C、-1,-1, D、-32768,32768 59、下面程序中( B )有错误。 1)#includestdio.h 2)main ( ) 3) 4)int a3=0,0,0; 5)int i; 6)for(i=0;i3;i+scanf(%D,&ai); 7)for(i=1;i3;i+a0=a0+ai; 8)printf(%dn,a0; A、第4行 B、第6行 C、第7行 D、第8行 60、下面程序的运行结果
16、( C )。 main( ) unsigned a=3,b=10;5 printf(%dna2|b1; A、3 B、10 C、13 D、14%m.nd表示最大场宽m,小数位为n位,整数位则为m-n-1位,够m位右对齐。%-m.nf可以控制输出左对齐 61、已定义x为float型变量。 x=213.82631; Printf(%-4.2fn,x);则以上程序( A )。 A、输出格式描述符的域宽不够,不能输出 B、输出为213.83 C、输出为213.82 D、输出为-213.82 62、设已定义整型变量K,则下面的程序输出为( D )。 k=017;s=111; printf(%d,+k);
17、printf(%xn,s+); A、15 6f B、16 70 C、15 71 D、16 6f 63、不能正确表示a*b/c*d的C语言表达式是( C )。 A、a*b/c*d B、a/(c*d)*b C、a*b/c/d D、a*b/(c*d) 64、下列( C )表达式不满足;当x的值为偶数时值为“真”,为奇数时值为“假”。 A、x%2= =0 B、!x%2!=0 C、x/2*2-x= =0 D、!(x%2) 65、设已定义k为int型变量,则下面while循环执行( C )次。 k=10; while(k=0)k=-1; A、执行10次 B、无限循环 C、一次也不执行 D、执行一次 67、
18、用高级语言编写的程序称之为( A )。 A、源程序 B、目标程序 C、汇编程序 D、命令程序 69、有以下程序的输出结果为( B )。 main( ) char a=0x95,b,c; b=(a&0xf)4; c=(a&0xf0)4; a=b|c; printf(%xn,a); A、24 B、59 C、34 D、56 70、下述程序段的输出结果是( A )。 int a=3;b=4; int c=ab3; printf(%d,c) A、3 B、4 C、5 D、6 73、设int型变量在内存中占用两个字节存储单元,定义如下结构体: struct student char name10; char
19、 sex; int age; struct int year; int month; int day; birth; stul;则表达式sizeof(stul)的值是( )。 A、5 B、8 C、2 D、26 75、下述程序段的运行结果是( B )。 #include main( ) int m=7,n=4; float a=38.4,b=0.4,x; x=m/2+n*a/b+1/2; printf(%fn,x); A、22 B、387. C、27 D、26 76、下面程序的运行结果是( C )。 main( ) int cl=2,c2=0; while(!c2- -) printf(%d%d
20、,cl- -,c2); A、陷入死循环 B、不输出任何内容 C、输出2 -1 D、输出20 77、下面程序的运行结果是( B )。 int m=4,n=6; max(int x,int y) int max; max=xyx:y; return(max); main( ) int m=10; printf(%dn,max(m,n); A、4 B、10 C、6 D、5 78、下面程序的运行结果是( B )。 fun(int p) int k=1; static t=2; k=k+1; t=t+1; return(p*k*t); main( ) int x=4; fun(x); printf(%d
21、n,fun(x); A、4 B、32 C、30 D、16 79、阅读下面的程序: main( ) char ch; scanf(%c,&ch); if(ch=a& ch=z) ch=ch-32; printf(%c,ch); 若输入字符为:e,则程序运行结果为( A )。 A、E B、A C、e D、z 80、下面程序的运行结果是( B )。 main( ) static int a33=3,2,1,(4,5,6),-2,9,1; int i,j,sum=0; for(i=0;i3;i+) for(j=0;j3;j+) if(i= =j) sum=sum+aiJj; printf(sum=%d
22、,sum); A、sum=10 B、sum=9 C、9 D、10 84、下述程序的运行结果是( A )。 #include void fun(int x) putchar(0+(x% 10); fun(x/10); main( ) printf(n); fun(1234); A、4321 B、321 C、21 D、1 86、设已定义i和k为int类型变量,则以下for循环语句( B )。 for(i=0,k=-1;i+,k+) printf(* * * *n); A、判断循环结束的条件不合法 B、是无限循环 C、循环一次也不执行 D、循环只执行一次 87、下列程序段选择项中,使i的运行结果为4
23、的程序段是( D )。 A、int i=0,j=0; B、int i=1,j=70; (i=3,(j+)+i); j=i=(i=3) *2); C、int i=0,j=1; D、int i=1,j=1; (j= =1)(i=1):(i=3); i+=j+=2; 89、阅读以下程序(最左边是附加的行号)。 1)#include 2)main( ) 3) float s5; 4) int i,k=0; 5) for(i=0;i5;i+) 6) scanf(%d,s+i); 7) for(i=0;i5;i+) 8) k=si; 9) printf(n%f,(float)k); 10)此段程序( A
24、)。 A、没有错误 B、第4行错误 C、第6行错误 D、第9行错误 90、下列程序中有三个是完全相同的功能,只有( B )所完成的功能与其他程序不同。 A、s=0; B、s=0; i=0; i=1; while(i=100) while(i+100) s+=i+; s+=i; C、s=0; D、s=0; i=0; i=0; while(i=100) while(+i=100) s+=+i; s+=i; 92、执行下面的程序后,a的值为( D )。 main( ) int a,b; for(a=1,b=1;a=20)break; if(b%3= =1) b+3; continue; b-=5;
25、A、7 B、8 C、 D、10 93、下面的程序中( C )有错误。 1)#include 2)main( ) 3) 4) float a3=0.0; 5) int i; 6) for(i=0;i3;i+) 7) scanf(%D,&ai); 8) for(i=1;i3;i+)a0=a0+ai; 9) printf(%fn,a0); A、第4行 B、第6行 C、第7行 D、第8行 94、以下程序的输出结果是( C )。 #include main( ) int i; for(i=1;i7) n-; printf(%d,n); A、1098 B、987 C、10987 D、9876 100、两次运行下面的程序,如果键盘上分别输入6和4,则输出结果是( A )。 main( ) int x; scanf(%d,&x); int(x+5) printf(%dn,x-); A、7和5 B、6和3 C、7和4 D、6和4 101、运行下段程序的结果是( D )。 #include main( ) int x; for(x=1;x=100;x+) if(+x%= =0) if(+x%3= =0)