《泰山学院成人继续教育2023年C语言程序设计期末复习题及答案(附后).docx》由会员分享,可在线阅读,更多相关《泰山学院成人继续教育2023年C语言程序设计期末复习题及答案(附后).docx(151页珍藏版)》请在课桌文档上搜索。
1、泰山学院学习方式:业余时间:120考试科目:财务管理(总分)99集中开卷考试特别提醒:1、所有答案均须填写在答题卷上,否则无效。2、每份答卷上均须准确填写专业、身份证号码、所属学习中心名称、学号、姓名等。一单选题(共251题,总分值251分)1 .当街桢111(16后面的文件名用”括起时,寻找被包含文件的方式是()。(1分)A.直接按照系统设定的标准方式搜索目录B.先在源程序所在目录搜索,再按照系统设定的标准方式搜索C.仅仅搜索源程序所在目录D.仅仅搜索当前目录2 .若有定义语句:intyear=2009,*p=year;以下不能使变量year中的值增至2010的语句是(1分)A. *p+=l
2、;B. (*p)+;C. +(*P);D. *p+;3 .若有定义:inta,b;,通过语句scanf%dj%d,z,fea,&b);,能把整数3赋给变量a,5赋给变量b的输入数据是(1分)A. 35B. 3,5C. 3;5D. 354 .在C语言中,引用数组元素时,其数组下标的数据类型允许是(1分)A.整型常量B.整型表达式C.整型常量或整型表达式D.任何类型的表达式5 .C语言规定,函数返回值的类型是由所决定()o(1分)A.return语句中的表达式类型B.调用该函数时的主调函数类型C.调用该函数是系统临时指定D.在定义该函数时所指定的函数类型6.已知有预处理命令#include和声明c
3、hars10=Thankyou*;inti;,要求输出字符串Thankyou”,以下选项中不能达到该要求的语句是(1分)A. puts(s);B. printf(,%s,s10);C.for(i=0;si!=0ji+)printf(%czsi);D.for(i=0;s(i!=0,J+)putchar(si);7. 321的值为(1分)A.08. 1C.2D.38 .不能把字符串“Hello!”赋给数组b的语句是(1分)A. charb10=,H,e,TzTz,o,!,0);B. charb10;b=,Hello!C. charb10;strcpy(b,Hello!);D. charb10=He
4、llo!;9 .对基类型相同的指针变量不能进行的运算是(1分)A. +B. C.=D.=10 .若变量已正确定义,在if(W)printf(z,%dnz,k);中,以下不可替代W的是(1分)A. ab+cB. ch=getchar()C. a=b+cD. a+11 .己知x=43,ch=A,y=0;则表达式(x=y&chB&!y)的值是()。(1分)A.OB.语法错误C. 1D. u假”12 .以下正确的描述是()。(1分)A.函数的定义可以嵌套,但函数的调用不可以嵌套B.函数的定义不可以嵌套,但函数的调用可以嵌套C.函数的定义和函数的调用均不可嵌套D.函数的定义和函数的调用均可以嵌套13 .
5、对下面三条语句(其中SI和s2为内嵌语句),正确的论断是o(1分)A.三者相互等价B.1和2等价,但与三不等价C.三者互不等价D.1和3等价,但与2不等价14 .设有定义:inta=1,b=2,c=3;,以下语句中执行效果与其它三个不同的是O(1分)A. if(ab)c=a,a=b,b=c;B. if(ab)c=aza=bzb=cjC. if(ab)c=a;a=b;b=c;D. if(ab)c=a;a=b;b=c;15 .在C程序中调用函数时,主调函数中的实参和被调函数中的形参(1分)A.个数、次序必须相同,但数据类型可以不考虑。B.个数、次序必须相同,对应参数的数据类型应相同或赋值相容。C.
6、个数、次序和数据类型均可以不相同。D.对应参数数据类型应相同,但个数和次序可以不考虑。16.若已定义inta=5;下面对(1)、(2)两个语句的正确解释是(1) int*p=&a;*p=a;(1分)A.语句(1)和(2)中的*p含义相同,都表示给指针变量P赋值。B. (1)和(2)语句的执行结果,都是把变量a的地址值赋给指针变量P,C. (1)在对P进行说明的同时进行初始化,使P指向a:(2)变量a的值赋给指针变量。D. (1)在对p进行说明的同时进行初始化,使P指向a;将变量a的值赋予*p.17 .设有下列程序段,则SCanf函数调用语句中对结构体变量成员的不正确引用为()。structst
7、udentcharname20;intage;charsex;stu5z*p;p=stu;(1分)A. scanf(%szstuO.name);B. scanf(%d,p-age;C. scanf,%c,(p-se);D. scanf(%dstuO.age);18 .a=3,b=4,执行“printf(%d,%d”,(a,b),(b,a);”的输出是o(1分)A. 3,4B. 4,3C. 3,3D. 4,419 .如果要以只读方式打开一个文本文件,应使用的打开方式是()。(1分)A. r+B. wCrD.rb20 .以下选项中正确的语句组是(1分)A. chars;s=HBOOK!;B. ch
8、ar*s=,BOOK!,;C. chars10;s=BOOK!;D. char*s;s=BOOK!;21 .以下叙述不正确的是()。(1分)A. 一个C源程序可由一个或多个函数组成B. 一个C源程序必须包含一个main函数C. C程序的基本组成单位是函数D.在C程序中,注释说明只能位于一条语句的后面22 .下列语句中,将C定义为文件型指针的是(1分)A. FILEc;B. FILE*c;C. filec;D. file*c;23 .以下C语言用户标识符中,不合法的是(1分)A._lB. AaBcC. a_bD. a-b24 .C语言中WhiIe和dowhile循环的主要区别是()o(1分)A.
9、 do-while的循环至少无条件执行一次。B. while循环控制条件比do-while的循环控制条件严格。C. do-while允许从外部转入到循环体内。D. do-while的循环体不能是复合语句。25 .在C程序中,注释说明只能位于一条语句的后面()。(1分)A.必须在最开始B.必须在系统调用的库函数的后面C.可以任意D.必须在最后26.下面程序的功能是将从键盘输入的一对数,由小到大排序输出。当输入一对相等数时结束循环,请选择填空。#includemain()inta,b,t;SCanf(%d%d,&a,&b);while()if(ab)t=a;a=b;b=t;Printf(%d,%d
10、n,a,b);scanf(%d%dz&a,&b);)o(1分)A.!a=bB.a!=bC.a=bD.a=b27.下面程序的运行结果是()。#includemain()inti;for(i=l;i=5;i+)switch(i%5)caseO:printf(*);break;casel:printf(#);break;default:printf(n);break;case2:Printf(&”);)(1分)A.#&*B.#&c.aD.#&28 .以下程序的输出结果是()。main()int=2,y=-l,z=2;f(y)if(yO)z=0;elsez+=l;printf(%dnzz);)(1分)
11、A. 3B. 2C. 1D. 029 .下列条件语句中,输出结果与其他语句不同的是(1分)A.if(a)printf(%dn,x);elseprintf(%dn,y);B. if(a=O)printf(%dn,y);elseprintf(%dn,x);C. if(a!=O)printf(%dnzx);elseprintf(%dnzy);D. if(a=O)printf(%dn,);elseprintf(%dn,y);30 .以下能对一维数组a进行正确初始化的语句是。()。(1分)A. inta10=(0z0z0);B. inta10=;C. inta2=0zlz2;D. inta10=10*l
12、;31 .以下能正确计算10!的程序段是()。(1分)A. doi=l;s=l;s=s*i;i+;while(i=10);B. doi=l;s=0;s=s*i;i+;while(i=10);C. i=l;s=l;dos=s*i;i+;while(i=10);D. i=l;s=0;dos=s*i;i+;while(i=10);32 .写出“m被n整除”的C语言表达式(1分)A. m%n=0B. mn=0C. m%n=0D. mn=033 .若有定义int(*pt)3;,则下列说法正确的是(1分)A.定义了基类型为int的三个指针变量B.定义了基类型为int的具有三个元素的指针数组PtC.定义了一
13、个名为*pt、具有三个元素的整型数组D.定义了一个名为Pt的指针变量,它可以指向每行有三个整数元素的二维数组34 .以下叙述正确的是()。(1分)A.在C程序中,main函数必须位于程序的最前面B.在C程序的每一行只能写一条语句C.C语言本身没有输入输出语句D.在对一个C程序进行编译的过程中,可发现注释中的拼写错误35.若x、i、j和k都是int型变量,则计算下面表达式后,x的值为x=(i=4,j=16,k=32)()。(1分)A.4B. 16C. 32D. 5236.有intx=3,y=4,z=5;则下面表达式中值为O的是()。(1分)A.,x,a,yB. =yC. xI|y+z&y-zD.
14、 !(xamid)2;elsereturn(mid);)return(-l);)()o(1分)A. high=mid-lB. high=mid+lC. Iow=mid-1D. Iow=mid+142 .以下叙述中正确的是o(1分)A.函数可以有参数也可以没有参数B.函数既可嵌套定义又可递归调用C.函数须有返回值,否则不能调用D.主函数必须书写在子函数之前43 .若有以下的定义、说明和语句,则值为IOl的表达式是OstructCWinta;int*b;)*P;intO=l12hxl=31z32;structCWx2=100,0,300l;p=x;(1分)A. *p-bB. p-aC. +(p-a
15、)D. (p+)-a44 .以下描述正确的是()。(1分)A. goto语句只能用于退出多层循环。B. switch语句中不能出现continue语句。C.只能用ContinUe语句来中止本次循环。D.在循环中break语句不能独立出现。数45 .若使用一位数组名作为函数实参,则以下正确的说法是()。(1分)A.必须在主调函数中说明此数组的大小B.实参数组类型与形参数组类型可以不匹配C.在被调函数中,不需要考虑形参数组的大小D.实参数组名与形参数组名必须一致46 .Sl和s2已正确定义并分别指向两个字符串。若要求:当Sl所指串大于s2所指串时,执行语句S;则以下选项中正确的是(1分)A. if
16、(sls2)S;B. if(strcmp(slzs2)S;C. if(strcmp(s2zsl)0)S;D. if(strcmp(sl,s2)O)S;47 .若有以下定义intx10,*pt=x;则对X数组元素的正确引用是o(分)A. *&x10B. *(+3)C. *(pt+10)D. pt+348 .在C语言中,char型数据在内存中的存储形式是(1分)A.补码B.反码C.原码D.ASCII码49 .设有如下定义:structTintn;doublex;d,*p;,下列语句中正确的是(1分)A. d-n=10;B. p=&d;C. p=&d.n;D. d-=10;50 .以下选项中能表达合
17、法常量的是(1分)A.整数:1,200B.实数:1.5E2.0C.字符斜杠:zVD.字符串:007”51 .以下能对二维数组a进行正确初始化的语句是。()。(1分)A.lnta2=l,Ozl5,2z3);B.nta3=l,2z3,4,5z6);C.lnta24=l,2,3L4,5L6);D.lnta3=lz04Ll;52 .设有程序段intk=10;while(k=0)k=k-l;则下面描述中正确的是()。(1分)A.while循环执行10次B.循环是无限循环C.循环体语句一次也不执行D.循环体语句执行一次53 .以下程序段完全正确的是。(1分)A. int*p;scanf(%d,&p);B.
18、 int*p;scanf(%dzp);C. intk,*p=&k;scanf(%d,p);D. intk,*p;*P=&k;scanf(,%dzp);54 .数字字符0的ASCH码值为48,以下程序运行后的输出结果是main()chara-l,b=2;Printf(”%c,,b+);printf(%dn,zb-a);)(1分)A. 3,2B. 50,2C. 2z2D. 2z5055 .以下程序的正确运行结果是()。#includevoidnum()externintxzy;inta=15,b=10;=a-b;y=a+b;)intxzy;main()inta=7,b=5;=a+b;y=a-b;n
19、um();Printf(%d,%dn,x,y);)(1分)A. 12,2B. 12,25C. 12t25D. 5,256 .一个函数返回值的类型是由决定的(1分)A.return语句中表达式的类型B.在调用函数时临时指定C.定义函数时指定的函数类型D.调用该函数的主调函数的类型57.以下描述中正确的是()。(1分)A.由于d。-WhiIe循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句。B.do-while循环由do开始,用while结束,在While(表达式)后面不能写分号。C.在do-while循环体中,一定要有能使while后面表达式的值变为零(假。的操作。D.do-w
20、hile循环中,根据情况可以省略while。58 .下列条件编译中XXX可表示为()。#xxx标识符程序段1#else程序段2#endif(1分)A. define或includeB. ifdef或includeC. ifdef或ifndef或defineD. ifdef或ifndef或if59 .假定已有声明“chara30,*p=a,则下列语句中能将字符串ThisisaCprogram.”正确地保存到数组a中的语句是。(1分)A. a30=ThisisaCprogram.;B. a=ThisisaCprogram.;C. p=ThisisaCprogram.;D. strcpy(p,Thi
21、sisaCprogram.);60 .以下关于C语言数据类型使用的叙述中错误的是(1分)A.若要准确无误差的表示自然数,应使用整数类型B.若要保存带有多位小数的数据,应使用双精度类型C.若要处理如“人员信息等含有不同类型的相关数据,应自定义结构体类型D.若只处理真和假两种逻辑值,应使用逻辑类型61,函数返回值的类型应由决定(1分)A. return中的表达式类型B.调用该函数的主调函数类型C.定义函数所指定的类型D.实参类型62.若有定义语句:intkl=10,k2=20;,执行表达式(kl=klk2)M(k2=k2kl)后,kl和k2的值分别为(1分)A.0和1B. 0和20CIo和1D.1
22、0和2063 .若X是ini型变量,以下程序段的输出结果是for(x=3;x6;x+)Printf(X%2)?(*%d):(#%dn),x);(1分)A. *3#4B. #3*4C. #3*4#5D. *3#4*564 .下面程序段的运行结果是。charc=,tv0willn;printf(%d,strlen(c);()。(1分)A. 3B. 6C. 9D. 1465 .以下选项中错误的是(1分)A. charal10;al=,math;B. chara2=,m,z,a7t7h);C. chara310=math;D. char*a4;a4=math;66 .已有定义语句int*p;以下能动态
23、分配一个整型存储单元,并把该单元的首地址正确赋值给指针变量p的语句是()。(1分)A. *p=(int*)malloc(sizeof(int);B. p=(int*)malloc(sizeof(int);C. p=*malloc(sizeof(int);D. free(p);67 .下面程序的运行结果是。main()inti,j,a=O;for(i=0;i2;i+)for(j=0j4J+)if(j%2)break;a+;a+;)printf(%dn,za);)(1分)A. 4B. 5C. 6D. 768 .if(?)printf(x=%d,y=%d,z=%dn*,x,y,z);)(1分)A.
24、i/resuIt=IB. i=resultC. i!=resultD. i=resultE. .下面程序段的运行结果是。charc5=Cb,0,c0,);)o(1分)A.,ab,B.abC.abcD.abfl(表示空格)70.设有定义d。UbIea10,*s=a;,以下能够代表数组元素a3的是(1分)A(*s)3B. *(s+3)C. *s3D. *s+371.若有说明:StatiCinta34;则数组中各元素。()。(1分)A.可在程序的运行阶段得到初值OB.可在程序的编译阶段得到初值OC.不能得到确定的初值D.可在程序的编译或运行阶段得到初值O72.下列定义数组的语句中,正确的是(1分)A
25、.intN=IO;intxN;BXdefineNIOJntN;C. intx0.10;D. intx;73 .若有声明rtchara5=A,B,C,D,E,*P=a,i;,则以下语句中不能正确输出a数组全部元素值的是。(1分)A. for(i=0;i5;i+)printf(,%c,ai);B. for(i=OJ5;i+)printf(%c,*(a+i);C. for(i=0;i5;i+)printf(%c*p+);D. for(i=0;i5;i)printf(,%cz*a+);74 .对for(表达式1;表达式3)可理解为()。(1分)A. for(表达式1;0;表达式3)B. for(表达式
26、1;1;表达式3)C.在for(表达式l;null;表达式D.缺少一个表达式75 .以下不能将S所指字符串正确复制到t所指存储空间的是O(1分)A. while(*t=*s)t+;s+;B. for(i=0;ti=si;i+);C. do*t+=*s+;while(*s);D. for(i=0J=0;ti+=sj+;);76 .循环体语句执行一次()。(1分)A. E=OB. E!=lC. E!=0D. E=177 .以下叙述中正确的是(1分)A.在C程序中无论是整数还是实数,只要在允许范围内都能准确无误的表示B.在C程序中只要是整数在允许范围内都能准确无误的表示C.在C程序中只要是实数在允许
27、范围内都能准确无误的表示D.在C程序中无论是整数还是实数,都无法准确无误的表示78 .若有定义:intbb8;o则以下表达式中不能代表数组元bbl的地址的是(1分)A. &bbO+lB. &bblC. &bbO+D.bb+179.若有数组A和B的声明staticcharA=zzABCDEF,B=A,B,C,D,E,F);,则数组A和数组B的长度分别是(1分)A.7,6B.6,7C.6,6D.7,780.为了避免在嵌套的条件语句if-else中产生二义性,C语言规定:else子句总是与配对。()o(1分)A.缩排位置相同的ifB.其之前最近的没有else配对的ifC.其之后最近的ifD.同一行上
28、的if81.下面程序的功能是求算式xyz+yzz=532中x,y,z的值(其中XyZ和yzz分别表示一个三位数),请选择填空。#includemain()intx,y,z,i,result=532;for(x=l;x10;x+)for(y=l;y10;y+)for(?);z10;z+)i=100*x+10*y+z+100*y+10*z+z;(1分)A. z=xB. z=lC. z=OD. z=y82 .以下是一个自定义函数的头部,其中正确的是o(1分)A. intfun(intx,y)B. intfun(intx,intx)C. intfun(intxzinty)D. intfun(charx
29、Jnty)83 .下面叙述中正确的是(1分)A.带参数的宏定义中参数是没有类型的B.宏展开将占用程序的运行时间C.宏定义命令是C语言中的一种特殊语句D.使用#include命令包含的头文件必须以“.h为后缀84 .下列程序的输出结果为()。main()structdataintyear,month,day;today;unionlongi;intk;charch;mi;printf(%d,zSizeoffstructdate);printf(%dn,zsizeof(mix);)(1分)A. 6z2B. 6,4C. 8,4D. 8,685 .设变量n为float,m为int类型,则以下能实现将n
30、中的数值保留小数点后两位,第三位进行四舍五入的表达式是()。(1分)A. n=(n*100+0.5)100.0B. m=n*100+0.5,n=m100.0C. n=n*100+0.5100.0D. n=(n100+0.5)*100.086 .有以下程序#include#defineS()4*+lmain()intk=5J=2;printf(%dnzS(k+j);程序运行后的输出结果是(1分)A. 197B. 143C. 33D. 2887.逻辑运算符两则运算对象的数据类型()o(1分)A.只能是。或1B.只能是。或非。正数C.只能是整型或字符型数据D.可以是任何类型的数据88 .在一个C源程
31、序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是。()。(1分)A. externB. registerC. autoD. static89 .已知:chars4=cha;char*p;执行语句p=s;Printf(%c,*p+D;后,其输出为(1分)A. cB.bChD.d90.以下函数binary的作用是应用折半查找法从存有10个整数的a数组中对关键字m进行查找,若找到,返回其下标值;反之,返回-1。请选择填空()。intbinary(intaJntm)intlow=0zhigh=9zmid;while(low=high)mid=(low+high
32、)2;if(mamid)1;(1分)A.high=mid-lB. high=mid+lC. Iow=mid-1D. Iow=mid+191.有以下程序#include#includemain()charx=STRING;0=0;xl=,0;x2=,0,;printf(%d%dn”,sizeof(),strlen(x);)程序运行后的输出结果是(1分)A. 61B. 70C. 63D. 7192 .一个C程序的执行是从()。(1分)A.本程序的main函数开始,到main函数结束B.本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C.本程序的main函数开始,到本程序文件的最后一个函数
33、结束D.本程序文件的第一个函数开始,到本程序main函数结束93 .若有结构体类型定义typedefstructtestintx,y2JTEST;,则以下声明中正确的是_o(1分)A. structTESTx;B. structx;C. testx;D. TESTx;94 .下列程序段的输出结果是intizx33=9,8,7z6,5A3,2zlL*P=Stll;for(i=0;inet=p-next;p-net=q;C. q-next=NULL;p-next=q;D. p-next=q;q-net=p-next;98 .C语言程序的基本单位是(1分)A.程序行B.语句C.函数D.字符99.有以
34、下定义:inta;longb;doublex,y;则以下选项中正确的表达式是(1分)A. a%(int)(x-y)B. a=X!=y;C. (a*y)%bD. y=x+y=100 .若函数中有定义语句:intk则O(1分)A.系统将自动给k赋初值0B.这时k中的值无定义C.系统将自动给k赋初值-1D.这时k中无任何值101 .有下面程序段,上机运行,将。chara3,b=China;a=b;printf(%s,za);()。(1分)A.输出ChinaB.输出ChiC.输出ChD.编译出错102 .若二维数组a有m列,则计算任一元素aij在数组中位置的公式为(假设a00位于数组的第一个位置上)。
35、()。(1分)A.i*m+jB.j*m+iC. i*m+j-lD. i*m+j+l103.下面函数的类型是ff(floatx)printf(%dn*x);)(1分)A.与形参X的类型相同B. void类型Cint类型D.无法确定104 .下列说法中错误的是。(1分)A.构成数组的所有元素的数据类型必须相同8. 一维数组元素的下标从1开始C.引用数组元素时下标越界不报错,但下标越界的元素的值不确定D.数组元素的下标可以是整型表达式105 .若有以下定义和语句:structstudentintage:intnum;;structstudentstu3=1001z20z1002,19)41003z2
36、1;main()structstudent*p;p=stu;.)则以下不正确的引用是()(1分)A. (p+)-numB. p+C. (*p).numD. p=&stu.age106 .以下函数的类型是。fun(float)floaty;y=3*x-5.5;returny;(1分)A.intB.不确定C. voidD. float107 .下面程序的运行结果是()。ftincludemain()i11ti;for(i=l;i=5;i+)if(i%2)printf(*);elsecontinue;printf();)printf($n);)(1分)A. *#*#*#$B. #*#*$C. *#$
37、D. #*#*$108 .若要定义一个具有5个元素的整型数组,以下错误的定义语句是O(1分)A. inta5=0;B. intb=OOO;C. intc2+3;D. inti=5zdi;109 .以下关于运算符优先顺序的描述中正确的是()。(1分)A.关系运算符算术运算符赋值运算符逻辑运算符B.逻辑运算符V关系运算符算术运算符V赋值运算符C.赋值运算符逻辑运算符关系运算符算术运算符D.算术运算符V关系运算符赋值运算符逻辑运算符110.下面程序的运行结果是。#includemain()charstr=SSSWLIAzc;intk;for(k=2;(c=strk)!=0;k+)switch(c)c
38、aseT:+k;break;case,L,xontinue;default:putchar(c);continue;)putchar(,*);)()o(1分)A.SSW*B.SW*C.SW*AD.SW111 .若有声明1OngfUn(int*x,intn,long*s);inta4=l,2,3,4);longb,c;,则以下函数调用形式中正确的是O(1分)A. c=fun(az4zb);B. c=fun(a,4,&b);C. c=fun(a(4z4zb);D. c=fun(a,4,&b);112 .表达式:(int)(double)9/2)-(9)%2的值是O(1分)A.0B.3C.4D.5113 .以下if语句语法正确的是()。(1分)A. if(xO)printf(,%f,x)elseprintf(%f-);B. if(xO)x=x+y;printf(%f,x);elseprintf(%fz-x);C. if(xO)x=x+y;Printf(%f,x);elseprintf(,%f,-x);D. if(xO)x=+yjprintf(,%f,z)elseprintf(,%fz-);114 .算术运算符、赋值运算符和关系运算符的运算优先级按从高到低的顺序依次为(1分