《沈阳大学2022年计算机C语言冲刺卷(含六卷)及答案.docx》由会员分享,可在线阅读,更多相关《沈阳大学2022年计算机C语言冲刺卷(含六卷)及答案.docx(54页珍藏版)》请在课桌文档上搜索。
1、2022年计算机C语言冲刺卷(一)(总分150分,考试时长120分钟)一、单项选择题(每小题2分,共40分)1、如果要求在if后的判断条件是a不等于0,则下列选项中能正确表达这一关系的是OA、a0B、!aC、a=0D、a2、在C语言中,形参的缺省存储类是oA、 autoB、 registerC、 staticD、 extern3、下列关于八进制与十六进制的描述中,错误的是OA、八进制是一种逢八进一的机制B、八进制由0-8这此符号来描述C、十六进制是一种逢十六进一的机制D、十六进制由0-9、A-F这些符号来描述4、c语言中逻辑表达式的值为OA、0或1B、非零值或零值Cxtrue或falseD、t
2、rue或false5、结构化程序设计方法的结构不包括oA、顺序结构B、分支结构C、循环结构D、跳转结构6、下面程序的输出结果是。main()(inta34=1,3,5,7,9,11,13,15,17,19,21,23;int(*p)4=a,i,j,k=O;for(i=0;i3;i+)for(j=0;j=1)&(x=100)&(x=1)(x=100)11(x=1)&(x=100)&(x=D(x=100)&(xbookline#His.age11、数组名作为实参数传递给函数时,数组名被处理为。A、该数组的长度B、该数组的元素个数C、该数组的首地址D、该数组中各元素的值12、下列程序执行后的输出结果
3、是voidfund(inti);voidfunc2(inti);charst=hello,friend!;voidfund(inti)printf(%cn,sti);if(i3)(i+=2;func2(i);)voidfunc2(inti)printf(%cnfsti);if(i3)(i+=2;fund(i);1inti=0;fund(i);printf(n);)A、helloB、helC、hloD、him13、C源程序中的命令include与#define是在阶段被处理的。A、预处理B、编译C、连接D、执行14、以下关于程序中函数的定义、调用和声明的叙述中,正确的是A、函数的定义必须放在该函
4、数的调用之前B、函数的声明必须放在该函数的调用之前C、函数的定义必须放在该函数的声明之前D、函数的声明必须放在该函数的定义之前15、执行Printf(Rx,100);后的输出结果是。A、100Bs0x100C、0X64D、6416、下面对do-while结构的描述中,不正确的是。A、循环体至少执行一次B、属于“直到型”循环C、与WhiIe语句执行情况相同D、先执行循环体,再计算终止条件,若结果为true,重复执行循环体,直到布尔表达式的值为falso17、在C语言中,下面那种数据类型不属于构造类型A、枚举类型B、数组类型C、结构体类型D、共用体类型18、以下程序输出的结果是Itincludev
5、oidmain()inta=1,2,3,4,5,i,j,s=O;for(i=0;i5;i+)s=s*10+ai;printf(*s=%dn,s);)A、 s=12345B、 s=l2345C、 s=54321D、 s=5432119、下列哪个数组定义是正确的oA、inta5)5;B、INTa10;Cintan;D、inta3+2;20、有以下程序structstu(charname10;intnum:intscore;main()(structsts5=,yangsan,20041,703,1isiguow,20042,580,(wangyin,20043,680,sundanf20044,5
6、50,wpenghua,20045,537,*p5,*t;inti,j;for(i=0;i5;i+)pi=&si;for(i=0;i4;i+)for(j=i+l;jscorepj-score)(t=pi;pi=pj;pj=t;)printf(5d%dn*,sl.score,p1-score);)执行后输出结果是OA、 550550B、 680680C、580550D、580680二、判断题(每小题2分,共20分)()1、指向运算符-的运算级别比自增自减运算级别低。()2、在C程序中,逗号运算符的优先级别最低。()()3、省略else的if语句的一般形式如下,若表达式的值为真,则执行语句1;否则
7、,就什么也不做。if(表达式)语句1()4、循环语句中如果包含若干条语句,则必须用大括号括起来()5、CharS=CLanguage:表示S是一个指向字符串的指针变量,把字符串的首地址赋予s()6、在一个函数中调用另一个被调函数时,如果在所有函数定义之前,已经对函数类型进行了说明,则在各个主调函数中不再进行说明。()7、有数组定义inta22=1,2,3;则a0l的值为Oo()8、输入操作称为写操作,将输入流中的信息存到内存时,使用写函数。()9、指针变量中只能存放地址()10、一个源程序可使用多个文件包含命令,但一个文件包含命令只能包含一个文件。三、填空题(每小题4分,共20分)1、设p=3
8、0,那么执行q=(+p)后,表达式的结果q为,变量P的结果为若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是。2、利用条件运算符的嵌套来完成此题:学习成绩=90分的同学用a表示,60-89分之间的用b表示,60分以下的用c表示。3、下列程序段的运行结果是omain()(intm=l,t=l;for(;;)(m=m*t;t+;if(t4)break;Printf(%dn,m);)4、C语言替换字符的函数是什么?5、在C语言中,从参数的形式看,函数可以分为两类:无参函数和函数。四、程序分析题(每小题5分,共20分)1、以下程序运行的结果为Oincludeintd=1;fu
9、n(intp)(intd=5;d+=p+;printf(%d,M,d);)voidmainO/inta=3;fun(a);d+=a+;printf(%dnr,d);2、函数yahui能够按以下形式构成一个杨辉三角形,请填空。11112113311464115101051defineN11Yahui(intN)inti,j;for(i=l;iN;i+)(ail=l;ai=1;for(1;i,则输出结果是。includemain()inta=l,b;SCanr(%2d%2d”,&a,&b);1006 401003 501002 80 (本题 20 分)printf(%d%dnn,a,b)4、以下程
10、序运行后的输出结果是main()(charc;intn=100;floatf=10;doublex;x=f*=n=(c=50);printf(%d%fn,n,x);)五、编程题(每小题分,共50分)1、从键盘上输入一个4*3的整型数组,找出数组中的最小值及其在数组中的下标。(本题12分)2、编写函数voiddel(char*s,charc),其功能是在S所指字符串中删除与变量c相同的字符,并设计主函数实现:(1)从键盘输入字符串和指定被删除的字符;(2)调用del()函数实现删除操作;(3)输出删除后的字符串。说明:不允许使用除gets和PUtS之外的任何字符串处理库函数。(本题18分)3、若
11、有以下银行卡信息:structcardintid;银行卡号intbonus;/金额);请编写程序,从键盘输入5条银行卡记录,使用结构体数组存储这些数据,并按金额升序排序,输出排序后的结果。【输入形式】5条银行卡记录分行输入,每行数据用空格间隔【输出形式】分5行输出数据,每行数据均使用空格间隔【输入样例】100120100280100350100410100640【输出样例】100410参考答案一、单项选择题1、D【解析】if判断条件的值只能是O或非O,if(a)就是if(!0)的意思。2、A3、B【解析】八进制是由0-7这八个符号来描述的。4、A5、D6、C【解析】P是指向长度为4的一维数组的
12、指针变量,可看作是二维数组a的行指针,可以像使用数组名一样通过p带数组下标的形式来引用数组中元素,变量k最后是元素a川的值。7、C8、A【解析】本题考查C语言编程中函数实参和形参关系的知识。C语言中,数组名代表该数组的起始地址,它指向该数组的开始位置,但是它的值不能被修改。在函数的定义中,可以用数组名作为参数,被声明为数组的形参实际上是一个指针。当实参向形参传递数组时,按值调用传递数组的首地址,数组元素的本身不被第制。因此,如果函数调用时实参是数组名,则形参指针接受到的是实参数组的首地址。9、B【解析】选项A)中的赋值方法为PaSCaI语言赋值格式;C语言中赋值直接为“=,无冒号;选项D)中“
13、x+5=y+2”赋值格式错误,赋值号左边不可以出现常量,也不可以同时出现两个变量。选项C)应改为(float)8%310、AIkC【解析】考查函数的调用。解题要点函数调用的一般形式为:函数名(实参列表)首先调用函数funcl(0),输出H0=hi值变为2,并调用函数func2(2),输出川2=l.i值此时变为4,乂调用函数funcl(4),输出st4=0.此时i值大于等于3,执行完毕。因此,输出结果为hl。考点链接函数调用的一般格式以及函数的返回值。13、A14、B【解析】在程序中,函数定义是指对函数的完整定义,包括函数首部和I函数体,函数调用是指对所定义函数的使用,一个函数只有被调用才能得到
14、执行。函数声明是指函数的定义在后面,而前面需要时它进行调用,这样就需要预先进行声明,以便编洋程序检查调用的合法性。一般来说,函数的声明只是函数首部加上分号即可。函数声明不是必需的,若函数调用在函数定义之后,则无须声明。15、D16、C【解析】While循环属于“当型”循环,可能一次也不执行,是先判断终止条件,为true则执行循环体,否则退出循环。17、A18、A19、D20、C二、判断题1、错误2、正确3、正确4、正确5、正确6、正确7、正确fbr(j=0;j3;j+) if (aijmin)(min= aij;m=i;n=j;1printf(the min is %dn, min);prin
15、lf(posion is %d %d n, m,n);2、#include void del(char *, char);void main()(char str100, ch:Prinlf(请输入字符串:n);gets(str);PrinIf(请输入要删除的字符:n);scanf(%c, &ch);del(str, ch);printf(n删除后的字符串:n);puls(str);void del(char *s, char c)(char *p = s;while (*s)8、错误9、正确10、正确三、填空题k4,=907,ax=607b,c,;O3、244、sircpy(a,b);5、有
16、参四、程序分析题1、8.42.1i=3(2ji3ai-lj-l3、,12344、,220五、编程题1,#includevoidmain()inta43,i,j,minfm,n;printf(Pleaseenterdata:);for(i=0;i4;i+)fbr(j=0;j3;j+)SCanfaij);min=a0(0);m=O;n=O;for(i=0;i4;i+)tamp = aj;aj = aj+l;aj+l = tamp;)for(j = 0;j 5;j+)(printf(%d %dn, aj.id, ajj.bonus);if(*s!=c)*p+=*s;13s+;*p=,0,;3、#in
17、ckide#includestructcard(intid;银行卡号intbonus;金额a(5.tamp;intmain()inti,j;for(i=0;i5:i+)scanf(%d%d,&ai.id,&ai.bonus);for(i=J5;i+)(fbr(j=0;jaj+l.bonus)2022年计算机C语言冲刺卷(二)(总分150分,考试时长120分钟)一、单项选择题(每小题2分,共40分)1、以下叙述中正确的是。A、使用typedef说明新类型名时,其格式是:typede新类型名原类型名B、在程序中,允许用typedef来说明一种新的类型名C、使用typedef说明新类型名时,后面不能
18、加分号D、在使用typedef改变原类型的名称后,只能使用新的类型名2、若有以下定义,inta,b;floatx;则正确的赋值语句是OA、 a=l,b=2B、 b+;Cxa=b=5D、b=int(x);3、表达式:10!=9的值是oA、tureB、非零值C、1D、04、if语句的基本形式为:if(表达式)语句,其中表达式。A、可以是任意合法的表达式B、必须是逻辑表达式C、必须是逻辑表达式或关系表达式D、必须是关系表达式5、下面有关for循环的正确描述是A、for循环只能用于循环次数已经确定的情况B、for循环是先执行循环循环体语句,后判断表达式C、在for循环中,不能用break语句跳出循环体
19、D、for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来6、以下叙述中正确的是OA、数组下标的下限是1B、数组下标的下限由数组中第一个非零元素的位置决定C、数组下标的下限由数组中第一个被赋值元素的位置决定D、Charcl,c2,*c3,c440是合法的变量定义语句7、各种基本数据类型的存贮空间正确的长度排列为。A、charlongintdoubleB、doublelongintcharC、charintlongdoubleD、intlongchardouble8、下列一维数组定义正确的是oA、 x=5;intnumx;B、 constihtx=5;floatnumx;C、 cons
20、tfloatx=5;intnumx;D、 constintx;x=5;intnumx;9、以下选项中,不合法的整型常数是A、 32768B、-56C、03DsOXaf10、以下程序运行后的输出结果是main()(chars=ABCD,*p;for(p=s+l:ps+4;p+)printf(%sn,p);)A、BCDBCDCDDB、ABCDC、BCDD、BCDCDD11、若希望下列的程序运行后输出25,程序空白处的正确选项是main()(inti,j=50,a=7,4,10,5,8;for()j+=ai;print(w%d,j-40);)A、i=l;i4;+iB、i=l;i2;iD、i=2;i4
21、;+i12、以下说法错误的是_oA、由三种基本结构组成的结构化程序不能解决过于复杂的问题B、由三种基本结构组成的结构化程序能解决些简单的问题C、由三种基本结构组成的结构化程序能解决递归问题D、由三种基本结构组成的结构化程序能解决数学上有解析解的问题13、数据和程序以进制代码形式存放在存储器中。A、二B、Cs十D、十六14、下列函数中,用于向控制台输出信息的是?A、scanf()B、printf()C、sum0D、max()15、运行下列程序时,若输入的数据为“1,2,3”,则输出结果是main()(floata,b,c,t;scanf(%f,%f,%f,&a,abc);if(ab)(t=a;a
22、=b;b=t;)if(ac)(t=a;a=c;doc=t;if(bc)(t=b;b=c;c=t;)printf(%f%f%fw,a,b,c);)A、123B、 1.002. 003.003. 00C、321D、3.0000002.0000001. 00000016、执行以下循环语句时,下列说法正确的是oX=-1;X=X*X;while(x=0);A、循环体将执行一次B、循环体将执行两次C、循环体将执行无限次D、系统将提示有语法错误17、以下程序的输出结果是8includestructst(intx;int*y;*P:intdt4=10,20,30,40;structstaa4=50,&dt0,
23、60,&dt0,60,&dt0,60,&dt0,)mainO(p=aa;printfC,%dnn,+(p-x);A、10B、11C、51二、判断题(每小题2分,共20分)()1、关键字是指在编程语言里事先定义好并赋予了特殊含义的单词,也称作保留字。D、6018、以下程序的输出结果是#includevoidfunO(staticinta=0;a+=2;printf(%d,a);)voidmainO(intcc;for(cc=l;cc4;cc+)fun();printf(n);)A、 2222B、 2468C、222D、24619、以下不能正确定义二维数组的选项是A、inta22=1,2;B、in
24、ta2=1,2,3,4;C、 inta22=1,2,3;D、inta2=l,2,3,4;20、有以下程序#includettincludestructa(inta;charb10;doublec;);voidf(structat);main()(structaa=1001,zhangda,1098.0;f(a);pringt(%d,%s,%6.lfn,a.a,a.b,a.c);)voidf(structat)(t.a=1002;strcpy(t.b,changrong);t.c=1202.0;)程序运行后的输出结果是OA、 100ltZhangDa,1098.0B、 1002,ChangRon
25、g,1202.0C、100ltChangRong,1098.0D、1002,ZhangDa,1202.0O()2、C语言中goto语句的用法不符合结构化原则,一般不宜采用。()3、在标准C中,逻辑表达式中只允许出现逻辑型数据。()4、for语句的一般形式如下,若表达式2的值为”假,则结束循环。()5、比较两个字符串是否相等不能通过条件运算符=,()6、要使用标准输入、输出函数,正常情况下应该在文件的开头加上以下内容: #i ncIude Vgraphics. h 或由 ncIude graph ics. h。()7、C语言中,字符串常量存放在字符数组中要有一个结束符,该结束符是0。()8、指针
26、变量,只能作为函数的形参,不可以作函数的实参()9、函数定义在先、调用在后时,vc+允许省略函数声明。()10、当一个C语言程序由多个文件模块组成时,整个程序可以包含多个Inain()函数。三、填空题(每小题4分,共20分)1、C语言中的标识符只能由三种字符组成,他们是字母,数字, 2、设a=12,a定义为整型变量,表达式a*=2+3的值为 。3、下列程序段是从键盘输入的字符中统计数字字符的个数,用换行符结束循环。int n=0, ch; ch=getchar(); while()if ( ) n+; c=getchar();)4、函数 StrIen(12340xy)的值为:。5、在C语言中,
27、函数的返回值是由语句传递的。四、程序分析题(每小题5分,共20分)1、下面的程序是用do while语句求1至1000之间满足一用3除余2; 用5除余3;用7除余2”的数,且一行只打印五个数。请分析程序填空。 ttinclude main() (int i=l,j=0; do ( if( U)(Printf(%4d,i); j=j+l;if(【2】)printf(,n);i=i+l;)whiIe(i1000);2、下面程序的功能是计算1-3+5-7+.-99+101的值,请分析程序填空。#includemain()(inti,t=l,s=0:for(i=l;i=101;i+=2)1 ;s=s+
28、t;2 ;)printf(w%dn,s);3、下面函数func的功能是O#includelongfunc(longnum)(longk=l;num=labs(num);do(k*=num%10;num/=10;)whiIe(num);returnk:)nain()(longn;printf(npleaseenteranumber:);scanf(w%ldn);printf(ntheproductofitsdigitsis%ld.w,func(n);4、下列程序段的运行结果是。样例输出main()36.OO62.20(本题20分)intn,s=0;for(n=l;n=6;n+)(if(n%3=0
29、)continue;s=s+n;printf(%dn,s);)五、编程题(每小题分,共50分)1、编写程序:在第一个循环中从键盘上给a数组的前n(mV100)个数组元素依次赋值;在第二个循环中使a数组前m个元素中的值对称折叠:在最后一个循环中输出折叠以后的a数组的前m个元素例如:当m为5时,如果从键盘上输入的5个数分别为:1.2.3.4.5时,输出应为:12321当m为10时,如果从键盘上输入的10个数分别为:1.2.3.4.5.6.7.8.9.10时,输出应为:1234554321(本题12分)2、编写程序:输入两个字符串Strl和str2,将字符串str2倒置后接在字符串Strl后面。例如
30、:Strl=howdo,str2=?oduoy,结果输出:howdoyoudo?。(本题18分)3、题目描述万里十佳歌手比赛终于开始了,评委席坐了N(N大于等于3,并且N小于80)个评委,他们商量了很久,终于找出一个公正合理的评分方法。每次歌手唱完后,每个评委自己打一个分,然后在N个评委的打分中,去掉一个最高分,一个最低分。然后再把剩下的评委的打分求平均值。但是问题是他们嫌每次拿计算器按实在太烦。作为一名计算机专业学生你用个程序帮帮他们搞定吧。输入输入有多组数据。每组2行,第一行是一个N,代表有N个评委。然后第二行有N个数,每个数用空格隔开,代表每个评委的打分。当输入的N为0的时候结束输入。输
31、出对于每组输入,输入最终这个选手的得分(小数点后面保留2位有效数字)。样例输入3743634716972726749688参考答案的数组元素累加65-50=15即可,D选项中,i下标从0开始,1=2指向第3个数50+22=50+10=60,继续循环60+a3=65+5=65,此时i=4跳出,循环结束。一、单项选择题12、A1、B【解析】顺序结构、选择结构、循环结构是三种基本结构,由三种基本结构所构成的程序称为结构化【解析】本题考查Iypedef的使用方法,Iypedef对己存在的类型使用一个新的名字,选项A总新类型程序,由三种基本结构组成的算法可以解决任何复杂的问题,选项A错误,本题答案A,名
32、应该在原类型名之后,C选项中后面耍加分号,D选项中可以使用原类型名。13、A2、B【解析】数据和程序以二进制代码形式存放在存储器中,存放的位置由地址确定。3、C14、B4、A15、D【解析】本题考查if表达式。if(表达式)中的表达式可以为任何合法的表达式,一般情况下为逻辑、16、A条件表达式,需要注意的是,当等号(=)误写为赋值号(=)时不会报错的,但是其值恒为1。17、C5、D【解析】考查结构体成员数据的引用方法解题要点通过指针来引用结构体成员的方法是(指针变6、D量)-结构体成员名。考点链接结构体变量中的数据引用。【解析】数组下标的下限是Oe因此D选项正确。18、D7、C19、D8、B2
33、0、A【解析】数组的下标不能是变量,不能为非整数,定义为常量的标识符不能再用来赋值,只能在定义二、判断题时初始化。1、正确9、A2、正确【解析】考查整型常数的表示方法。解题要点整型数据一般占2个字节,其取值范围是:-327683、错误+32767,而选项A)超过了整数的取值范围。考点链接实型常数的表示方法。4、正确10、D5、正确【解析】本题考查指向字符串指针的运算方法。执行p=s+l后,指针变量P就指向字符串中的第二个6、错误字符B,然后输出字符串“BCD”并换行:维续执行循环语句,指针变量P指向下一个字符a输出字7、错误符串CD,最后一次循环,P指向字符D,输出字符串“D。8、正确11、D
34、9、正确【解析】要想使程序输出25,则j-40=25,j=65,而j初值是50,所以填入for循环的语句,使引用10、错误#includc#defineN40三、填空题voidfun(char*strl,char*slr2)1、下划线(2、(,60,linti=O,j=O,k=,n;3、,ch=,n,ch=O,O,ChV=9”charch;4、9Char*pl=strl;5、return#TetUm()Char*p2=str2;四、程序分析题While(*(pl+i)I+;k1i%3=2&i%5=3&i%7=22j%5=0While(*(p2+j)J+;21t=t*i2t=-tiN=j-;3、
35、计算个数的各位数字之积。For(k=j2k+j-)4、12(五、编程题Ch=*(p2+k);Is#defineM5*(p2+k)=*(p2+j);main()I*(p2+j)=ch;Iinti,a(100,t;J*(p2+n)=,0,;for(i=0;iM;i+)For(;*p2;i+)*(pl+i)=*p2+;scanf(,%d,ai);*(pl+i)=,0,;for(i=0;iM/2;i+)aM-i-lJ=aiJ;)for(i=0;iM;i+)PrinIf(%5d”,aiJ);voidmain()prinlf(nM);(charstrlN,str2N);2、先将str2反过来,然后连接到S
36、lrl上面,然后输出。System(,CLS,);#includeprintf(*Inputthestringstrl&str2*n);#includeprintf(nstrl:);Gets(Strl);prinlf(nslr2:);Gets(str2);printf(* The string strl & str2 *nt,);Puts(strl);Puts(str2);fun(strl.st2);printf(* The new string *n);Puts(Strl);3、#includeint main()(int t,n.i,max, min. sum;int scorel02=0
37、;while(scanf(%d,&n)if(n=O)break;fbr(i =0; i n;+i)scanf(%d.&scorei);max =-1;min =101;sum =0;fbr(i =0; i max)max = scorei;if(scorei=0;k)(switch(k)(case1:case4:case7:s+;Csx%2!=0break;D、x%2=0case2:case3:case6:break;2、在下列选项中,不正确的赋值语句是.A、+t;case0:case5:s+=2;B、nl=(n2=(n3=0);break;C、k=i=j;)D、a=b+c=l;)3、下列选项
38、中不会引起二义性的宏定义是一。A、defineS(x)X*xB、defineS(x)(x)*(x)printfC,s=%d,s);A、s=5C、#defineS(x)(x*x)D、ttdefineS(x)(x)*(x)4、设a、b、e、d、m、n均为int型变量,且a=5、b=6、C=7、d=8、m=2、n=2,则逻辑表达式(m=ab)(n=cd)运算后,n的值是。A、OB、1B、s=lC、s=3D、s=76、下列字符串是标识符的是A、aaB、a-classC、2CxintD、3D、LINE15、以下程序运行后的输出结果是一。7、已知整型变量a=13和b=6,则a&b和ab的值分别是。A、413SincludeB、411main()(C、111func(x,y);则变量X和y的值分别是oA、0 和)B、1 和 1C、0 和 2D、1 和213、下面四个选项中,均是合法转义字符的选项是A、二7、,n,B、 、 017 、 ,h,C、 018 、 f