您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 其它文档 > 北京理工大学C语言期末模拟试题
北京理工大学C语言期末模拟试题一、单项选择题-试答1Question1分数:2已知结构定义如下:structsk{inta;floatb;}data,*p;如果p=&data;则对于结构变量data的成员a的正确引用是。选择一个答案A.p-data.aB.p.data.aC.(*p).aD.(*).data.aQuestion2分数:2说明一个变量s来保存20以内整数的阶乘,则该变量应说明为。选择一个答案A.float型B.long型C.unsigned型D.int型Question3分数:2下列四组标识符中,每组有用逗号分开的4个标识符,全都符合标准C标识符规定的一组是______。选择一个答案A.*4,trin,mA,MaB.r_,_r,i,st’C.name,t3,x_y,_n3yD.function1,g,c10,k.c7Question4分数:2已知intn=1,m=0;执行下述语句后,变量m的值是。switch(n){case1:case2:m=1;break;case3:m=3;default:m=2;}选择一个答案A.3B.0C.2D.1Question5分数:2已知:charstr[][4]={“abc”,”def”,”ghi”},c,*p=&c;如果要使则执行“printf(“%c”,*p)”语句后的输出结果为字符’c’,则赋值语句是。选择一个答案A.p=str[0][2];B.*p=str[0][2];C.p=str[1][3];D.*p=str[1][3];Question6分数:2已知:intk=2,m=3,n=4;则表达式“!k&&m||n”的值是。选择一个答案A.1B.3C.2D.0Question7分数:2在下面的说明语句中为字符数组str赋初值,而str不能作为字符串使用的是。选择一个答案A.charstr[8]=“Beijing”;B.charstr[7]=“Beijing”;C.charstr[10]=“Beijing”;D.char*str=“Beijing”;Question8分数:2已知在主调函数中有说明语句如下:intn,data[10][6];doublesum,*q;函数的调用语句是:q=func(&n,data);则函数func的原型是______。选择一个答案A.doublefunc(int*x,int**data);B.doublefunc(intx,intdata[][]);C.double*func(int*x,int**data);D.double*func(int*x,intdata[][6]);Question9分数:2已知inti,k=4;则执行循环语句:for(i=0;++ik;i++)printf(“%d\n”,i);最后一行输出的数值是。选择一个答案A.4B.3C.5D.2保存但不提交提交所有答案并结束01329,1324,1323二、程序填空分数:2以下函数使用合并排序法,将两个已经按照从小到大的排序的整型数组,合并到新的数组,新数组仍按照从小到大的顺序排序,数值相同的数据在新数组中只保存一次。参数a、b是两个排好序的数组的首地址,参数c是合并后数组的首地址,参数m、n分别是数组a、b的长度,函数的返回值是数组c的长度。combine(int*a,intm,int*b,intn,int*c){inti=0,j=0,k=0;while(【1】)c[k++]=a[i]b[j]?a[i++]:b[j++];while(im)c[k++]=a[i++];while(jn)c[k++]=b[j++];for(i=0;ik-1;i++){while(c[i+1]==c[i]){for(j=【2】;jk-1;j++)c[j]=c[j+1];【3】;}}return(k);}【1】:选择一个答案A.i=m||j=nB.im||jnC.i=m&&j=nD.im&&jnQuestion2分数:2【2】:选择一个答案A.1B.iC.0D.i+1Question3分数:2【3】:选择一个答案A.i--;B.i++;C.k--;D.k++;Question4分数:2从键盘输入3个学生的数据,将它们存入当前文件夹下名为student的文件中。#includestdio.h#defineSIZE3structstudent{longnum;charname[10];intage;charaddress[10];}stu[SIZE],out;main(){FILE*fp;inti;for(i=0;iSIZE;i++){printf(Inputstudent%d:,i+1);scanf(%ld%s%d%s,&stu[i].num,stu[i].name,&stu[i].age,stu[i].address);}if((fp=fopen(student,【4】))==NULL){printf(Cannotopenfile.\n);exit(1);}for(i=0;iSIZE;i++)if(fwrite(【5】,sizeof(structstudent),1,fp)【6】1)printf(Filewriteerror.\n);fclose(fp);}【4】:选择一个答案A.aB.wC.abD.wbQuestion5分数:2【5】:选择一个答案A.stu[i]B.*stu[i]C.stuD.&stu[i]Question6分数:2【6】:选择一个答案A.==1B.==NULLC.!=NULLD.!=1查看提交结果提交历史相似度三、编程题_1成绩:10/折扣:1输入行数n值和首字母,输出由大写英文字母围起的空心三角形。无论输入的首字母是大写或小写,输出的字母均是大写,且字母输出是循环的,即输出字母Z后再输出的是字母A。例:输入:5m↙屏幕输出:M↙NN↙OO↙PP↙QRSTUTSRQ↙测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.5m以文本方式显示1.M2.NN3.OO4.PP5.QRSTUTSRQ1秒64M0开启时间2011年12月30日星期五09:00折扣时间2012年01月6日星期五00:00关闭时间2012年01月6日星期五00:00允许迟交:否查看提交结果提交历史相似度三、编程题_2成绩:10/折扣:1现有n元整钱,到银行兑换成1角、2角、5角的硬币。编写程序,输入整钱数n,输出可能兑换的各种硬币数量的组合。要求编写程序,当输入整钱数N时,输出每种兑换方案的硬币枚数。如果有多种兑换方案,按1角硬币数量的升序输出。例如,整钱数2元,输入:2输出:num:$0.1$0.2$0.51:1232:1713:2424:3135:3616:4327:5518:6229:74110:81211:93112:112113:1311其中第一行是表头。从第二行起每行为一种兑换方案;第一列为方案编号,第二列为1角硬币数量,第三列为2角硬币数量,第四列为5角硬币数量。编写求兑换方案的函数:intfindm(intn,intmn[][3])其中:n是整钱数,mn是保存兑换方案的数组名;函数的返回值是兑换方案个数。要求:输出的兑换方案按照1角硬币数量的升序排列,并且每种硬币的数量必须大于0。注意:只提交自编的函数findm,不要提交主函数。给定的程序已经控制好了输出的格式,你只要将你的方案按要求放入数组mn中即可。预设代码前置代码viewplaincopytoclipboardprint?1./*PRESETCODEBEGIN-NEVERTOUCHCODEBELOW*/2.3.#includestdio.h4.5.intfindm(int,int[][3]);6.7.intmain()8.{inti,n,num,combm[500][3];9.10.scanf(%d,&n);11.num=findm(n,combm);12.printf(num:$0.1$0.2$0.5\n);13.for(i=0;inum;i++)14.printf(%3d:%5d%5d%5d\n,i+1,combm[i][0],combm[i][1],combm[i][2]);15.return0;16.}17.18./*intfindm(intn,intmn[][3])*/19./*{......*/20./*}*/21.22./*PRESETCODEEND-NEVERTOUCHCODEABOVE*//*PRESETCODEBEGIN-NEVERTOUCHCODEBELOW*/#includestdio.hintfindm(int,int[][3]);intmain(){inti,n,num,combm[500][3];scanf(%d,&n);num=findm(n,combm);printf(num:$0.1$0.2$0.5\n);for(i=0;inum;i++)printf(%3d:%5d%5d%5d\n,i+1,combm[i][0],combm[i][1return0;}/*intfindm(intn,intmn[][3])*//*{......*//*}*//*PRESETCODEEND-NEVERTOUCHCODEABOVE*/测试输入期待的输出时间限制内存限制额外进程测试用例2以文本方式显示1.2以文本方式显示1.num:$0.1$0.2$0.52.1:1233.2:1714.3:2425.4:3136.5:3617.6:4328.7:5519.8:62210.9:74111.10:81212.11:93113.12:112114.13:13111秒64M0开启时间2011年12月30日星期五09:00折扣时间2012年01月6日星期五00:00关闭时间2012年01月6日星期五00:00允许迟交:否查看提交结果提交历史相似度三、编程题_3成绩:10/折扣:1编写一个函数,使用递归算法求下述函数的值。f(n,x)=1当n==0时x当n==1时2*f(n-1,x)+3*f(n-2,x)当n1时-1其它函数原型如下:doublefindf(intn,doublex)参数说明:n项数(n4),x自变量;返回值是函数值。例如输入:54.0,输出:304.00注意:仅提交自编的findf函数,不提交main函数。预设代码a3_3.cviewplaincopytoclipboardprint?1./*PRESETCODEBEGIN-NEVERTOUCHCODEBELOW*/2.3.#includestdio.h4.intmain()5.{intn;6.doublef,s,findf();7.scanf(%d%lf,&n,&f);8.s=findf(n,f);9.printf(%.2lf\n,s);10.return0;11.}12.13./*PRESETCODEEND-NEVERTOUCHCODEABOVE*//*PRESETCODEBEGIN-NEVERTOUCHCODEBELOW*/#includestdio.hintmain(){intn;doublef,s,findf();scanf(%d%lf,&n,&f);s=findf(n,f);printf(%.2lf\n,s);return0;}/*PRESETCODEEND-NEVERTOUCHCODEABOVE*/测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.54.0以文本方式显示1.304.001秒64M0开启时间2011年12月30日星期五09:00折扣时间2012年01月6日星期五00:00关闭时间2012年01月6日星期五00:00允许迟交:否查看提交结果提交历史相似度三、编程题_4成绩:10/折扣:1功能要求:在带表头的单向链表中,找到其中的最小值结点,删除
本文标题:北京理工大学C语言期末模拟试题
链接地址:https://www.777doc.com/doc-2635441 .html