第1页共6页装线订中国地质大学(武汉)课程考核试卷教务处制版本:2011.5试卷类别A□B□使用学期命题人签字审题人签字审定人签字考生学号考生姓名所在班级考核内容:一、单项选择(每题2分,共20分)1.假定inta=0,b=1;表达式:!(a='0')&&b--,a+b的值是()。A)0B)1C)48D)492.假定inta=2,b=5;表达式:(float)a/b+(float)(b/a)的值是()。A)2.0B)2.4C)2.5D)2.93.表达非零变量a,b,c之间能满足条件:a≥b≥c的正确表达式是()。A)a=b=c&&a*b*c!=0B)a=b&&b=c||a*b*c!=0C)a=b&&b=c&&a*b*cD)a=b=c||a*b*c4.字符串ab\\0\128的长度是()。A)4B)5C)6D)75.以下各循环语句中,不是无限循环的是__()_。A)for(k=-1;-10k0;);B)for(i=1,j=10;i-j;i++,j--);C)for(k=1;k=10;k++);D)for(k=1;0k10;k++);6.设有定义:inta='2',b=50,c=2;,以下语句中输出效果与其他三个不同的是__()_。A)printf(%c,a);B)printf(%c,b);C)printf(%d,c);;D)printf(%d,a);7.下列函数的功能是()。A)字符串复制B)字符串连接C)字符串比较D)都不是voidf(chat*a,char*b){while(*a++);while(*b)*a++=*b++;*a=0;}8.猴子吃桃问题:第一天摘下n个桃子,猴子每天把剩下的桃子吃一半再吃一个,到第十天只剩一个,求第一天摘下的桃子n。下列各函数中正确的是()。A)intf(){inti,n=1;for(i=9;i=1;i--)n=(n+1)*2;returnn;}B)intf(){inti,n=1;for(i=9;i=1;i--)n=n/2-1;returnn;}C)intf(){inti,n=1;for(i=10;i=1;i--)n=(n+1)*2;returnn;}D)intf(){inti,n=1;for(i=10;i=1;i--)n=n/2-1;returnn;}课程名称:计算机高级语言程序设计(C)学时:56考核方式:笔试开卷□笔试闭卷□口试□其它辅助工具:可用□工具名称:不可用□第2页共6页9.以下程序中有一个语法错误,这个错误的类型是()。#definen2main(){inta[n]={2,3},b=3;if(a[0]+a[1]b){intb=1,x;x=a[0]+a[1]-b;printf(\nx=%d,x);}elsex=0;printf(\nx=%d,x);}A)数组说明错B)if结构错C)变量重定义D)使用了未定义的变量10.对于函数f的功能,以下各项描述中,正确的是__()_。intf(intn){ints=0;while(n){s+=n%10;n/=10;}return(s==10);}A)求整数n的各位数字之和B)判断n的各位数字之和是否等于10,等于10时返回1,否则返回0C)判断n的各位数字之和是否等于10,等于10时返回0,否则返回1D)无论n是多少,函数的返回值都是10二、程序阅读(每题3分,共30分)11.以下程序的运行结果是__()_。main(){inti,n=0;for(i=1;i=10;i++)if(!(i%2)&&i%3)n++;printf(\nn=%d,n);}A)2B)4C)6D)812.以下程序的输出结果是()。main(){chara[]=”abcXYZ”;inti,j,k=0;for(i=0;a[i];i++);for(j=0;a[j];j++)if(a[j]a[k])k=j;i--;j=a[i];a[i]=a[k];a[k]=j;printf(“%s”,a);}A)abZXYcB)XbcaYZC)cbaXYZD)abcZYX第3页共6页13.以下程序的运行结果是()。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]a[p])p=i;if(a[i]a[q])q=i;}printf(\n%d,%d,p,q);}A)9,0B)0,9C)3,6D)6,314.以下程序的运行结果是()。main()f(int*x,int*y){inta=3,b=5;{int*p;f(&a,&b);p=x;x=y;y=p;printf(“\n%d,%d”,a,b);printf(“%d,%d”,*x,*y);}}A)3,5,3,5B)5,3,5,3C)3,5,5,3D)5,3,3,515.以下程序的运行结果是__()_。inta=3,b=5;f(inta){a++;b+=a;}main(){inta=6;f(a-1);printf(\n%d,%d,a,b);}A)3,8B)3,11C)6,8D)6,1116.以下程序的运行结果是()。main(){chara[]=abhd234,b[]=dcb321,*s=a,*t=a,*p;for(;*s;s++)for(p=b;*p;p++)if(*s==*p){*t++=*p;break;}*t=0;printf(\n%s,a);}A)bd23B)ah4C)db32D)c117.以下程序的运行结果是()。intf(intm)main(){inti;{inti,s=0;if(m==2)return1;for(i=1;i=10;i++)s+=f(i);for(i=2;im;i++)if(m%i==0)return0;printf(%d,s);return1;}}A)3B)4C)15D)17第4页共6页18.以下程序的运行结果是()。main(){inti,j,s=0,a[3][3]={1,2,3,4,5,6,7,8,9};for(i=0;i3;i++)for(j=0;ji;j++)s+=a[i][j];printf(%d,s);}A)19B)34C)26D)1119.以下程序的运行结果是()。main(){chara[]=123,*p=a;while(*p)switch(*p++){case'1':printf(X);case'2':printf(Y);break;case'3':printf(Z);}}A)XYZB)XXYZC)XYYZD)XYZZ20.假定二进制文件f1.dat中存放5,6,7,8,9五个整数,则以下程序的运行结果是__()_。#includestdio.hmain(){inta,b;FILE*fp;fp=fopen(f1.dat,rb);fread(&a,sizeof(int),1,fp);fseek(fp,2*sizeof(int),SEEK_CUR);fread(&b,sizeof(int),1,fp);fclose(fp);printf(\n%d,%d,a,b);}A)5,6B)5,7C)5,8D)5,9三、程序填充题(每空4分,共20分)选择适当的内容填在以下各程序的下划线处,以使程序完整。●以下函数是将整数k插入到数列a中的函数,已知数列a从大到小有序,要求插入后仍有序,并且插入后挤掉原来的最后一个。第5页共6页voidinsert(inta[],intn,intk){inti,j;for(i=0;in;i++)if(a[i]k)break;for((21))a[j]=a[j-1];a[i]=k;}(21)A)j=n-1;ji;j--B)j=n;jiC)j=i;jn;j++D)j=i+1;jn;j++●求100至1000之间有多少个数其各位数字之和是5。main(){inti,s,k,count=0;for(i=100;i=1000;i++){s=0;k=i;while((22)){s=s+k%10;k=(23);}if(s==5)count++}printf(“\n%d”,count);}(22)A)1B)kC)k1D)k10(23)A)k/10B)k%10C)k–k%10D)k–k/10●一个球从100m高度自由落下,每次落地后反跳回原高度的一半,再落下,再反弹┈。求它在第10次落地时,共经过多少米?第10次反弹多高?main(){inti;floath=100,s=0;for(i=1;i=10;i++){(24)}printf(\n%f%f,h,(25));}(24)A)s+=h;h/=2;B)h/=2;s+=h;C)h/=2;s+=2*h;D)h/=2;s+=3*h;(25)A)h,sB)h,s-hC)h,s+hD)都不是第6页共6页四、程序设计题(每题15分,共30分)1.已知文本文件f1.txt中存放了若干学生的数据,具体格式如下:①文件中每行为一个学生的数据,包括:学号(整数)、姓名(字符串)和考分(整数),同一行的数据间用空格分隔。②学生人数未知,读完为止,但已知不超过100人。请编写程序读出文件中的数据,并按考分从高到低的顺序排序后按文本方式输出到文件f2.txt中(要求使用结构体)。2.编写一个用于判断一个数是否为完全数的函数,然后编写调用该函数的主函数,实现输出1-100之间所有完全数的目的。所谓完全数,是指其所有因子之和正好等于该数本身的数,如:6=1+2+3,6是完全数。