《蚌埠医学院2022年计算机C语言模拟.docx》由会员分享,可在线阅读,更多相关《蚌埠医学院2022年计算机C语言模拟.docx(77页珍藏版)》请在课桌文档上搜索。
1、蚌埠医学院2022年计算机C语言模拟(一)总分:100分考试时间:60分钟注意事项: 凡漏填、错填或书写字迹不清的答卷,影响评卷结果的,贲任由考生自负。 作答时须保持答题卡整洁,不得破损、折皱、沾水(汗 考试结束,考生要按照监考员的指令有序、错峰离开考场一、单项选择题(每小题2分,共100分)1、若Ch为char型变量,k为int型变量(已知字符a的ascii十进制代码为97),则以下程序段的执行结果是och=a;k=12;printf(r,%x,%o,r,ch,ch,k);printf(r,k=%dnr,k);A、因变量类型与格式描述符的类型不匹配,输出无定值B、输出项与格式描述符个数不符,
2、输出为零值或不定值C、61,141,k=%dD、61,141,k=%122、若有定义:doublea=22;inti=0,k=18;则不符合C语言规定的赋值语句是A、i=(a+k)=(ik)B、 i=a%llC、 a=a+,i+D、 i=!a3、关于结构化程序设计原则和方法的描述错误的是oA、选用的结构只准许有一个入口和一个出口B、复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现C、不允许使用GOTO语句D、语言中若没有控制结构,应该采用前后一致的方法来模拟4、以下程序运行后的输出结果是oincludemain()ints=0,k;for(k=7;k=0;k)switch(k)(case1:
3、case4:case7:s+;break;case2:case3:case6:break;case0:case5:s+-2;break;)printf(s=%dn,s);)A、s=5B、s=lC、s=3D、s=75、若有定义:intx,*pb;则正确的赋值表达式是。A、 Pb=&XB、 pb=XC、 *pb=&xD、 *pb=*x6、语句WhiIe(!e);中的表达式!e等价于()。A、 E=OB、 E!=lC、 E!=0D、 E=I7、以下能对一维数组a进行正确初始化的语句是oA、inta10=(0,0,0,0,0)B、inta10=;C、inta11=0;D、inta10=10*l;8、下
4、列运算符中优先级最高的算符是oA、!B、C、-=D、&9、字符串指针变量中存入的是oA、字符串B、字符串的首地址C、第一个字符D、字符串变量10、下述标识符中,()是合法的用户标识符。A、A&BB、 voidC、 _studentD、ab*11、以下叙述中正确的是oMC语言的源程序不必通过编译就可以直接运行B、C语言中的每条可执行语句最终都将被转换成二进制的机器指令C、C源程序经编译形成的二进制代码可以直接运行D、C语言中的函数不可以单独进行编译12、按照标识符的要求,下列选项中,()符号不能组成标识符。A、连接符B、下划线C、大小写字母D、数字字符13、一个C语言程序总是从开始执行。A、主过
5、程B、主函数C、子程序D、主程序14、以下程序输出的结果为0main()(char*alpha6=nabcdr,efghr,ijkl,mnop11,HqrstH,uvwx,);char*p;inti;p=alpha;for(i=0;i4;i+)printf(%sn,pi);a、AbcdefgiiijklB、ABCDc、AbcdefghijklmnopD、 AEIM15、若有以下程序段:inta=0,b=0,c=0;c=(a-=a-5),(a=b,b3);printf(,%d,%d,%a,a,b,c);执行后的输出结果是OA、 3,0,-10B、 0,0,5C、 -10,3,-10D、 3,0,
6、316、以下for语句构成的循环执行了次。#includedefineN2defineMN+ldefineNUM(M+1)*M2main()inti,n=0;for(i=l;i,XYznB、nVisualBasic,visualbasie,C、the=thereD、IntegerVInt18、有以下程序main()ints=0,a=l,n;scanf(,%d,&n);do(s+=l;a=a-2;while(a!=n);printf(,%dn,s);)若要使程序的输出值为2,则应该从键盘给n输入的值是A、-1B、-3C、-5D、019、下列数组说明中,正确的是OA、 intarray4;B、 i
7、ntarray口;C、intarray口5;D、intarray3;20、有以下程序structs(intx,y;)data2=10,100,20,200);main()(structs*p=data;printf(,%dnr,+(p-x);)程序运行后的输出结果是。A、10B、11C、20D、2121、以下叙述正确的是oA、可以把define和if定义为用户标识符B、可以把CIefine定义为用户标识符,但不能把if定义为用户标识符C、可以把if定义为用户标识符,但不能把define定义为用户标识符D、define和if都不能定义为用户标识符22、能正确表示逻辑关系b=10或aV=0”的c语
8、言表达式是。A、a=10ora=10B、a=0a=10&a=10ia=023、以下叙述正确的是oA、C程序中各函数之间既允许直接递归调用,也允许间接递归调用B、C程序中各函数之间不允许直接递归调用,也不允许间接递归调用C、C程序中各函数允许直接递归调用,不允许间接递归调用D、C程序中各函数之间不允许直接递归调用,允许间接递归调用24、若有以下程序段,w和k都是整型变量:w=k;lb:if(w=0)gotole;w-;printf(n*w);gotolb;le:.则不能与上面程序段等价的循环语句是oA、for(w=k;w!=0;w-)printf(,*r,);B、w=k;while(w!=O)p
9、rintf(,*r,);w+;C、w=k;dow;printf(w*w);while(w!=0);D、for(w=k;w;一w)printf(,*h);25、对于代码charcl8;scanf(m%sm,cl);printf(,n%sn,cl);在程序运行时,输入了thisprettyboy”,则对应的运行输出显示结果是A、 thispreB、 thisC、 thisprettyboyD、数组越界,不能显示26、若已定义inta,则表达式a=10,a+10,a+的值是A、20B、10C、21D、1127、以下能正确定义二维数组的是oA、inta3;B、inta3=2*3;C、inta3=;D、
10、inta23=1,2,3,4;28、下列数据中,为字符的是oA、 ABB、CsIIowD.,A,29、在宏定义#CIefinePI3.14159中,用宏名代替一个。A、常量B、单精度数C、双精度数D、字符串30、以下叙述正确的是oA、C语言程序是由过程和函数组成的B、C语言函数可以嵌套调用,例如:fun(fun(x)C、C语言函数不可以单独编译D、C语言中除了Inain函数,其他函数不可以作为单独文件形式存在31、以下叙述中,不正确的是oA、在一个函数中,可以有多条return语句B、函数的定义不能嵌套,但函数的调用可以嵌套C、函数必须有返回值D、不同的函数中可以使用相同名字的变量32、使用共
11、用体变量,不可以oA、节省存储空间B、简化程序设计C、进行动态管理D、同时访问所有成员33、有关C语言的主函数描述正确的是oA、C程序可以有多个main函数B、C程序可以没有main函数C、C程序有且只有一个main函数D、C程序不一定从main函数开始执行34、以下关于逻辑运算符两侧运算对象的叙述中正确的是oA、可以是任意合法的表达式B、只能是整数0或非0整数C、可以是结构体类型的数据D、只能是整数0或135语句charStrI20=a0,str210=programe0;Strlen(StrCat(Str1,Str2)执行的结果是。A、1B、9C、10D、2036、以下的for循环次数是多
12、少次?for(x=0,y=0;(y!=123)Ii(x4);x+);A、执行3次B、执行4次C、循环次数不定D、是无限循环37、下面各语句行中,能正确进行字符串赋值操作的语句是oA、 charST5=hABCDEwJ;B、 charS5=,A,B,C,D,E,;C、 char*S;S=hABCDEm;D、char*S;scanf(,%Sr,S);38、下列程序执行后输出的结果是ointd=l;fun(intp)intd=5;d+=p+;printf(,%d,d);)main()inta=3;fun(a);d+=a+;printf(,%dnr,d);)A、8,4B、9,6C、9,4D、8,539
13、、二维数组a的每个元素是由6个字符组成的串,其行下标i=0,l,8,列下标j=l,2,10o若a按行先存储,元素a8,5的起始地址与当a按列先存储时的元素()的起始地址相同。设每个字符占一个字节。A、A8,5B、 A3,10C、 A5,8D、A0,940、定义共用体的关键字是OA、 unionB、 enumC、 structD、 typedef41、在C集成环境执行菜单命令运行,若运行结束且没有系统提示信息,说明一A、源程序有语法错误B、源程序正确无误C、源程序有运行错误D、源程序无编译.运行错误,但仅此无法确定其正确性42、二进制数IOlooI转换成十进制整数是oA、41B、43C、45D、
14、3943、选择出合法的if语句(设intx,a,b,c;)。A、if(a=b)x+;B、if(a=b)x+;C、if(ab)x+;D、if(a=b)x+;44、若有程序段:x=99;WhiIe(X-2)X;则循环结束时,X=oA、99B、2C、1D、045、已有以下数组定义和f函数调用语句,则在f函数的说明中,对形参数组array的错误定义方式为。inta34;f(a);A、 f(intarray6)B、 f(intarray3)C、 f(intarray4)D、 f(intarray25)46、若有定义:Char*pl,*p2,*p3,*p4,ch;则不能正确赋值的程序语句为A、pl=&ch
15、;scanf(i,%cm,pl);B、p2=(char*)malloc(1);scanf(,%ch,p2);C、*p3=getchar();D、p4=&ch;*p4=getchar();47、以下能正确定义一维数组的选项是A、intnumB、intnumNC、intnum0.100D、intN=100;48、不合法的常量是:oA、2B、C、3D、48349、下列选项中,值为1的表达式是oA、 l-10,B、 1-,O,C、T-OD.,0,0,50、在一个c源程序文件中所定义的全局变量,其作用域为A、由具体定义位置和extern说明来决定范围B、所在程序的全部范围C、所在函数的全部范围D、所在文
16、件的全部范围2022年计算机C语言模拟(一)参考答案1一、单项选择题1、c2、B3、C4、D5、A6、A7、C8、A9、BIOsCIlsB12、A【解析】本题考核的标识符定义。规定标识符由大小写字母、数字字符(09)和下划线组成,并且以字母或下划线开始,后跟0个或多个字母,数字字符或下划线。由此可知A)选项中的连接符不能用于组成标识符。13、B14、C【解析】alpha0指向uABCD的首地址;alp解指向uEFGHn的首地址;alpha2向uIJKL的首地址,依此类推。当执行p=alpha后,P指向指针数组alpha的首地址。for循环中输出了4个字符串。15、B16、C17、B【解析】用关
17、系运算符比较两个操作数时,如果两个操作数是字符型的,按字符的ASeIl码从左到右一一比较,即先比较第1个,若相同再比较第2个,依次比较,直到比较完或不同为止。选项A中两个字符串前2个字符相同,后1个不同,“Z”的ASCll值“Z”的ASCIl值,故uXYZlnt,返回False。选项B中两个字符串不完全一样,有大写和小写的字符,不等。所以返回TrUe。故B选项正确。18、B19sA20、B21、B【解析】C语言中的保留字,而define不是保留字。用户标识符不允许使用保留字。22、D【解析】在C语言中,逻辑运算符有与&、或|、非!,关系运算符有大于、小于、大于等于、小于等于二、等于=:,根据逻
18、辑关系很容易看出,符合条件的选项为Do23、A24、C25、B26、B27、B28、D29、D30、B31、C【解析】函数不一定有返回值。32、D33、C34、A【解析】C语言的逻辑运算符比较特别,它的操作数没有明确的数据类型,可以是任意合法的表达式,所以选择A35、B36、D37、C38、A39、B【解析】二维数组A0:8,1:10,设起始地址为0,数组元素Ai,j按行存储公式为:1.oc(Ai,j)=Ll+(i-l)2d+(j-l)d1数组元素Ai,j按列存储公式为:LoC(Ai,j)=Ll+G-l)2d+(i-l)d,可得i=3,j=1040、A41、D42、A【解析】二进制数转换成十进
19、制数的方法是将二进制数按权展开:(101001)2=l25+024+l23+022+021+l20=4143、A【解析】A虽然是赋值语句,但是在逻辑运算中自动将赋值语句的结果当作逻辑值,方法是,如果赋值语句的结果是非零值则当作逻辑真,否则当作逻辑假。C语言中关系运算符有(小于)、(大于)、=(大于等于)、=(小于等于)、二二(等于)、!二(不等于)等六种,可见其他的条件表达式中的关系符写错了。44、B45、B46、C47、B【解析】本题的考查点是一维数组的定义。数组的常量表达式中可以包括整型常量和符号常量,不能包括变量。也就是说,C不允许对数组的大小作动态定义,即数组的大小不依赖于程序运行过程
20、中变量的值,所以选项A不正确。而选项B事先定义一个字符常量N,所以可以在数组中作常量表达式,选项B正确。而选项C中不能用区间表示数组大小;在D中N虽然被赋为100,但N仍然为变量,所以不对。故本题答案为Bo48、D49、B【解析】在C程序中,字符量可参与任何整数运算。字符参与运算时,首先要将字符转换为对应的ASCIl码值再参与整数运算。字符T对应的ASCll码值是49,字符O对应的ASCll码值是48,字符0是字符串结束标识符NULL其对应的ASCll码值是0。50、A【解析】全局变量的作用域是从声明处到文件的结束。所以选择A)蚌埠医学院2022年计算机C语言模拟(二)总分:100分考试时间:
21、60分钟注意事项: 凡漏填、错填或书写字迹不清的答卷,影响评卷结果的,责任由考生自负。作答时须保持答题卡整洁,不得破损、折皱、沾水(汗)。 考试结束,考生要按照监考员的指令有序、错峰离开考场一、单项选择题(每小题2分,共100分)1、一个变量的指针就是OA、变量的地址B、变量的值C、变量的名称D、变量的类型2、表达式Strlen(x69082n)的值是。A、1B、2C、3D、43、能正确表示a和b同时为正或同时为负的逻辑表达式是oA、(a=0Ilb=0)&(a0Ilb=0&b=0)&(a0&b0)&(a+bO4、下列程序是死循环的是oA、for(;;)B、 ints-36;while(s)=s
22、;C、 intm-10;dom一;while(m0);D、 intn-5;while(nl)n;if(ny?x:y;)intf2(intx,inty)(returnxy?y:x;)main()(inta=4,b=3,c=5,d,e,f;d=fl(a,b);d=fl(d,c);e=f2(a,b);e=f2(e,c);f=a+b+c-d-e;printf(w%d,%d,%dnw,d,f,e);)执行后输出的结果是。A、3,4,5B、5,3,4C、5,4,3D、3,5,416、已知#intt=0;while(t=l).则以下叙述正确的是。A、循环控制表达式的值为0B、循环控制表达式的值为1C、循环控
23、制表达式不合法D、以上说法都不对17、函数的值通过return语句返回,下面关于return语句的形式描述错误的是A、return表达式;B、return(表达式);C、一个return语句可以返回多个函数值D、一个return语句只能返回一个函数值18、有以下程序voidfun(int*a,inti,intj)(intt;if(ij)(t=aj;ai=aj;aj=t;i+;尸;fun(a,i,j);main()(intx=2,6,1,8,i;fun(x,0,3);for(i:0;i4;i+)printf(,%2dr,xi);)程序运行后的输出结果是OA. 1268B. 8621C. 8162
24、D、861219、下列关于字符串的说法中错误的是OA、在C语言中,字符串是借助于字符型一维数组来存放的,并规定以字符0作为字符串结束标志B、0作为标志占用存储空间,计入串的实际长度C、在表示字符串常量的时候不需要人为在其末尾加入0D、在C语言中,字符串常量隐含处理成以0结尾20、下列程序的输出结果是o#includestructabc(inta,b,c,s;main()(structabcs2=1,2,3,4,5,6;intt;t=s0.a+sl.b;printf(w%dnw,t);)A、5B、6C、7D、821、若采用双符号位判断溢出,当结果的符号位为11时,表示(13)0A、结果为正溢出B
25、、结果正,无溢出C、结果负溢出D、结果为负,无溢出22、以下不能输出字符a的语句是(注:字符a的ascii码值为65,字符a的ascii码值为97)()oA、print(,%cnr,a,-32);B、print(w%dnn,A,);C、printf(,%cnn,65);D、printf(,%cn,B,-1);23、下列说法不正确的是oA、C语言程序是以函数为基本单位的,整个程序由函数组成B、C语言程序的一条语句可以写在不同的行上C、C语言程序的注释行对程序的运行功能不起任何作用,所以注释应该尽可能少写D、C语言程序的每个语句都以分号结束24、以下叙述正确的是O。A、do-while语句构成的循
26、环不能用其它语句构成的循环来代替.B、do-while语句构成的循环只能用break语句退出.C、用do-while语句构成的循环,在while后的表达式为非零时结束循环.D、用do-while语句构成的循环,在while后的表达式为零时结束循环25、下列关于StrStr()函数的描述,错误的是。A、用于在指定的字符串中查找指定的字符B、用于在指定的字符串中查找指定的子字符串C、该函数接收两个字符指针类型的参数D、该函数若查找到子字符串则返回子字符串的指针,否则返回空指针26、以下运算符中,优先级最高的运算符是()。A、=B、!二C、*(乘号)D、()27、下列一维数组初始化语句中,正确且与语
27、句floata=0,3,8,0,9);等价的是.Axfloata6=0,3,8,0,9);B、floata4=0,3,8,0,9;C、floata7=0,3,8,0,9);D、floata5=0,3,8,0.9;28、设有说明语句:Chara=123;则变量a0A、包含1个字符B、包含2个字符C、包含3个字符D、包含4个字符29、对下述程序的判断中,正确的是Omain()(char*p,s256;P=S;while(strcmp(s,ntheend)(printf(,inputthestring:,);gets(s);while(*p)putchar(*p+);)A、此程序循环接收字符串并输出
28、,直到接收到字符串“theend”为止B、此程序循环接收字符串,接收到字符串“theend”则输出,否则程序终止C、此程序循环接收字符串并输出,直到接收字符串“theend”为止,但因为代码有错误,程序不能正常工作D、此程序循环接收字符串并将其连接在一起,直到接收字符串“theend”为止,输出连接在一起的字符串30、当顺利执行了文件关闭操作时,fclose函数的返回值是()。A、-1B、TRUEC、0D、131、以下程序的运行结果是o#include#CIefineMIN(x,y)(x)ageC、(*p).ageD、student,age35、有以下程序:intf(intx);main()(
29、inta,b=0;for(a=0;a3;a+)(b=b+f(a);putchar(,a+b);)intf(intx)(returnx*x;)程序运行后的输出结果是OA、ABEB、BDIC、BCFD、BCD36、下面程序的运行结果是o4includemain()inta=l,b=10;do(b-=a;a+;)while(b0);printf(,a=%d,b=%dn,a,b);)A、 a=3,b=llB、 a=2,b=8C、 a=l,b=-lD、 a=4,b=937、设有如下定义:intarr=6,7,8,9,10);int*ptr;ptr=art;*(ptr2)=2;printf(,%d,%an
30、,*ptr,*(ptr2);则下列程序段的输出结果为()oA、8,10B、6,8C、7,9D、6,238、以下程序的输出结果是fun(intx,inty)return(xy);main()(inta=l,b=2,c=3,sum;sum=fun(a+,b+,a+b),c+);printf(,%cl,sum);)A、9B、8C、7D、639、下列语句中正确的是oA、char*myString=,He11o-Wor1cl!w;B、charInyString=wHello-World!w;C、charmyStringll=wHelIo-World!,;D、charnlyString12=wHello-
31、World!n;40、下列程序的输出结果是ostructstucharnum10;floatscore3;),intmain()(structstus3n2002l,90,95,85,n20022,95,80,75,n20023100,95,90;structstu*p=s;inti;floatsum=0;for(i=0;iscorei;)printf(n%6.2f,sum);return0;A、260.00B、270.00C、280.00D、285.0041、下列运算符中优先级最低的算符是oA、IlB、!=C、-D、十42、下列选项中不是C语句的是oA、inti;i+;printf(,%dn
32、”,i);B、;C、 a=5,c=10D、;43、执行以下程序段后,w的值为ointW=*a,x=14,y=15;w=(xy)&(wa);A、-1B、NULLC、1D、044、以下程序运行后的输出结果是omain()(inti=0,s=l;for(;)if(i=5)break;i+;s+=i;,Printf(%dn,s);)A、死循环B、16C、15D、1145、设有以下定义和语句:charstr20,program,*p;p=str:则以下叙述中正确的是。A、*P与str0的值相等B、Str与P的类型完全相同C、Str数组长度和P所指向的字符串长度相等D、数组Str中存放的内容和指针变量P中
33、存放的内容相同46、设变量已正确定义,以下不能统计出一行中输入字符个数(不包含回车符)的程序段是OA、n=0;while(ch=getchar()!=inr)n+;B、n=0;while(getchar()!=n)n+;C、for(n=0;getchar()!=tnf;n+)D、 n=0;for(ch=getchar();ch!=inf;n+);47、下列定义数组的语句中正确的是()。A、#definesize10charstrlsize,str2size+2;B、charstr;C、 intnum,10,;D、 intn=5;intann+2;48、定义变量inta;,则表达式a=3,5;执
34、行过后,a的值和表达式的值分别是OA、3,5B、5,3C、3,3D、5,549、宏定义是最常用的预处理功能之一,它用于将一个标识符定义为一个A、单精度数B、双精度数C、常量D、字符串50、已知函数的调用形式:fread(buffer,size,count,fp);其中buffer代表的是OA、一个整型变量,代表要读入的数据项总数B、一个文件指针,指向要读的文件C、一个指针,是指向的输入数据放在内存中的起始位置D、一个存储区,存放要读的数据项2022年计算机C语言模拟(二)参考答案1一、单项选择题1、A2、A【解析】请仔细阅读交规难度:简单3、D4、A5、D6、D【解析】1101101B=109
35、Dt110D=52D,6CH=108D,157O=lllDo显然,选项D最大。7、D【解析】该二维数组表示的是2行3列的一个二维数组,arrl表示的是第2行第1列上的元素,即的8、C【解析】本题考查预处理命令的特点。编译预处理命令的特点有:1为了区分一般的语句,预处理命令行都必须以R开始,结尾不加分号;预处理命令可以放在程序中的任意位置;在程序中凡是以撑开始的语句都是预处理命令行。9、A10、A11、D【解析】C语言的程序是由主函数main()开始运行,由主函数来调用其他函数,所以D是错误的。12、C13、B14、C15、C16、B【解析】t=l是将t赋值为L所以循环控制表达式的值为1。判断t
36、是否等于1时,应用=1,注意“二”与“二二”的用法。17、C【解析】return语句中的表达式的值就是所求的函数值,此表达式值的类型必须与函数首部所说明的类型一致。如果类型不一致,则以函数值的类型为准,由系统自动进行转换。一个return语句只能返回一个值。18、C19、B【解析】0作为标志占用存储空间,但是不计入串的实际长度。当给一个字符型指针赋值时,赋给这个指针的是这个字符串的地址。20、B【解析】在本题中,s0.a=l,sl.b=5,所以输出结果为6。21、D【解析】本题考查定点数加、减法溢出问题。定点数加、减时,若采用双符号位法,即采用两个符号位,如果两个符号位相同,则没有溢出;若不同
37、,则表示出现溢出,而第一符号位才是真正的符号。即两个符号位的高位为1表示负溢出,而高位为0、低位为1则表示正溢出。题目中给出的结果的符号位为IL根据上面的分析,第一个符号位才是真正的符号,那么此数是负数,但两个符号位相同,表示没有溢出。22、B23、C【解析】本题涉及C语言的3个基本知识点:1C语言的源程序是由函数构成的,函数是其基本单位,每一个函数完成相对独立的功能,其中只能包括一个主函数;C语言规定每个语句以分号结束,其书写格式是自由的,一条语句可以写在不同的行上,或者一行也可以写多条语句;8注释行虽然对程序的运行不起作用,但是它可以方便程序员阅读,提高程序的可读性和可移植性,所以书写注释行还是很有必要的。24、D25、A【解析】用于在指定的字符串中查找指定的子字符串26、D