《C程序设计期末考试习题库2.pdf》由会员分享,可在线阅读,更多相关《C程序设计期末考试习题库2.pdf(30页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、13、判断变量ch 中的字符是否为大写字母,最简单的正确表达式是(A 工A、ch=A&ch=z,B、A=ch A=ch=A&chb B、c-,+b,a+=l C、a=c+bn-m=k D、p+20、若有以下定义:int a=123,4,5,6,7;charcl=b,c2=2;则数值不为2 的表达式是(D)。A、al B、d-cl C、a3-c2 D、c2-025、下述对C 语言字符数组的描述中蛰送的是(C)。A、字符数组可以存放字符串B、字符数组中的字符串可以整体输入、输出C、可以在赋值语句中通过赋值运算符=对字符数组整体赋值D、不可以用关系运算符对字符组中的字符串进行比较27、以下程序的输出
2、结果是(A)。main()int i=010,j=10,k=oxl0;printf(%d,%d,%dn,i,j,k);)A、8,10,16B、8,10,10C、10,10,10D、10,10,1628、以下程序的输出结果是(B)。#include main()printf(%dn,NULL);A、不确定的值(因变量无定义)B、0 C、-1 D、129、以下程序的输出结果是(B)。main()char cl=6,c2=O:printf(%d,%d,%dn,cl,c2,cl-c2);A、因输出格式不合法,输出出错信息 B、54,48,6C、6.0,7 D、6,0,632、下述对C语言字符数组的描述
3、中错误的是(C)。A、字符数组可以存放字符串B、字符数组中的字符串可以整体输入、输出C、可以在赋值语句中通过赋值运算符=对字符数组整体赋值D、不可以用关系运算符对字符组中的字符串进行比较33、TurboC中,对于以下程序(A)。main()int x,y;y=creat(&x);printf(H%d nH,y);creat(int a)return a+;A、编译时会给出错信息B、顺利进行编译、连接、执行;不报任何错误C、顺利通过编译、连接、但不能执行D、顺利通过编译,但连接出错34、设有如下定义:int x=10,y=4,z;则语句:printf(%dn”,z=(x%y,x/y);的输出结果
4、是(C)。A、1 B、0 C、2 D、335、下述程序段的输出结果是(D)omain()int x=10,y=10;printf(M%d,%dnH,x+,+y);A、10,10 B、11,11 C、11,10 D、10,1136、定义如下变量和数组:intj;intx33=123,4,5,6,7,8,9;则下面语句的输出结果是(C)。for(i=0;i3;i+)printf(n%dn,xi2-i);A、159 B、147 C、357 D、36937、若要求在if 后一对圆括号中表示a 不等于0 的关系,则不能正确表示这一关系的表达式为(C)。A a 0 B、!a C、a=0 a38、若 m,y
5、,z均为int型变量,则执行下面语句后m 值 是(A)。m=l;x=2;y=3;z=4;m=(mx)?m:x;m=(m y)?m:y;m=(m a+b 等效于 c (a+b)B、若 a,b 均为真,则 allb为真C、表达式c&d的值为0D、逻辑运算符!比逻辑运算符II的优先级高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)
6、oA、赋值不合法 B、输出值为-2 C、输出为不确定值 D、输出值为245、若 int类型数据占两个字节,则以下语句的输出为(D)。int k=-1;printf C,%d,%un,k,k);A、-1,-1 B、-1,32767 C、-1,32768 D、-1,6553546、已知字母a 的 ASCH码十进制值为9 7,则执行以下语句后的输出为(C)。yhgchar a=af;printf(d,%cn”,a+2-0,a+3-0);A、b,c B、a运算不合法,故有语法错C、98,c D、格式描述和输出项不匹配,输出无定值47、下面语句中(B)是 C 语言的正确赋值语句。A、a=l,b=2 B、
7、I+;C、a=b=5 D、y=int(x);48、设有以下说明语句A 中声明变量并初始化时:inta=1,b=5;但是,只struct stu赋值时是不能这样写的,应该写成a=1;b=2;C int a;无分号,不是完整的语句,D 中 x 没有定义,float b;如 果 是 ini x=3;int y;y=int(x);这样是对的stutype;则下面的叙述不正确的是(C)。A、s t r u c t是结构体类型的关键字 B、s t r u c t s t u是用户定义的结构体类型C、s t u t y p e是用户定义的结构体类型名 D、a和b都是结构体成员名4 9、能正确表示:当x的取值
8、范围在 1,1 0 或 1 0 0,1 1 0 内为真,否则为假的表达式是(C )。A、(x =l)&(x =1 0 0)&(x=1 1 0)B、(x =l)II(x =1 0 0)II(x =l)&(x =1 0 0)&(x =l)II(x =1 0 0)&(x 0;n-)的循环次数为(A )。A、1 0 B、9 C、1 1 D、1 25 1、在对文件进行操作时,若要求文件的位置指针回到文件的开头,则应当调用的库函 数 是(DA f o p e n()B、f s e e k()C f c l o s e()5 2、下列哪个数组定义是正确的(D )。A、in t a 5.5;B、I N T a
9、 llO;C、i nta n;5 3、一个变量的指针就是(A )。A、变量的地址 B、变量的值 C、变量的名称5 5、下列正确的说法是(C )oD re wi nd()D i nta 3+2 J;D、变量的类型A、宏替换是在程序运行时进行的B、函数调用是在程序编译时进行的C、宏替换时,如果实参是表达式,应先求友达式的值,再替换D、函数调用时,如果实参是表达式,应先求表达式的值,再替换5 6、对于数学式4/2a,下面正确的C语言表达式是(D )。A、sqr(x)/2 a B、sqr(x)/2*a C sqrt(x)/(2*a)D、sqrt(x)/2*a5 7、若i nt类型数据占2字节,则以下语
10、句的输出为(D )。i nt k=3 2 7 6 8;pri ntf(,%d,%unM,k,k);A、-1,6 5 5 3 5 B、-1,3 2 7 6 7 C、-1,-1,D、-3 2 7 6 8,3 2 7 6 85 9、下面程序中(B )有错误。1)#i nc lud e 2)ma i n()3)(4)i nta 3=0,0,0;5)i nt i;6)f or(i=0;i 3;i+)sc a nf(n%DH,&a i);7)f or(i=l;i 3;i+)a O=a O+a i;8)pri ntf(d n”,a O;A、第4行 B、第6行 C、第7行 D、第8行6 0、下面程序的运行结果
11、(C)oma i n()unsi g ne d a=3,b=10;5pri ntf(n%d nna l =;)A、3 B、106 1、已定义x为f loa t型变量。x=2 13.8 2 6 3 1;P ri ntf(n%-4.2 f nM,x);则以上程序(A)oC、13 D、14%m.n d表示最大场宽m,小数位为n位,整数位则为m-n-1位,够m位右对齐。-m.n f可以控制输出左对齐A、输出格式描述符的域宽不够,不能输出 B、输出为2 13.8 3C、输出为2 13.8 2D、输出为-2 13.8 26 2、设已定义整型变量K,则下面的程序输出为(D)。k=017;s=lll;pri
12、ntf (%d ,+k);pri ntf (%x n,s+);A、15 6 f B、16 7 0 C、15 7 1 D、16 6 f6 3、不能正确表示a*b/c*d的C语言表达式是(C)oA、a*b/c*d B、a/(c*d)*b C、a*b/c/d D、a*b/(c*d)6 4、下 列(C)表达式不满足;当x的值为偶数时值为“真。为奇数时值为“假A、x%2=0 B、!x%2!=0 C、x/2*2-x=0 D、!(x%2)6 5、设已定义k为i nt型变量,则下面wh i le循环执行(C)次。k=1 0;wh i le(k=0)k=-l;A、执 行 10次 B、无限循环 C、一次也不执行
13、D、执行一次67、用高级语言编写的程序称之为(A)oA、源程序 B、目标程序 C、汇编程序 D、命令程序69、有以下程序的输出结果为(B)。main()char a=0 x95,b,c;b=(a&0 xf)4;a=blc;printf(M%xnH,a);)A、24 B、59 C、34 D、5670、下述程序段的输出结果是(A)oint a=3;b=4;int c=aAb 3;printf(d”,c)A、3 B、4 C、5 D、673、设 int型变量在内存中占用两个字节存储单元,定义如下结构体:struct student char name10;char sex;int age;struct
14、 int year;int month;int day;birth;stul;则表达式sizeof(stul)的 值 是(A、5 B、8)oC、2D、2675、下述程序段的运行结果是(B)。#include m a in()int m=7,n=4;float a=38.4,b=0.4,x;x=m/2+n*a/b+1 /2;printf(n%fAn;x);)A、22 B、387.000000 C、27 D、2676、下面程序的运行结果是(Cmain()int cl=2,c2=0;while(!c2-)printf(,%d%d,cl-,c2);)A、陷入死循环 B、不输出任何内容C、输出2-1 D
15、、输出2077、下面程序的运行结果是(B)。int m=4,n=6;max(int x,int y)int max;max=xy?x:y;return(max);)main()int m=10;printf(,%dn,max(m,n);)A、4 B、10 C、6 D、578、下面程序的运行结果是(B)。fun(int p)i nt k=l;sta ti c t=2;k=k+l;t=t+1;re turn(p*k*t);ma i n()i nt x=4;f un(x);pri ntf(d n”,f un(x);)A、4 B、3 2 C、3 0 D、167 9、阅读下面的程序:ma i n()c
16、h a r c h;sc a nf(%cn,&c h);i f(c h =,a,&c h =,z,)c h=c h-3 2;pri ntf(,%c,c h);)若输入字符为:e,则程序运行结果为(AA、E B、A C、e8 0、下面程序的运行结果是(B )o)oD、zm ain()sta ti c i nt a 3 3=3,2,1),(4,5,6),-2,9,1);i nt i,j,sum=0;f or(i=0;i 3;i+)f or(j=0;j s u m=9C、9D、1084、下述程序的运行结果是(A)o#i nc lud e voi d f un(i nt x)(putc h a r(*
17、O*+(x%10);f un(x/10);)m a i n()(pri ntf(HnH);f un(12 3 4);)A、4 3 2 1 B、3 2 1 C、2 1 D、186、设已定义i和k为i nt类型变量,则以下f o r循环语句(B)。f or(i=0,k=-l;i+,k+)pri ntf C*n”);A、判断循环结束的条件不合法 B、是无限循环C、循环一次也不执行 D、循环只执行一次8 7、下列程序段选择项中,使i的运行结果为4的程序段是(D)。A、i nti=O,j=O;(i=3,(j+)+i);C、i nt i=0,j=1;(j=l)?(i=l):(i=3);B、i nt i=l
18、,j=7 0;j=i=(i=3)*2);D、i nt i=l,j=l;i+=j+=2;89、阅读以下程序(最左边是附加的行号)。1)#i nc lud e 2)m ain()3)f loa t s5;4)5)6)7)8)9)10)此段程序(A)oint i,k=0;for(i=0;i5;i+)scanf(n%d,s+i);for(i=0;i5;i+)k=si;printf(Hn%f;(float)k);A、没有错误 B、第 4 行错误90、下列程序中有三个是完全相同的功能,A、s=0;i=0;while(i=100)s+=i+;C、s=0;i=0;while(i=100)s+=+i;92、执行
19、下面的程序后,a 的 值 为(Dmain()int a,b;for(a=l,b=l;a=20)break;if(b%3=l)b+3;continue;)b-=5;)A、7 B、8 C、C、第 6 行错误 D、第 9 行错误只 有(B)所完成的功能与其他程序不同。B、s=0;i=l;while(i+100)s+=i;D、s=0;i=0;while(+i=100)s+=i;)oD、1093、下面的程序中(C)有错误。1)#include2)main()3)(4)float a3=0.0;5)int i;6)for(i=0;i3;i+)7)scanf(D”,&a );8)for(i=1 ;i3;i+
20、)a0=a0+ai;9)printf(%fn,a01);)A、第 4 行 B、第 6 行 C、第 7 行 D、第 8 行94、以下程序的输出结果是(C)o#includemain()inti;fbr(i=l;i7)n-;printf(n%dn,n);)A、1098 B、987 C、10987 D、9876100、两次运行下面的程序,如果键盘上分别输入6 和 4,则输出结果是(A)omain()int x;scanf(%d,&x);int(x+5)printf(n%dnx);)A、7 和 5 B、6 和 3 C、7 和 4 D、6 和 4101、运行下段程序的结果是(D)o#includem a
21、 in()int x;for(x=1 ;x=100;x+)if(+x%=0)if(+x%3=0)if(+x%5=0)printf(H%dH,x);A、31,61,91 B、30,60,90C、不输出任何内容 D、29,59,89102、运行下述程序段后,i 值为4 的 是(B)。A、int i=l,j=0;i=j=(i=3)+);B、inti=l,j=l;i+=i+=2;C、int i=0,j=0;(i=2,i+(j=2);104、以下程序的输出结果是(D)omain()int a=-l,b=4,k;k=(+a,0)&!(b-以下程序的输出结果是(A)。main()int x=3,y=0,z=
22、0;if(x=y+z)printfC*);elseprintfC#);)A、#B、*C106、以下程序的输出结果是(A)oint m=13;int fun2(int x,int y)int m=3;return(x*y-m);)m a in()int a=7,b=5;printf(,%dn,fun2(a,b)/m);)A、2 B、3 C、7112、阅读程序:D、int i=0,j=l;(j=l)?i+=3:i=2;D、5#includeD、0,0,4D、4main()int m,n,w;scanf(%d,%dH,&m,&n);while(n)w=m%n;m=n;n=w;)printf(n%dn
23、,m);)如果输入10,6,则输出结果是(D)。A、60 B、120 C、2 D、10113、下列程序执行后输出的结果是(A)。#includef(int a)int b=0;static c=2;a=c+,b+;return(a+b);)main()int a=2,i,k;for(i=0;i 4 D、5115、下列程序的运行结果是(B)omain()static int a34=1,2,3,4,5,678,9,10,11,12);int i,j,sum=0;f o r(i=0;i 3;i+)f o r(j=0;j i)s u m+=a i j;p r i n t f(,s u m=%d n,
24、s u m);A、40B、36C、24D、301 2 0、阅读下列程序:m a i n()i n t n 3,i,j,k;f o r(i=0;i 3;i+)n i=0;k=2;f o r(i=0;i k;i+)f o r(j=0;j k;j+)n j=n i+l;f o r(i=0;i 3;i+)p r i n t f(n%dH,n i);p r i n t f(nn );)运行该程序,其输出结果是(B )。A、230B、330C、123D、321123、下述程序段的运行结果是(B )om a i n()s t a t i c i n t a 33=1,2,3,4,5,6,7,8.9 ;i n
25、 t b 32,i,j;f o r(i=0;i 3;i+)f o r(j=0;j 3;j+)b i U=a j i+a i U;p r i n t f C%5d ;b i r j);printf(nnH);A、2 4 72 10 83 6 18B、2 6 106 10 1410 14 18C、18 14 1014 10 610 6 2D、18 2 34 10 27 4 2124、如果程序中有如下的说明和定义:struct s int x,y;struct s x,y;则会发生的情况是(A)。A、编译出错B、能顺利编译和链接,但不能执行C、程序能顺利通过编译,但是链接时会出错D、程序能顺利编译,
26、链接,执行127、对 C 语言的文件存取方式的论述中,正确的是文件(C)A、只能顺序存取B、只能随机存取(也称直接存取)C、可以是顺序存取,也可以是随机存取D、只能从文件的开头存取填空练习题1、有以下定义:int x;float y;执行scanf(%3d%f,&x成y);时,如果输入的数据为:12345 678,则 x 的 值 为 123 N的值为 这个与12345后有没有空格有关,到时候看着办吧(有空格就是45.000000)。2、有定义语句:int x,y,z;,执行x=(y=4,z=8,z=16)后,x 的值为。3、计算表达式b=25/3%3后,b 的 值 为 2。4、设有定义语句 i
27、nt x=l,y=0;,则表达式 x-(y+x)?10:12y+?A:Z 的值是:65。5、请写出以下语句的输出结果_ _ _ _ _。printf(%d,strlen(t065xffabn);7、C语言规定:标识符只能由字母、数字、下划线 三种字符组成。8 有定义语句:i n t x=5,y=l:表达式x&y=y?x l y:x t的 值 为5。9、下述程序段的循环次数是次,输出结果是y=l,x=O。i n t x=O,y=O;d o y+;x*=x;w h i l e(x 0&y 5)p r i n t f(,y=%d,x=%d ,y,x);10、若m,y,z,均为i n t型变量,则执行
28、下面语句后m值是1。m=l;x=2;y=3;z=4;m=(m x)?m:x;m=(m y)?m:y;m=(m z)?m:z;11、下述程序段的运行结果是)oi n t x,y;x=17;y=26;p r i n t f(u%d ,y/=(x%=6);12、下列循环语句执行的循环次数是:无数次。f o r(a=l,b=l;a v 4&b!=4;a+)循环体内 b 的值不变。14、下述程序段的输出结果是m _ _ _ _ _ _ _oi n t a=3;b=4;i n t c=aAb 3;p r i n t f(%d ,c);17、下述程序段的输出结果是1是5056。#i n c l u d e
29、v o i d f u n(i n t*x)p r i n t f(,%d,+x);main()int y=20;fun(&y);)20、下述程序段的运行结果是_l i _。#includemain()int a33=1,2,3,4,5,67,8,9);int s=0,i;for(i=0;i3;i+)s+=(*(a+i)i;printf(u%d,s);)21、下述程序的输出结果是18 c#includemain()int x=8,y=9;int k;k=(x+)+(+y);printf(%dk);)22、下述程序的输出结果是X _o#includeint fun(int x)static in
30、t a=3;a+=x;return a;)main()int k=2,m=l,n;n=fun(k);n=fun(m)printf(H%dn,n);)23、用“冒泡法”对输入的10个字符按由小到大顺序排序,请填空。#include#include#define n 10main()int i,j;char strl 1;scanf(%su,str);char t;for(j=l;jn;j+)for(i=0;(i s t r i+1 1)t=stri;strij=strl+l J;stri+l=t;)for(i=0;in;i+)printf(u%cM,stri);)24、把字符数组中的字符串按反序
31、存放,例如:字符串“ABCD”的输出结果应为“DCBA”,请填空。#include#include#includemain()(char a100,t;printr(输入字符串:n );s c a n f(M%s ,a);i n t i j;f o r(i=0,j=s l r l e n(a);i s t r l e n(a)/2;i+4-,j)t=a i;a i=a j-l;ai-止 t_;p r i n t f(“转换后的字符串是:s n ,a);)27、下面程序的执行结果是2.2。#i n c l u d e m a i n()i n t a r r a y 3=10,20,30,2 8
32、,1 5 1 0 ,-50,10,60 ;i n t i,j,r o w=0,c o l=0;f o r(i=0;i 3;i+)f o r(j=0;j a r r a y r o w c o l)r o w=i;c o l=j;p r i n t f(n%d,%d ,r o w,c o l);2 8、求 出1 0 0 0以内能被7或1 1整除,但不能同时被7和1 1整除的数,存放到数组x x中。请填空。m a i n()(i n t i,j=0;i n t x x 1000;f o r(i=1;i l)t=a%b;a=b;b=t;)printf(3d”,a);)35、求下列算式1 +1/2+1
33、/3+1/100的值,请填空。main()int i;float sum=0;for(i=l;i101;i+)sum+=l/i;printf(u%insum);)36、将输入的百分制的分数转换为相应的等级并输出,1009 0 分则为A;898 0 分则为 B;7970分则为C;6960分则为D;小于60分为E,请填空。main()int score,i;scanf(%dn,&scorer);i=score/10;switch(i)case 10:case 9:printf(Au);bresk;case 8:printf(HBM);break;case 7:printf(,C,);break;c
34、ase 6:printf(D,);break;default:printfC0);)38、卜.面程序是在两位数中统计所有能被3 整除的数的个数。main()int i,num=0;for(i=10;i100;i+)if(i%3=0)num+;printf(nThere are%d numbers!*,num);42、以下程序段的输出结果是1-2。main()int x=3;do printf(”3d”,x=2);while(!(x);)43、以下程序的输出结果是一 004。main()int a=-l,b=4,k;k=(+a0)&!(b-=0);printf(H%d%d%dn,k,a,b);)
35、44、下列程序执行后输出的结果是 _ _ _ _ _。#includef(int a)int b=0;static c=3;a=c+,b+;return(a);)main()int a=2,i,k;for(i=0;iO)y=1;else y=0;printf(,y=%dn,y);)若运行该程序,输入值为:5,则输出结果为:y=l47、阅读程序,请写出结果:main()char c;int sl=0,s2=0;doswith(c=getchar()casea:casee1:casex1:caseo*:caseu,:sl+=l;default:s2+=l;)while(c!=,n);printf(
36、d.%dn”,s l,s2);)若输入数据为:computer,则输出结果为:3.948、阅读程序,请写出结果:main()int m,i,k;scanf(%d,&m);for(i=2;i=m)printf(n%dnn,m);若输入数据为:19 ,则输出结果为:1949、下述程序的运行结果是 4321。#includevoid fun(int x)putchar(Or+(x%10);fun(x/10);)void main()(printf(,nn);fun(1234);53、求2 0以内3的倍数和sum l及其余数的和sum2em a in()int sum=0,sum2=0,i;for(i
37、=1 ;i=20;i+)if(i%3=0)suml+=i;elsesum2+=i;printf(%d,%dn,sum 1 ,sum2);)55、下面函数把两字符串s i和s2连接起来。Con(char sl,char s2)int i=0,j=0;while(sli!=,0,)i+;while(s2j!=,0,)sI i+J=s2|j+J;)57、统计文件fl.dat中的字符个数。#include main()FILE*fp;long num=0;if(_(fp=fopen(Mn.datn,rM)=NULL)printf(,Can,t Open Filen);exit(0);)whilefge
38、tc(fp)!=EOF)num+;printf(%ldnnum);fclose(fp);58、下面函数从字符数组s口中删除字符c。void del(char s,char c)int i,j;for(i=j=0;si!+、0;i+)if(si!=c)sj+=si;si=0:)59、下面程序用于统计一行字符串中单词的个数,单词之间用空格分隔。Main()int i,num=0,word=0;char str8O;scanf(M%sn,str);for(i=Q;i80;i+)if(sirij=)word=0else if(word=0)word=l;num+;)printf(%dn,num);)6
39、4、下面程序用指针p 输出p 所指向的数组元素的其后所有元素。main()int a10=6,-1,3,2,576,12,-1,-3;intp=a+4;for(i=0;j=5;i+)DrintfC%。*p+):)65、以下程序把一个名为fl.dat的文件拷贝到一个名为f2.dat的文件中。#includemain()char c;FILE*fpl,*fp2Fpl=fopen(“fLDoc”,T);Fp2=fopen(,f2.doc,Mw,);c=fgetc(fpl);while(c!=EOF)fputc(c,fp2);c=fgetc(fpl);)fclose(fpl);fclose(fp2);
40、)67、判断某年year是否是闰年,若 year能被4 整 除 100整除或能被400整除,则是闰年,否则不是闰年。main()int year;scanf(%dn,&year);if(year%4=0&year%100!=0llyear%400=0)printf(0%d is a leap yearnu,year);elseprintf(u%d isnt a leap yearn,year);)68、把键盘输入的一行字符串的小写字母转换成大写字母,其余字符不变,进行输出,直到遇到回车为止。#include main()if(c=a,&c0)if(xamax)amax=x;if xamixam
41、in=x;scanf(n%f;&x);)printf(n amax=%fn amin=%fn,amax,amin);)70、执行下面的程序后,a 的值为3_omain()int a,b;for(a=1 ,b=l;a=20)break;if(b%3=l)b+=3;continue;b-=5;)74、以下程序由终端键盘输入一个文件名,然后把终端键盘输入的字符依次存放到该文件中,用#作为结束输入的标志,请填空。#includemain()FILE*fp;char ch,fname10;printf(nInput the name of file nH);gets(fname);if(fp=fopen(fnamejw)=NULL)printf(nCannot open nM);exit(0);printf(HEnter date nM);while(ch=getchar()!=,#,)fputc(_ch_,fp);fclose(fp);