《佛山科学技术学院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类型的数据不可以自动转换为Char类型数据,1Ong类型也不可以自动转换为Short类型,boolean的值只有true和false两个值,不能做类型转换,包括自动和强制。2、C3、D4、A【解析】本题考查ifelse语句的使用。先判断第1个if语句,因为c=lO,所以x=x+y=0+2=2,第1个if语句,因为a=-5V0,所以进入下列的复合语句。经判断发现,复合语句中第2个if语句的条件均不满足,不执行任何语句退出,在这