第1页共7页考生信息栏系专业级班级姓名学号装订线厦门理工学院试卷2013-2014学年第1学期课程名称C语言程序设计试卷卷别A■B□专业2013级班级考试方式闭卷■开卷□本试卷共四大题(7页),满分100分,考试时间120分钟。请在答题纸上作答,在试卷上作答无效。一、选择题:(本题共20小题,每题2分,共40分)1.关于C语言程序描述正确的是()A)函数必须要有return语句B)主函数必须位于程序的开头C)程序中每行只能写一条语句D)一个程序中只能有一个主函数2.下列运算符的操作数必须是整型的是()A)/B)!C)%D)=3.以下选项中,与k=n--完全等价的表达式是()。A)k=n;n=n-1;B)n=n-1;k=n;C)k=--n;D)k-=n+1;4.若变量已正确定义,执行语句:scanf(%d,%d,%d,&k1,&k2,&k3);下列哪一项是是正确的输入形式()A)2030,40B)203040C)20,3040D)20,30,405.设inta=0,b=1;,下列语句错误的是()A)a=b=10;B)a++;C)b+=a;D)(a+b)++;6.能正确表达数学关系式0≤x20的C语言表达式是()A)0=x20B)x=0||x20C)x=0&&x20D)x≤0&&x207.为了避免在嵌套的条件语句if-else中产生二义性,C语言规定:else子句总是与__配对。()A)缩排位置相同的ifB)其之前最近的ifC)其之后最近的ifD)同一行上的if8.若有说明:inta[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是()。A)2B)3C)4D)无确定值第2页共7页9.下列程序运行后,输出结果是()。voidmain(){intj;j=3;printf(%d,,++j);printf(%d,j++);}A)3,3B)3,4C)4,3D)4,410.在vc6.0中,执行下列语句后的输出为()。intj=-1;if(j=1)printf(****\n);elseprintf(%%%%\n);A)****B)%%%%C)%%%%cD)-1-1-1-111.有如下语句:inta=3,b=2,c=1;if(abc)a=b;elsea=c;则a的值为()。A)3B)2C)1D)012.以下叙述正确的是()。A)do-while语句构成的循环不能用其它语句构成的循环来代替.B)do-while语句构成的循环只能用break语句退出.C)用do-while语句构成的循环,在while后的表达式为非零时结束循环.D)用do-while语句构成的循环,在while后的表达式为零时结束循环13.对以下说明语句inta[10]={6,7,8,9,10};的正确理解是()。A)将5个初值依次赋给a[1]至a[5]B)将5个初值依次赋给a[0]至a[4]C)将5个初值依次赋给a[6]至a[10]D)因为数组长度与初值的个数不相同,所以此语句不正确第3页共7页考生信息栏系专业级班级姓名学号装订线14.下列程序的输出为()。voidmain(){inty=10;while(y--);printf(y=%d\n,y);}A)y=0B)while构成无限循环C)y=1D)y=-115.以下程序段的输出结果为()。for(i=4;i1;i--)for(j=1;ji;j++)putchar('#');A)无B)######C)#D)###16.在C语言的函数中,下列正确的说法是()。A)必须有形参B)形参必须是变量名C)可以有也可以没有形参D)数组名不能作形参17.对二维数组正确定义并初始化的是()A)inta[][3]={1,2,3,4,5,6};B)inta[3][3]=(1,2,3,4,5,6);C)inta[3][]={{l,2,3},{4,5,6}};D)inta[3][3]={'12','3'};18.若有下列定义:inta[5],*p=a;,则对a数组元素地址的正确引用是()。A)&a[5]B)p+2C)a++D)&a19.设inta[]={12,34,56,78},*p=a;,下列表达式的值为56的是()。A)p[1+2]B)*(a+2)C)a[3]D)*(p+3)20.若有以下说明和语句:structworker{intno;char*name;}work,*p=&work;则以下引用方式不正确的是。()A)work.noB)(*p).noC)p-noD)work-no第4页共7页二、程序填空题:(本题共15小题,每空2分,共30分)(将答案按序号写在答题纸上)1、某个自动加油站有'a','b','c'三种汽油,单价分别为1.50,1.35,1.18(元/升),也提供了“自己加”和“协助加”两个服务等级,这样用户可以得到5%或10%的优惠。本程序针对用户输入的加油量a,汽油品种b和服务类型c('f'--自动,'m'--自己,'e'--协助),输出应付款m。2.下面程序的功能是从三个红球、五个白球、六个黑球中任意取出八个球,且其中必须有白球,输出所有可能的方案。#includestdio.hvoidmain(){inti,j,k;printf(\nhongbaihei\n);for(i=0;i=3;i++)for(【5】;j=5;j++){k=【6】;if(【7】)printf(%3d%3d%3d\n,i,j,k);}}#includestdio.hvoidmain(){floata,r1,r2,m;charb,c;scanf(%f%c%c,【1】);switch(b){case'a':r1=1.5;break;case'b':【2】;break;case'c':r1=1.18;break;}switch(c){case'f':r2=0;break;case'm':r2=0.05;break;case【3】:r2=0.1;break;}m=【4】;printf(%f,m);}第5页共7页考生信息栏系专业级班级姓名学号装订线3.以下程序的功能是计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值。4.下面的程序从终端输入5个学生的学号和姓名。#includestdio.h#includemath.hvoidmain(){floatx,y,z,sum;【8】scanf(%f%f%f,&x,&y,&z);sum=【9】+【10】;printf(sum=%f\n,sum);}floatf(floata,floatb){floatvalue;value=a/b;【11】;}#includestdio.hstructstudent{intstudentID;charstudentName[10];};voiddata_in(structstudent*p,intn){structstudent*q=【12】;for(;pq;p++){printf(pleaseinputthestudentID:);scanf(%d,【13】);printf(pleaseinputthestudentName:);scanf(%s,【14】);}}voiddata_out(structstudentstu[5],intn){inti;printf(theresultofoutput:\nIDName\n);for(i=0;i5;i++){printf(%6d%10s\n,stu[i].studentID,stu[i].studentName);}}intmain(){structstudentstu[5];data_in(【15】,5);data_out(stu,5);}第6页共7页三、程序阅读题:(本题共5小题,每题4分,共20分)1、请给出以下程序输出结果。#includestdio.hmain(){inta[4]={1,3,2,0};inti,sum=0;for(i=0;i4;i++){sum+=a[a[i]];printf(%d\n,sum);}}2、请给出输出结果。#includestdio.hintf(intn){staticinta=1;a++;returnn+a;}main(){inti,sum=0;for(i=1;i5;i++){sum=sum+f(i);printf(%d\n,sum);}}3、请给出输出结果。#includestdio.hmain(){inta=1,b=15;while(b1){b=b/2.0+0.5;a+=b;printf(%d,,a);}}4、请给出输出结果。#includestdio.hvoidfun(int*p,intn,intk,intx){int*q;for(q=p+n-1;q=p+k;q--)*(q+1)=*(q);*(p+k)=x;}main(){inta[20]={1,2,3,4,5,6,7,8,9,10,11},i,x=0,k=6,n=11;fun(a,n,k,x);for(i=5;in-2;i++)printf(%d\n,a[i]);}5、请给出输出结果。#includestdio.hmain(){charstr[][20]={BeiJing,TianAnMen!,GuGong,ChangCheng,BaDaLing};inti;for(i=0;i4;i++)printf(%c\n,*(str[i]+i));}第7页共7页考生信息栏系专业级班级姓名学号装订线四、程序设计题:(本题共1小题,每题10分,共10分)1.编写从单精度数组(最大长度20)中检索给定数值的函数search(a,n,k),a是一维数组,n是数组长度,k是要找的数值,若找到则返回改值在数值中的位置,否则返回-1。在main函数中完成search函数调用,并输出返回结果。