佛山科学技术学院C语言程序设计期末(共六卷).docx

上传人:夺命阿水 文档编号:1408727 上传时间:2024-06-15 格式:DOCX 页数:72 大小:129.75KB
返回 下载 相关 举报
佛山科学技术学院C语言程序设计期末(共六卷).docx_第1页
第1页 / 共72页
佛山科学技术学院C语言程序设计期末(共六卷).docx_第2页
第2页 / 共72页
佛山科学技术学院C语言程序设计期末(共六卷).docx_第3页
第3页 / 共72页
佛山科学技术学院C语言程序设计期末(共六卷).docx_第4页
第4页 / 共72页
佛山科学技术学院C语言程序设计期末(共六卷).docx_第5页
第5页 / 共72页
点击查看更多>>
资源描述

《佛山科学技术学院C语言程序设计期末(共六卷).docx》由会员分享,可在线阅读,更多相关《佛山科学技术学院C语言程序设计期末(共六卷).docx(72页珍藏版)》请在课桌文档上搜索。

1、佛山科学技术学院C语言程序设计期末(一)总分:150分考试时间:120分钟注意事项: 题目包括五大部分,单项选择题,判断题,填空题,程序分析题,编程题,请按要求在规定时间内作答。 考试中途不能无端离场,否则视为放弃。考试过程中如遇问题请及时向监考老师反馈。一、单项选择题(每小题2分,共40分)1、下列关于自动类型转换的说法中,正确的是OA、int类型数据可以被自动转换为Char类型数据B、Char类型数据可以被自动转换为int类型数据C、boolean类型数据不可做自动类型转换,但是可以做强制类型转换D、Iong类型数据可以被自动转换为ShOrt类型数据2、设变量X为float型且已赋值,则以

2、下语句中能将X中的数值保留到小数点后两位,并将第三位四舍五入的是OA、x=x*100+0.5/100.0;B、x=(x*100+0.5)/100.0;C、X=(int)(x*100+0.5)/100.0;D、x=(x100+0.5)*100.0;3、合法的C语言赋值语句是oA、 a=b=58B、 k=int(a+b);C、 a=58,b=58D、i;4、下列程序的运行结果是omain()inta=-5,b-l,c=l;intx=0,y=2,z=0;if(c0)x-x+y;if(a0)if(c0)y=-y;elsez-y;Printf(%d,%d,%dn”,x,y,z);)A、 2,2,OB、

3、2,2,2C、 0,2,OD、 2,0,25、有以下程序main()(inta=15,b-21,m=0;switch(a%3)(case0:m+;break;casel:m+;switch(b%2)(default:m+;case0:m+;break;)printf(n%dnr,m);)程序运行后的输出结果是OA、1B、2C、3D、46、若执行fopen函数时发生错误,则函数的返回值是()。A、地址值B、0C、1D、EOF7、下列定义不正确的是OA、 definePI3.141592B、 4defineS345C、 intmax(x,y);intx,y;D、 staticcharc;8、以下函

4、数的功能是:通过键盘输入数据,为数组中的所有元素赋值。defineN10voidarrin(intxN)(inti=0;whiIe(i,则以下WhiIe循环体将执行多少次。whiIe(ch=getchar()!=,e)printf(l*);A、5B、4C、6D、111、若二维数组a有m列,则计算任一元素aij在数组中相对位置的公式为(假设a00位于数组的第一个位置上)oA、 i*m+jB、 j*m+TC、 i*m+j-lD、 i*m+j+l12、有以下程序段:intj;floaty;charname50;scanf(,%2d%f%s,&j,&y,name);当执行上述程序段,从键盘上输入555

5、667777abc后,y的值为A、55566.0B、566.0C、7777.0D、566777.013、对于类型相同的两个指针变量之间,不能进行的运算是oA、B、二C、+D、-14、以下关于return语句的叙述中正确的是。A、一个自定义函数中必须有一条return语句B、一个自定义函数中可以根据不同情况设置多条return语句C、定义成VOid类型的函数中可以有带返回值的return语句D、没有return语句的自定义函数在执行结束时不能返回到调用处15、有以下程序:#ClefineS(x)(x)*x*2intmain()(intk=5,j=2;printf(w%dw,S(k+j);prin

6、tf(r,%dn,S(k-j);程序运行后的输出结果是OA、 98,18B、 39,11C、 39,18D、 98,1116、下面程序的功能是将从键盘输入的偶数写成两个素数之和。请选择填空。#include#includemain()(inta,b,c,d;scanf(w%dw,&a);for(b=3,bsqrt(b)d=;elsecontinue;for(c=2;cV=sqrt(d);c+)if(d%c-0)break;if(csqrt(d)printf(n%d=%d+%dn,a,b,d);)A、a+bB、a-bC、a*bD、a/b17、以下关于c语言数据类型使用的叙述中错误的是OA、若只处

7、理“真”和“假”两种逻辑值,应使用逻辑类型B、若要保存带有多位小数的数据,可使用双精度类型C、整数类型表示的自然数是准确无误差的D、若要处理“人员信息”等含有不同类型的相关数据,应自定义结构体类型18、下列程序的输出结果是main()(doubled=3.2;intx,y;x=l.2;y=(x+3,8)/5.0;printf(,%dnr,d*y);)A、3B、3.2C、0D、3.0719、以下函数findmax拟实现在数组中查找最大值并作为函数值返回,但程序中有错导致不能实现预定功能ftdefineMIN-2147463647intfindmax(intx,intn)(inti,max;for

8、(i=0;in;i+)max=MIN;if(maxnext=&b;D、(*p).next=q;二、判断题(每小题2分,共20分)()1、一元运算符、和的运算优先级低于自增自减预算。()2、C语言具有简洁明了的特点。()3、在if语句中,必须出现else。()4、dorvhile循环至少要执行一次循环语句。()5、C语言中,字符串常量最后一个字符是结束标志,该结束符是0。()6、在C程序中,函数既可以嵌套定义,也可以嵌套调用。()()7、数组名代表数组的首地址。()()8、fseek函数一般用于二进制文件。()9、C语言允许用字符串的方式对数组作初始化赋值。)10、随机操作只适用于二进制文件。三

9、、填空题(每小题4分,共20分)1、若有inta32=1,2,3,4,5;,则a22的值是O2、设x=2.5,a=7,y=4.7,则x+a%3*(int)(x+y)%24为。3、程序的结果是:ftincludevoidmain()(inti,j,x=0;for(i=0;i2;i+)(x+;for(j=0;j=3;j+)(if(j%2)continue;x+;)x+;)printf(,x=%dn,x);)4、编译预处理包括宏定义、文件包含、()等。5、如果一个变量要在一个程序中的所有函数都能共享,则应该定义成为O四、程序分析题(每小题5分,共20分)1、有以下程序#includemain()(i

10、nta=l,b=2,c=3,d=0;if(a=l)if(b!=2)if(c!=3)d=l;elsed=2;elseif(c!=3)d=3;elsed=4;elsed=5;printf(,%dn,1,d);)程序运行后的输出结果是:O2、以下程序的输出结果是o#include#ClefineM5ttdefineNM+Mmain()(intk;K=N*N*5;printf(,%dn,k);)3、下面程序的运行结果是o#includemain()(inta,b,i;a=1;b二3;i二1;do(printf(w%d,%d,w,a,b);a=(b-a)*2+b;b=(a-b)*2+a;if(i+%2=

11、0)printf(HnM);while(b100);)4、以下程序的功能是:借助指针变量找出数组元素中最大值所在的位置并输出该最大值。请在输出语句中填写代表最大值的输出项。#includemain()inta(10,*p,*s;for(p=a;p-a10;p+)scanf(,%c,p);for(p=a,s=a;p-a*s)s=p;Printf(max=%dn”,);五、编程题(每小题分,共50分)1、编写程序:在第一个循环中从键盘上给a数组的前m(mV100)个数组元素依次赋值;在第二个循环中使a数组前m个元素中的值对称折叠;在最后一个循环中输出折叠以后的a数组的前m个元素例如:当m为5时,如

12、果从键盘上输入的5个数分别为:1.2.3.4.5时,输出应为:12321当m为10时,如果从键盘上输入的10个数分别为:1.2.3.4.5.6.7.8.9.10时,输出应为:1234554321(本题12分)2、编写程序:删除一个字符串中的指定字母,如:字符串r,aca删除其中的a字母。(本题18分)3、定义一个结构体变量(包括年、月、日)。编写一个函数days,计算该日期在本年中是第几天(注意闰年问题)。由主函数将年月日传递给days函数,计算之后,将结果传回到主函数输出。(本题20分)C语言程序设计期末(一)参考答案】一、单项选择题1、B【解析】根据自动类型转换的优先级顺序,int类型的数

13、据不可以自动转换为Char类型数据,1Ong类型也不可以自动转换为Short类型,boolean的值只有true和false两个值,不能做类型转换,包括自动和强制。2、C3、D4、A【解析】本题考查ifelse语句的使用。先判断第1个if语句,因为c=lO,所以x=x+y=0+2=2next=&b;在选项D中,用*运算符取出结构体变量,并且保存的就是b的地址,所以正确。二、判断题1、错误2、正确3、错误4、正确5、错误6、错误7、正确8、正确9、正确10、错误三、填空题1、无#不存在2、2.53、x=84、条件编译5、全局变量四、程序分析题1、42、553、 1,3,7,15,31,63,4、

14、 *s五、编程题1、defineM5main()inti,a100,t;for(i=0;iM;i+)scanf(%d,&ai);for(i=0;iM2;i+)aM-i-l=ai;for(i=0;iM;i+)printf(,%5d,ai);printf(ffn);)2、ttincludcttinclude#include/删除字符串中指定字母函数char*deleteCharacters(char*str,char*charSet)(inthash256;if(NU1.1.=charSet)returnstr;for(inti=0;i256;i+)hashi=0;for(inti=0;istrl

15、en(charSet);i+)hashcharSeti=1;intcurrentIndex=0;for(inti=0;istrlen(str);i+)(if(!hashstri)strcurrentIndcx+=stri;strcurrentlndex=,0;returnstr;)intmain()(chars2=,a;/要删除的字母chars25=acaw;/目标字符串printf(ff%snr,deleteCharacters(s2,s);return0;)3、includestructDate(intday;intmonth;intyear;);intmain()voiddays(str

16、uctDatedatel,int*q);structDatedatel;structDate*p;intn;Printf(H请输入年份:);scanf(%d”,&datel.year);Printf(请输入月份:);scanf(tf%dr,&datel.month);Printf(H请输入日期:);scanf(%d,&datel.day);p=&datel;days(*p,&n);*使指针指向变量n,存放计算的总天数*.datel.month.datel.year%4=Printf(%d年d月%d日是该年的第d天。n,datel.year,datel.day,n);return(0);)voi

17、ddays(structDatedatel,int*q)intmonth2:if(datel.year%400=0(datel.year%100!=0&0)month2=29;*判断为润年,其该年的二月为29天*/elsemonth2=28;switch(datel.month)case1:*q=datel.day;break;case2:*q=31+datel.day;break;case3:*q=month2+31+datel.day;break;case4:*q=31*2+month2+datel.day;break;case5:*q=31*2+month2+30+datel.day;b

18、reak;case6:*q=31*3+month230+datel.day;break;case7:*q=31*3+30*2month2datel.day;break;case8:*q=31*4+30*2month2datel.day;break;case9:*q31+30*2month2datel.day;break;case10:*q31+3*30month2datel.day;break;case11:*q31+3*30month2datel.day;break;case12:31+4*30month2datel.day;*把计算的总天数赋值给*p*/佛山科学技术学院C语言程序设计期末(

19、二)总分:150分考试时间:120分钟注意事项: 题目包括五大部分,单项选择题,判断题,填空题,程序分析题,编程题,请按要求在规定时间内作答。 考试中途不能无端离场,否则视为放弃。考试过程中如遇问题请及时向监考老师反馈。一、单项选择题(每小题2分,共40分)1、在标准ascii码表中,若英文字母i的十进制码值是105,则小写字母f的十进制码值为oA、102B、101C、103D、1002、下列四个选项中,均是C语言关键字的选项是()。A、 autoenumincludeB、 switchtypedefcontinueC、 signedunionscanfD、 ifstructtype3、C语言

20、中以下几种运算符的优先次序O的排列是正确的。A、由高到低为:!,&,,算术运算符,赋值运算符B、由高到低为:!,算术运算符,关系运算符,&,I赋值运算符C、由高到低为:算术运算符,关系运算符,赋值运算符,!,&,IID、由高到低为:算术运算符,关系运算符,!,&,I赋值运算符4、当从键盘上输入字符”2134211”下面程序的输出结果是omain()(chars;intV1=0,v2=0,v3=0,v4=0,k;for(k=0;k0,1,8,5,9;B、 inta34C、 4defineN5floataN3D、inta29.5;7、请选出可以作为C语言用户标识符的一组标识符号A、 voiddef

21、ineWORDB、 a3_b3_123IFC、 for-abccaseD、 2aDOsizeof8、有以下程序voidfun(int*a,intn)/*fun函数的功能是将a所指数组元素从大到小排序*intt,i,j;for(i=0;in-1;j+)for(j=i+l;jl,2,3,4,5,6,7,8,9,0,i;fun(c+4.6):for(i=0;i10;i+)printf(h%d,h,ci);printf(r,nr,):程序运行的结果是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,

22、9,8,7,6,5,0,9、以下叙述中正确的是O。A、C语言比其他语言高级B、C语言可以不用编译就能被计算机识别执行C、C语言以接近英语国家的自然语言和数学语言作为语言的表达形式D、C语言出现的最晚,具有其他语言的一切优点10、下列对字符串的定义中,错误的是OA、charstr7=,FORTRAN,;B、charstr=FORTRAN;C、char*str=,FORTRAN,;D、charstr=,F,0,R,T,R,A,N,0);11、有以下程序main()(inta44=1,4,3,2,8,6,5,7,3,7,2,5,4,8,6,1,i,k,t;for(i=0;i3;i+)for(k=i+

23、l;k4;k+)if(aiakk)(t=aii;aii=akk;akk=t;)for(i=0;iD、+14、已定义以下函数intfun(int*p)(return*p;则fun函数返回值足A、不确定的值B、一个整数C、形参P中存放的值D、形参P的地址值15、有以下程序inta=2;intf(intn)(staticinta=3;intt=0;if(n%2)(staticinta=4;t+=a+;)else(staticinta=5;t+=a+;returnt+a+;main()ints=a,i;for(i=0;i3;i+)s+=f(i);printf(w%dnw,s);)程序运行后的输出结果是

24、OA、26B、28C、29D、2416、有如下程序#defineN4defineMN+2#defineNUM2*M+1main()(inti;for(i=l;i=NUM;i+)printf(,%dn,i);该程序中的for循环执行的次数是oA、14B、11C、10D、1317、以下程序的运行结果是includewstdio.hrmain()(structdateintyear,month,day;today;printf(,%dnr,sizeof(structdate);)A、6B、8C、10D、1218、以下程序的输出结果是main()(charcf35=r,aaaa,bbb,ncc,);P

25、rintf(%sn,ch1);)A、 AAAAB、 BBBC、 hBBBCChD、 nCC,19、关于数组的定义与初始化,下列哪一项是错误的()A、intarr5=1,2,3,4,5;B、 intarr=1,2,3,4,5;C、 intarr5=1,2,3;D、 intarr5=1,2,3,4,5,6;20、若有以下语句:typedefstructS(i11tg;charh;t;以下叙述中正确的是OA、可用S定义结构体变量B、可用T定义结构体变量C、S是StrUCt类型的变量D、T是structS类型的变量二、判断题(每小题2分,共20分)()1、+和一运算符可以用于常量或表达式。()2、字符

26、常量的长度肯定为1()3、SWitCh语句中的default必须出现在所有CaSe之后。()4、C语言的三种循环不可以互相嵌套。()5xputchar函数可以向终端输出一个字符串()6、函数的形参可以是常量,变量或表达式()7、数组inta55;共定义了25个数组元素。()()8、C语言本身并不提供输入输出语句。但可以通过输入输出函数来实现数据的输入输出。()9、字符数组Charc=string;有6个数组元素()10、全局变量的作用域是整个源程序文件。三、填空题(每小题4分,共20分)1、若有定义:inta=3;表达式a2.O+b-a的值是【1】。2、设inta=5,b-6;则表达式(+a-

27、b-)?+a:-b的值是。3、结构化程序设计的3种基本结构是:顺序结构、结构、循环结构,这三种基本结构构成了复杂的C语言程序。4、在C语言中,假使X为长整型变量,如果我们采用Printf(“格式控制”,x)格式输出X,那么“格式控制”具体表示为5、字符读写函数是用于从磁盘文件中读出一个字符。四、程序分析题(每小题5分,共20分)1、请将下列程序中的函数声明语句补充完整。#includeint;main()(intx,y,(*p)();scanf(,%d%d”,&x,&y);p=max;printf(,%dnn,(*p)(x,y);intmax(inta,intb)return(ab?a:b);

28、2、下列程序段的运行结果是ointb=20,*q;q=&b;printf(r,%dr,*q);3、下列程序段的运行结果是ocharsi20=abcdef,s25=,abc,;strcpy(si,s2);printf(,%c,si2);4、下面程序的运行结果是omain()(inti,f10;fo=f=i;for(i=2;i10;i+)fi=fi-2+fi-l;for(i=0;i为位运算符;+为算术运算符。14、D15、C16、B17、A【解析】在解答本题时应该考虑两个问题:结构体变量的长度及SiZeOf()求字节数的运算符。结构体变量的长度是其内部成员总长度之和,本题中,structdate中

29、包含year,month,day三个整型变量。一个整型变量所占的字节数为2。18、B19、D【解析】选项4初始化值大于数组的大小。20、B二、判断题1、错误2、正确3、错误4、错误【解析】是可以互相嵌套的。5、错误6、错误7、正确8、正确9、错误10、错误三、填空题1、2.52、73、选择#分支4、%ld5、fgetcftfgetc()#getc#getc()四、程序分析题1、,max(inta,intb),2、203、C4、参考答案:11235813213455五、编程题1、#includeintmain()(inti,j,k;printf(wn);for(i=l;i5;i+)/以下为三重循

30、环for(j=l;j5;j+)for(k=l;k5;k+)/确保i、j、k三位互不相同if(i!=k&i!=j&j!=k)printf(ff%d,%d,%dn,i,j,k);)【解析】有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?2、include#includeintmain()(charsi80,s280;inti,ll,12,j;gets(sl);gets(s2);H=Strlen(si);12=strlen(s2);for(i=ll,j=0;j12;i+,j+)sli=s2j;)puts(si);return0;)3、#includedefineNUM3s

31、tructstudent(char*sno=nowchar20;char*name=newchar20;intscore;boolfail=false;);voidStuSort(student*stu)(studenttmp;for(inti=0;iNUM;i+)for(intj=0:jNUM;j+)(if(stuj.scorestui.score)(tmp.name=stuj.name;tmp.sno=stuj.sno;tmp.score=stuj.score;stuj.name=stui.name;stuj.sno=stui.sno;stuj.score=stui.score;stui.

32、name=tmp.name;stui.sno=tmp.sno;stui.score=tmp.score;)for(inti=0;iNUM;i+)printf(ff%s%s%dn,stui.sno,stui.name,stui.score);)voidStuFail(student*stu)(intnumOfStu=0;for(inti=0;iNUM;i+)if(stui.fail=true)printf(ff%s,stui.name);)else(numOfStu+;)if(numOfStu=NUM)printf(%snw,nofail);)voidStuAvg(student*stu)int

33、StuScore=0;doubleStuAvg=0;intent=0;for(inti=0;iNUM;i+)(StuScore+=stui.score;)StuAvg=StuScore/NUM;for(inti=0;iNUM;i+)(if(stui.scorestuAvg)(ent+;)printf(ff%dn,cnt);)intmain()student*stu=newstudentNUM;for(inti=0;iNUM;+i)Printf(输入学号:);scanf(%sr,stui.sno);Printf(输入姓名:);scanfC,%sw,stui.name);Printf(输入功课成绩:”);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号