安徽大学20-20学年第学期《C语言程序设计》期末考试试卷(A卷120分钟)年级院系专业姓名学号座位号一.单项选择题:(每题2分,共40分)下列各题A)、B)、C)、D)四个选项中只有一个是正确的,请将正确选项填在答题卡相应题目的横线上。答在试卷上不得分。1.下面程序段执行后,a的值是______。inta;printf(%d\n,(a=3*5,a*4,a+5));A)60B)20C)15D)102.下列程序段的输出是______。intx=023;printf(%d\n,--x);A)19B)18C)23D)223.执行下列语句后,a的值是______。inta=8;a+=a-=a*a;A)-240B)64C)112D)-1124.执行下列语句后,输出的值是______。intx=6;printf(%d,%d,%d\n,x,x++,--x);A)5,5,5B)6,5,5C)7,6,5D)5,6,55.指出下列程序段所表示的逻辑关系是______。if(ab){if(c==d)x=1;}elsex=2;A)若ab且c=d,则x=1;若a=b且c!=d,则x=2。B)若ab且c=d,则x=1;若a=b,则x=2。C)若ab且c=d,则x=1;若ab且c!=d,则x=2。D)若ab且c=d,则x=1;若c!=d,则x=2。题号一二三四五六七八得分得分得分6.下列程序段的执行结果是______。inti,x;for(i=1,x=1;i=20;i++){if(x=10)break;if(x%2==1){x+=5;continue;}x-=3;}printf(%d,%d\n,x,i);A)6,4B)7,5C)10,6D)14,77.下列程序的执行结果是______。#includestdio.h#includestring.hmain(){staticchars[10]={'C','h','i','n','a'};printf(%d\n,strlen(s));}A)6B)5C)11D)108.函数的数据类型是______决定的。A)调用该函数时临时B)调用函数的实参C)return语句的表达式类型D)函数的形参9.执行下列程序段后,*(p+5)的值是______。staticchars[]=Hello;char*p;p=s;A)'o'B)'\0'C)'o'的地址D)不确定的值10.以下程序的输出结果是______。#includestdio.hmain(){staticinta[]={1,2,3,4,5,6},*p;p=a;*(p+3)+=2;printf(%d,%d\n,*p,*(p+3));}A)0,5B)1,5C)0,6D)1,611.在以下定义中,标识符P______。int(*p)[3];A)定义不合法。B)是一个指针数组名,每个元素是一个指向整型变量的指针。C)是一个指针,它指向一个具有三个元素的一维数组。D)是一个指向整型变量的指针。12.sizeof(int)是______。A)一个整型表达式B)一个不合法的表达式C)一种函数调用D)一条语句13.有宏定义:#defineMULT1(a,b)a*b#defineMULT2(a,b)(a)*(b)在后面的程序中有宏引用:y=MULT1(3+2,5+8);z=MULT2(3+2,5+8);则y和z的值是______。A)y=65,z=65B)y=21,z=65C)y=65,z=21D)y=21,z=2114.设有程序段:unionMYTYPE{longx;inty[4];charz[6];}them;main(){printf(“%d\n”,sizeof(them));}则程序的输出结果是______。A)18B)6C)8D)415.以读写方式打开一个已有的文本文件file1,下面fopen函数正确的调用方式是______。A)FILE*fp;B)FILE*fp;fp=fopen(file1,r);fp=fopen(file1,r+);C)FILE*fp;D)FILE*fp;fp=fopen(file1,rb);fp=fopen(file1,rb+);16.设有如下定义:structsk{inta;floatb;}data,*p;且p=&data;则对data中a域的正确引用是().A)(*p).data.aB)(*p).aC)p-data.aD)p.data.a17.若fun(intx){printf(“%d\n”,x);},则fun_______。A)返回值为void类型B)返回值无法确定C)返回值为int类型D)没有返回值18.实参和和形参之间的数据传送是_______。A)地址传送B)实参传给形参,再由形参传给实参C)值传送D)由用户指定传送方式19.以下程序的输出结果是______。char*s=”ABCD”,*p;for(p=s;*p;p++)printf(%s\n,p);A)ABCDB)AC)DD)ABCDBCDBCABCCDCBABDDAA20.下列程序段的输出是______。intfun(intx){staticinta=3;a+=x;returna;}voidmain(void){intk=2,m=1,n;n=fun(k);n=fun(m);printf(“%d\n”,n);}A)3B)4C)6D)9二.填空题:(每空1分,共20分)请将正确答案填在答题卡相应题目的横线上。答在试卷上不得分。1.C语言有⑴、⑵、⑶、⑷和⑸五种常量。2.C程序的变量不仅要事先⑹,而且还必须⑺后才能使用。3.C语言在给出逻辑运算结果时,以⑻代表“真”,以⑼代表“假”;在判断一个量是否为“真”时,以⑽代表“假”,以⑾代表“真”。4.C语言规定只有⑿数组和⒀数组才能初始化;这种数组不赋初值,系统会对所有数组元素自动赋以⒁值。5.对两个指针变量进行关系运算的条件是⒂,其结果表示⒃。6.一个C文件是一个⒄或⒅,它把数据看成是⒆,对文件的存取是以⒇为单位。三.程序设计题(每空2分,共40分)阅读下列程序,在横线上填入适当的内容使程序完整。请将正确答案填在答题卡相应题目的横线上。答在试卷上不得分。1.下列程序是求Fibonacci数列:1,1,2,3,5,8……的前40个数,要求每行输出4个数。得分得分main(){longintf1,f2;inti;f1=1;f2=1;for(i=1;i=⑴;i++){printf(%12ld%12ld,f1,f2);if(⑵)printf(\n);f1=⑶;f2=⑷;}}2.下列程序是求一个3×4矩阵中值最小元素。min_value(⑸){inti,j,k,min;⑹=array[0][0];for(i=0;i3;i++)for(j=0;j4;j++)if(⑺)min=⑻;⑼;}main(){staticinta[3][4]={1,2,3,4,5,6,7,8,9};printf(minvalueis%d\n,min_value(⑽));}3.下列程序的功能是:将字符串a复制到字符串b中。voidcopy_string(char*from,⑾);{for(;*from;⑿)⒀;*to=⒁;}main(){char*a=Iamaboy!;char*b=Thisisatest!;⒂;printf(a=%s\a=%s\n,a,b);}4.有一个班,3个学生,各学四门棵。下列程序的功能是:查找有一门以上课程不及格的学生,打印出他们的全部课程的成绩。main(){⒃;staticfloatscore[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};search(score,3);}voidsearch(float(*p)[4],intn);{inti,j,flag;for(j=0;jn;j++){flag=0;for(i=0;i4;i++)if(⒄)flag=1;if(⒅){printf(No.%disfail\n,j+i);for(i=0;⒆;i++)printf(%5.1f,⒇);printf(\n);}}}参考答案:一.单项选择题:(每题2分,共40分)CBDBBCBCBDCABBBBCCAC二.填空题:(每题2分,共20分)1常数2字符3字符串4、转义序列5符号常量6定义7赋值819010非011012static13extern14015指向同一数组16位置的前后17字节流18二进制流19一连串的字符20字符(字节)三.程序归纳题(每题2分,共40分)1202i%5==03f1+f24f1+f25intarray[3][4]6min7minarray[i][j]8array[i][j]9returnmin10a11char*to12from++,to++13*to=*from14‘\0’15copy_string(a,b)16voidsearch(float(*p)[4],intn)17p[j][i]6018flag==119i420p[j][i]安徽大学20-20学年第学期《C语言程序设计》期末考试试卷(B卷120分钟)年级院系专业姓名学号座位号一.单项选择题:(每题2分,共20分)下列各题A)、B)、C)、D)四个选项中只有一个是正确的,请将正确选项填在答题卡相应题目的横线上。答在试卷上不得分。1.执行程序:inta;printf(%d\n,(a=3*5,a*4,a+5));后,a的值是______。A)60B)20C)15D)102.程序段:intx=023;printf(%d\n,--x);的输出是______。题号一二三四五六七八得分得分得分A)19B)18C)23D)223.程序段:staticchars[10]={'C','h','i','n','a'};printf(%d\n,strlen(s));的输出是______。A)6B)5C)11D)104.若fun(intx){printf(“%d\n”,x);},则fun_______。A)返回值为void类型B)返回值类型无法确定C)返回值为int类型D)没有返回值5.有宏定义:#defineMULT1(a,b)a*b#defineMULT2(a,b)(a)*(b)且引用宏:y=MULT1(3+2,5+8);z=MULT2(3+2,5+8);则y和z的值是______。A)y=65,z=65B)y=21,z=65C)y=65,z=21D)y=21,z=216.程序段chars[]=Hello,*p;p=s;执行后,*(p+5)的值是______。A)'o'B)'\0'C)'o'的地址D)不确定的值7.程序段:char*s=”ABCD”,*p;for(p=s;*p;p++)printf(%s\n,p);的输出是______。A)ABCDB)AC)DD)ABCDBCDBCABCCDCBABDDAA8.若定义:int(*p)[3];则标识符p______。A)定义不合法。B)是一个指针数组名,每个元素是一个指向整型变量的指针。C)是一个指针,它指向一个具有三个元素的一维数组。D)是一个指向整型变量的指针。9.定义:structsk{inta;floatb;}data,*p;且p=&data;则正确引用成员a的方式是______。A)p.data.aB)(*p).aC)p-data.aD)(*p).data.a10.以二进制只读方式打开一个已有的文本文件file1,正确调用fopen函数的方式是______。A)FILE*fp;B)FILE*fp;fp=fopen(file1,rb);fp=fopen(file1,r+);C)FILE*fp;D)FILE*fp;fp=fopen(file1,r);fp=fopen(file1,rb+);二.填空题:(每空1分,共20分)请将正确答案填在答题卡相应题目的横线上。答在试卷上不得分。7.C程序一个函数的定义由__________和____________两部分组成。8.C语言