《西安工业大学往年计算机C语言样卷含答案解析.docx》由会员分享,可在线阅读,更多相关《西安工业大学往年计算机C语言样卷含答案解析.docx(14页珍藏版)》请在课桌文档上搜索。
1、往年计算机C语言样卷(一)(总分150分,考试时长120分钟)题号二三四五总分阅卷人分值4020202050150得分题目包括五大部分,单项选择题,判断题,填空题,程序分析题,编程题,请按要求在规定时间内作答。考试中途不能无端离场,否则视为放弃。考试过程中如遇问题请及时向监考老师反馈。一、单项选择题(每小题2分,共40分)1、调试程序是指对程序进行A、编辑B、编译C、查错和排错D、连接【答案】C2、语句While(!e);中的条件!e等价于。A、 e=0B、 e!=lC、 e!=0D、【答案】A3、C语言的基本数据类型包括oA、字符型和数值型B、字符型和逻辑型C、整型和实型D、指针型和数据型【
2、答案】A4、以下叙述中正确的是oA、对于逻辑表达式:a+1Ib+,设a的值为1,则求解表达式的值后,b的值会发生改变B、对于逻辑表达式:a+Mb+,设a的值为0,则求解表达式的值后,b的值会发生改变C、else不是一条独立的语句,它只是if语句的一部分D、关系运算符的结果有三种:0,1,T【答案】C【解析】B选项和A选项中,对于逻辑表达式,其中b的值不会因为表达式的结果发生改变;D选项中,关系运算符的结果有真和假两种。因此C选项正确5、以下循环体的执行次数是_#incIudevoidmain()(inti,j;for(i=0,j=l;istaticD、extern【答案】A8、下面是有关C语言
3、字符数组的描述,其中错误的是oA、不可以用赋值语句给字符数组名赋字符串B、可以用输入语句把字符串整体输入给字符数组C、字符数组中的内容不一定是字符串D、字符数组只能存放字符串【答案】D9、以下叙述中错误的是oA、可以通过typedef增加新的类型B、可以用typedef将已存在的类型用一个新的名字来代表C、用typedef定义新的类型名后,原有类型名仍有效D、用typedef可以为各种类型起别名,但不能为变量起别名【答案】A10、下面各语句行中,能正确进行字符串赋值操作的语句是。A、charST5=fABCDEz,;B、charS5=A,B,C,D,E;C、 char*S;S=ABCDE;D、
4、 char*S;scanf(%S”,S);【答案】C11、有以下程序#includevoidfun(int*a,intn)*fun函数的功能是将a所指数组元数从大到小排序*/(intt,i,j;for(i=o;in-l;j+)for(j=j+l;jn;j+)if(aiaj)(t=ai;ai=aj;aj=t;)main()(intc10=l,2,3,4,5,6,7,8,9,0,i;fun(c+4,6);for(i=0;ici);)程序的运行结果是OA、1,2,3,4,5,6,7,8,9,0,B、0,9,8,7,6,5,1,2,3,4,C、0,9,8,7,6,5,4,3,2,1,D、1,2,3,4
5、,9,8,7,6,5,0,【答案】D12、以下函数fun形参的类型是.fun(floatx)(floaty;y=3*-4;returny;)A、intB、不确定C、 voidD、 float【答案】D13、有以下程序main()inti,s=0;for(i=l;i10;i+=2)s+=i+l;printf(%dn”,s);)程序执行后的输出结果是。A、自然数19的累加和B、自然数110的累加和C、自然数19中的奇数之和D、自然数110中的偶数之和【答案】D14、以下叙述正确的是。A、在对一个C程序进行编译的过程中,可发现注释中的拼写错误B、在C程序中,main函数必须位于程序的最前面C、C语言
6、本身没有输入输出语句D、C程序的每行中只能写一条语句【答案】C15、有以下程序#includemain()(inta=2,b=3,c=4;a*=16(b+)-(+c);printf(zz%dn”,a);程序运行后的输出结果是0A、28B、30C、15D、14【答案】A16、下面程序段的输出结果是.x=3;do(y=;if(!y)(Printf(*);continue;printfCr);while(x=2);A、#B、#*C、死循环D、输出错误信息【答案】C17、以下程序的运行结果是#includestdio.hmain()(structdate(intyear,month,day;today
7、;Printf(%dn”,sizeof(structdate);)A、6B、8C、10D、12【答案】A【解析】在解答本题时应该考虑两个问题:结构体变量的长度及SiZeof()求字节数的运算符。结构体变量的长度是其内部成员总长度之和,本题中,structdate中包含year,month,day三个整型变量。一个整型变量所占的字节数为2o18、下面程序的输出结果是omain()(unsignedintnum,k;num=26;k=l;do(k*=num%10;num/=10;)while(num);printf(/%dnz,k);)A、2B、12C、60D、18【答案】B19、以下叙述中正确的
8、是。A、语句inta8=0;是合法的B、语句inta=0;是不合法的,遗漏了数组的大小C、语句chara2=A,B;是合法的,定义了一个包含两个字符的数组D、语句Char3;a=AB;是合法的,因为数组有三个字符空间的容量,可以保存两个字符【答案】A【解析】B选项中,如给全部元素赋值,则在数组说明中,可以不给出数组元素的个数;C选项中,char2=ab不合法,应为char2=a,选项中,用字符串方式赋值比用字符逐个赋值要多占1个字节,在该选项中应为3个字节。因此A选项正确。20、有以下程序structstu(charname10;intnum;floattotalscore;);voidf(s
9、tructstu*p)(structstus2=zzsundan,z,20044,550,penghua”,20045,537,*q=s;+P;+q;*p=*q;main()(structstus3=,zyangsa11,z,20041,703,z,Iisiguoz,20042,580;f(s);printf(/,%s%d%3.Ofn,sl.name,sl.num,sl.totalscore);程序运行后的输出结果是。A、SunDan20044550BPenghua20045537CLiSiGuo20042580DSunDan20041703【答案】B二、判断题(每小题2分,共20分)()1、
10、i+表示在使用该表达式值之前将i值加1。【答案】错误()2、宏定义在行末加分号。【答案】错误()3、在if语句中,必须出现else。【答案】错误()4、do-while语句先执行循环中的语句,然后再判断表达式是否为真,如果为真则继续循环;如果为假,则终止循环。【答案】正确()5、用StrCat(字符串1,字符串2)连接两个字符串函数时,字符串1的存储空间没有限制。【答案】错误()6、函数的实参可以是常量,变量或表达式【答案】正确()7、任何数组在使用前必须先定义。【答案】正确()8、在标准C语言中,在main函数中定义的变量在整个程序中都是有作用的。【答案】错误()9、C程序中如果对一维数组的
11、全部元素都赋初值,则定义数组时不必指定数组长度。【答案】正确()10、文件是否打开是可以判断的。【答案】正确三、填空题(每小题4分,共20分)1、设inta=12,则表达式a=a+a运算后,a的值是。答案02、逻辑运算符皿、L!中的优先级是O【答案】!&I门3、执行下列的程序段后,正确的结果是ointi=5;while(i=1)i一;printf(,%dz,i);【答案】无限循环#死循环4、语言的函数体一般由和构成【答案】定义语句I执行语句5、以下函数值的类型是ILfun(floatx)floaty;y=3*-4;returny;)【答案】int四、程序分析题(每小题5分,共20分)1、int
12、x=6,y=7;printf(%d,x+);printf(/%dnz,+y);程序的输出结果是o【答案】6,82、改正下列程序中不正确的语句。main()(intn;floats=l.0;for(n=10;nl;n-)s=s+ln;printf(,%6.lfnz,s);【答案】s=s+L0/n3、以下程序运行后的输出结果是o#includemain()inta=200,b=010;printf(,z%d%dn,z,a,b);)【答案】20084、下列程序段的运行结果是ointa=2,*p;p=&a;printf(,%dz,*p);【答案】2五、编程题(每小题分,共50分)1、编写程序:输入两个
13、正整数m和n,求其最大公约数和最小公倍数。(本题12分)【答案】#includeintmain().inta,b,t,r,n;Printf(请输入两个数字:n);scanf(%d%d,&a,&b);if(a=b,令r=amodb设a=kc,b=jc,则k,j互素,否则C不是最大公约数据上,r=a-mb=kc-mjc=(k-mj)c可知r也是C的倍数,且k-mj与j互素,否则与前述k,j互素矛盾,由此可知,b与r的最大公约数也是c,即gcd(a,b)二gcd(b,amodb),得证。2)算法描述:第一步:ab,令r为所得余数(0r第二步:互换:置a-b,b-r,并返回第一步。2、编写一个函数,从
14、传人的m个字符中找出最长的一个字符串,并通过形参指针IIIaX传回该串地址(用*作为结束输入的标志)。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填人所编写的若干语句。试题程序:char*proc(char(*a)81,intnum)(voidmain()(charss1081,*max;intn,i=0;Printf(输入若干个字符串:);gets(ssi);puts(ssi);while(!strcmp(ssi,*)=0)(i+;gets(ssei);puts(ssi);n=i;max=proe(ss,n);printf(,nma
15、x=%sn,max);)(本题18分)【答案】char*proc(char(*a)81,intm)(char*max;inti=0:max=a0:for(i=0;im;i+)if(strlen(max)StrIen(ai)找出最长的字符串max=ai;returnmax;返回最长字符串的地址)3、题目描述有10个学生,每个学生的数据包括学号、姓名、3门课程的成绩。读入这10个学生的数据,要求输出3门课程的总平均成绩,以及个人平均分最高的学生的数据(包括学号、姓名、3门课程成绩、平均分数)。输入共有10行,每行包含了一个学生的学号(整数)、名字(长度不超过19的无空格字符串)和3门课程的成绩(0
16、至100之间的整数),用空格隔开。输出第一行包含了3个实数,分别表示3门课程的总平均成绩,保留2位小数,每个数之后输出一个空格。第二行输出个人平均分最高的学生的数据,与输入数据格式相同。如果有多位个人平均分最高的学生,输出按照输入顺序第一个最高分的学生数据。请注意行尾输出换行。样例输入样例输出85. 6087.9090.40105EEE929394(本题20分)【答案】ttincludeftincludestructpeopleintnum,a,b,c;charname10;intinput(structpeoplestu)for(inti=0;i10;i+)scanf(z,%d%s%d%d%
17、d*,&stui.num,stui.name,&stui.a,festui.b,&stui.c);)intprint(structpeoplestu)doublex=0,y=0,z=0;for(inti=0;i10;i+)x=x+stui.a*l.0;y=y+stui.b*l.0;z=z+stui.c*l.0;)for(inti=0;i=(stui+l.a+stui+l.bstui+l.c)stui+l.num=stui.num;strcpy(stui+l.name,stui.name);stui+l.a=stui.a;stui+l.b=stui.b;stuil.c=stui.c;Iprint
18、f%.2f%.2f%.2fn,x10.0,y10.0,z10.0);printf(z,%d%s%d%d%d11zz,stu9.num,stu9.name,stu9.a,stu9.b,stu9.c);intmain()structpeoplestu10;input(stu);print(stu);return0;)往年计算机C语言样卷(二)(总分150分,考试时长120分钟)题号二三四五总分阅卷人分值4020202050150得分题目包括五大部分,单项选择题,判断题,填空题,程序分析题,编程题,请按要求在规定时间内作答。考试中途不能无端离场,否则视为放弃。考试过程中如遇问题请及时向监考老师反馈。
19、一、单项选择题(每小题2分,共40分)1、以下选项中合法的实型常数是OA、5E2.0B、E-3C、2E0D、1.3E【答案】C【解析】本题考查实型常数的指数表示法,可以肯定的是指数不能为小数即必须为整数。由于符号E前面必须有数字。D在指数符号后面没有数字,是错误的。2、下列选择中,不能用做标识符的是,0A、 1234B、 _1_2C、 int_2_D、 2_int_【答案】D3、字面常量42、4.2、421的数据类型分别是。A、long,double,intB、long,float,intC、int,double,longI)、int,float,long【答案】C【解析】此题考查的知识点是字
20、面常量。对于整型字面常量,只要没有超过C中整数所能表示的范围,C将自动按整数来存储此数,也可以通过在整型字面常量后添加U或1来指定无符号整数或长整数来存储;对于实型字面常量,C将自动按照双精度数来存储,也可以通过在实型字面常量后添加f来指定按单精度数存储。4、以下程序的输出结果是main()(inta=0,i;for(i=;i5;i+)(switch(i)(case0:case3:a+=2;case1:case2:a+=3;default:a+=5;)printf(/%dnz,a);A、31B、13C、10D、20【答案】A5、语句for(k=0;k5;+k)(if(k=3)continue;
21、printf(z/%dz,k);的输出结果为A、012B、 0124C、 01234D、没有输出结果【答案】B6、有以下程序:#includeintf(intt,intn);main()inta4=l,2,3,4,s;s=f(a,2);printf(%dn”,s);intf(intt,intn)if(n0)&(n5)returntn+l+f(t,n-l);elsereturnO;)程序运行后的输出结果是OA、4B、7C、10D、6答案【解析】本题主要考查的是函数的递归调用,子函数f是一个递归函数,所以主函数中执行f(a,2)时,其执行过程是a3+fa,l)=a3+a2+f(a,0)=77、若有
22、以下说明:inta12=1,2,3,4,5,6,7,8,9,10,11,12;charc=a,d,g;则数值为4的表达式是oA、 ag-cB、 a4C、ad-cD、ad-c【答案】D8、下列程序的运行结果是omain()(inta6,i;for(i=2;i3)%5;printf(,%2dz,ai);A2323C、 1212D、 3232D2222【答案】C【解析】本题程序的功能是对数组元素赋值,难点是对表达式4*(i-2*(i3)%5的分析。9、算法具有五个特性,以下选项中不属于算法特性的是。A、有穷性B、简洁性C、可行性D、确定性【答案】B【解析】本题考查的是算法的特性。有穷性、确定性、有零个或多个输入、有一个或多个输出、有效性是算法的五大特性。10、下列能正确进行字符串赋值的是oA、chars5=ABCDEw);B、chars5=A,B,C,D,E;C、char*s;s=wABCDE”;D、char*s;printf(,%S”,s);【答案】C11、执行完语句intx=newint25;后,则下列哪项说法是正确的A、X24值为OB、x24值未定义C、X25值为OD、x0值为空【答案】A【解析】用new动态初始化时,数组元素的默认值:元素类型默认初始值booleanfalsechar