试卷类别B使用班级全校统考使用学期2007下学期任课教师全校统考教研室主任审核签字考试课程名称:C程序设计学时:60考试方式:闭卷,笔试注:1.答案写在答题纸上2.卷面分数为80分,平时成绩20分。3.考试时间:120分钟考试内容:一、单项选择题(每题1分,共12分)1.若有定义:inta=10;floatx=2.8,y=8.6;则表达式:x+a%3*(int)(y-x)%2/4的值是(1)。A)2.500000B)2.800000C)3.050000D)0.0000002.设intx=8,y,z;执行y=z=x++;x=y==z后,变量x的值是(2)。A)0B)1C)8D)93.表达式!(x0&&y0)等价于(3)。A)!(x0)||!(y0)B)!x0||!y0C)!x0&&!y0D)!(x0)&&!(y0)4.设有程序段t=0;while(printf(“*”)){t++;if(t3)break;}下面描述正确的是(4)。A)其中循环控制表达式与0等价B)其中循环控制表达式与‘0’等价C)其中循环控制表达式是不合法的D)以上说法都不对5.上机运行以下程序会出现一个错误,这个错误的性质是(5).main(){inti,j,a[]={3,2,1},b[]={6,4,2,0};floats=0;for(i=0;i3;i++){j=b[a[i]];s+=1.0/j;}printf(“\n%f”,s);}A)数组说明语法错B)数组元素引用语法错C)分母为0运算错D)数组元素引用下标超界错6、下列函数的功能是(6)。intfun1(chat*x){char*y=x;while(*y++);return(y-x-1);}A)求字符串的长度B)比较两个字符串的大小C)将字符串X复制到字符串YD)将字符串X连接到字符串Y后面7.以下各循环语句中,不是无限循环的是(7).A)for(k=-1;-10k0;k--);B)for(i=1,j=10;i-j;i++,j--);C)for(k=1;k=10;k++);D)for(k=1;k0;k++);8.以下各程序段中,不能正确输入10个数到数组a中的是(8)。A)inti,a[10];for(i=0;i10;i++)scanf(“%d”,a[i]);B)inti,a[10];for(i=0;i10;i++)scanf(“%d”,a+i);C)inta[10],*p;for(p=a;pa+10;p++)scanf(“%d”,p);D)inti,a[10],*p=a;for(i=0;i10;i++)scanf(“%d”,p++);9.以下程序的功能是(9)。main(){inta[10]={3,5,2,9,1,8,0,2,4,6},i,p=0,q=0;for(i=0;i10;i++){if(a[i]p)p=a[i];if(a[i]a[q])q=i;}printf(\n%d,%d,p,q);}A)求最大值和最小值B)求最大值的位置和最小值的位置C)求最大值的位置和最小值D)求最小值的位置和最大值10.若要用fopen函数打开一个新的二进制文件,该文件要既能读也能写,则文件方式字符串应是(10)。A)“ab+”B)“wb+”C)“rb+”D)“ab”11、以下程序中,不合法的函数调用语句是(11)。voidfun(floatx[]){……}main(){floata[9],b[4][5];A)f(a+5);B)f(b);C)f(a[4]);D)f(b[2]);}12.以下scanf函数调用语句中对结构体变量成员的不正确引用是(12)。structpupil{charname[20];intage;intsex;}pup[5],*p;p=pup;A)scanf(“%s”,pup[0].name);B)scanf(“%d”,&pup[0].age);C)scanf(“%d”,&(p-sex));D)scanf(“%d”,p-age);中国地质大学(武汉)考试出题专用纸教务处制试卷类别B使用班级全校统考使用学期2007下学期任课教师教研室主任审核签字二、程序阅读题(15,20,21,22每题3分,其他每题2分,共24分)13.以下程序的运行结果是(13)。main(){intn=12345,j,n1=0,n2=0;while(n/=10){j=n%10;if(j%2)n1+=j;elsen2+=j;}printf(\n%d,%d,n1,n2);}A.9,6B.6,4C.6,9D.4,614.以下程序的运行结果是(14)。voidf(char*s)main(){char*p=s;{char*a=abCD12;for(;*s;s++)f(a);if(*s='A'&&*s='Z')*p++=*s;printf(\n%s,a);*p=0;}}A)abCD12B)CDC)ab12D)CD1215.以下程序的运行结果是(15)。main(){chara[]=”abcXYZ789”;intj,k=0;for(j=0;a[j];j++)if(a[j]a[k])k=j;j=a[0];a[0]=a[k];a[k]=j;printf(“%s”,a);}A)ZbcXYa789B)cbaXYZ789C)7bcXYZa89D)9bcXYZ78a16.以下程序的运行结果是(16)。main(){inti,a=2;for(i=0;i3;i++)printf(“%4d”,f(a));}f(inta){intb=0;staticintc=3;b++;c++;return(a+b+c);}A)777B)71013C)7911D)78917.以下程序的运行结果是(17)。main(){inti,b,k=0;for(i=1;i=5;i++){b=i%2;while(b––=0)k++;}printf(“%d,%d”,k,b);}A)3,–1B)8,–1C)3,0D)8,–218.以下程序的运行结果是(18)。#defineFx+ymain(){intx=4,y=5,z;if(x++y)z=2*F;elsez=F/2;printf(“\n%d”,z);}A)5B)7C)15D)2019.以下程序的运行结果是(19)。#includestdio.hmain(){staticchara[]=“Language”,b[]=“programe”;char*p1,*p2;intk;p1=a;p2=b;for(k=0;k=7;k++)if(*(p1+k)==*(p2+k))printf(“%c”,*(p1+k));}A)gaeB)gaC)LanguageD)有语法错20、以下程序的运行结果是(20)。main(){intj,k,s1=0,s2=0,a[3][3]={1,2,3,4,5,6,7,8,9};for(j=0;j3;j++)for(k=j+1;k3;k++){s1+=a[j][k];s2+=a[k][j];}printf(“\n%d,%d”,s1,s2);}A)26,34B)34,26C)19,11D)11,19中国地质大学(武汉)考试出题专用纸教务处制试卷类别B使用班级全校统考使用学期2007下学期任课教师教研室主任审核签字21、以下程序的运行结果是(21)。main(){inta[10]={8,6,4,0,9,1,2,5,7,3},t,*k=a,*p,*q;for(p=a;pa+10;p++)if(*p*k)k=p;for(p=k,q=k;p=a&&qa+10;p--,q++){t=*p;*p=*q;*q=t;}for(p=a;pa+10;p++)printf(“%d”,*p);}A)3752190468B)7521904683C)2190468573D)864091257322、以下程序的运行结果是(22)。main(){inta[10]={3,2,5,4,6,7,9,12,8,10},i,p=0,q=0;for(i=0;i10;i++){if(a[i]p)p=a[i];if(a[i]q)q=a[i];}printf(“\n%d,%d”,p,q);}A)0,0B)12,0C)12,2D)2,12三、程序填充题(每空3分,共24分)选择适当的内容填在以下各程序的下划线处,以使程序完整。●判断一个数是否为水仙花数的函数,是水仙花数时返回1,否则返回0。所谓水仙花数,它是一个三位数,该数正好等于其各位数字的立方和。intflower(intm){inti,s=m,k=m;if(m100||m999)return0;while(k){(23);s-=i*i*i;k/=10;}return((24));}(23)A)i=k/100B)i=k/10%10C)i=k/10D)i=k%10(24)A)s==m?1:0B)s!=0C)!sD)s●找出矩阵中的所有鞍点(位置)。所谓鞍点,即该点的数在行上最小,列上最大。main(){inti,j,k,p,m=4,n=5,a[4][5];for(i=0;im;i++)for(j=0;jn;j++)scanf(%d,&a[i][j]);for(i=0;im;i++){p=a[i][0];for(j=0;jn;j++)if((25))p=a[i][j];for(j=0;jn;j++){if(a[i][j]==p){for(k=0;km;k++)if((26))break;if(k==m)(27);}}}注:该程序考虑了一行有多个鞍点的情况}(25)A)a[i][j]pB)a[i][j]pC)a[j][i]pD)a[j][i]p(26)A)a[i][j]pB)a[i][j]pC)a[k][j]pD)a[k][j]p(27)A)printf(\n%3d,%3d,k,j)B)printf(\n%3d,%3d,i,j)C)printf(\n%3d,a[i][j])D)printf(\n%3d,a[k][j])●下面程序的功能是在字符串str中找出最大的字符并放在第一个位置上,并将该字符前的原字符往后顺序移动,如chyab变成ychab。main(){charstr[80],*p,max,*q;q=p=str;gets(p);max=*p++;while(*p){if(max*p){max=*p;(28);}p++;}while((29)){*q=*(q-1);(30);}*q=max;puts(str);}(28)A)p++B)p=qC)q=pD)q++(29)A)qstrB)qpC)*qstr[0]D)*q*p(30)A)q++B)str--C)q--D)p--四、程序设计题(20分)已知文本文件f1.txt中存放了某公司30个员工,500条销售数据(包括员工号,员工姓名、产品名称,销售数量和销售单价),每个员工可能有多条销售数据,存放格式是每行存放一个销售数据,每个数据之间用空格隔开;假定公司按销售额进行提成,销售额大于10000,提成10%,销售额大于5000,提成8%,销售额大于3000,提成5%,销售额大于1000,提成2%,销售额小于1000,提成1%.请编写程序计算出每个员工的总提成,并按提成额从高到低的顺序存放到文本文件f2.txt中。中国地质大学(武汉)考试出题专用纸教务处制课程:C语言程序设计(B卷)班学号学号姓名二00七年下C程序设计参考答案(B卷)选择题标准答案:(01)B(02)B(03)A(04)B(05)C(06)A(07)A(08)A(09)D(10)B(11)C(12)D(13)D(14)B(15)B(16)D(17)D(18)C(19)A(20)D(21)C(22)B(23)D(24)C(25)B(26)D(27)B(28)C(29)A(30)C程序设计题参考答案:typedefstruct{intno;charname[20];floatscore;}