第1页共14页南昌大学2007~2008学年第一学期期末考试试卷(提前)试卷编号:(B)卷课程编号:H61050001课程名称:C程序设计考试形式:闭卷适用班级:过控05姓名:学号:班级:学院:专业:考试日期:2007-12-24题号一二三四总分累分人签名题分50201020100得分考生注意事项:1、本试卷共10页,请查看试卷中是否有缺页或破损。如有立即举手报告以便更换。2、考试结束后,考生不得将试卷、答题纸和草稿纸带出考场。一、单项选择题(每小题2分,共50分,答案请写在答题卡)得分评阅人1.C语言中的标识符只能由字母、数字、下划线三种字符组成,且第一个字符________。.A)必须为字母B)必须为下划线C)必须为字母或下划线D)可以是字母、数字、下划线中任意一种字符2.若t为double类型,表达式t=1,t+5,t++的值是________。A)1B)6.0C)2.0D)1.03.以下运算符中,运算对象必须是整型的是_______。A)/B)%=C)!=D)〈=4.设有定义:longx=-123456L;,则以下能够正确输出变量x值的语句是A)printf(“x=%d\n”,x);B)printf(“x=%1d\n”,x);C)printf(“x=%8dL\n”,x);D)printf(“x=%LD\n”,x)5.已知intx=10,y=20,z=30;以下语句执行后x,y,z的值是_____。if(x>y)z=x;x=y;y=z;A)x=10,y=20,z=30B)x=20,y=30,z=30C)x=20,y=30,z=10D)x=20,y=30,z=206.若w=1,x=2,y=3,z=4,则条件表达式w<x?w:y<z?y:z的值是_______。A)1B)2C)3D)4第2页共14页7.判断char型变量c1是否为小写字母的正确表达式为________。A)‘a‘<=c1<=‘z’B)(c1>=a)&&(c1<=z)C)(‘a‘>=c1)||(‘z’<=c1)D)(c1>=‘a‘)&&(c1<=‘z‘)8.有以下程序main(){ints=0,a=1,n;scanf(%d,&n);do{s+=1;a=a-2;}while(a!=n);printf(%d\n,s);}若要使程序的输出值为2,则应该从键盘给n输入的值是_____。A)-1B)-5C)-3D)09.有以下程序main(){intk=4,n=4;for(;nk;){n++;if(n%3!=0)continue;k--;}printf(%d,%d\n,k,n);}程序运行后的输出结果是________。A)1,1B)2,2C)3,3D)4,410.有以下程序main(){inti;for(i=0;i3;i++)switch(i){case1:printf(%d,i);case2:printf(%d,i);default:printf(%d,i);}}执行后输出结果是________。A)011122B)012C)012020D)12011.有以下程序段intn=0,p;do{scanf(“%d”,&p);n++;}while(p!=12345&&n3);此处do—while循环的结束条件是__________。A)P的值不等于12345并且n的值小于3B)P的值等于12345并且n的值大于等于3C)P的值不等于12345或者n的值小于3D)P的值等于12345或者n的值大于等于312.以下程序的输出结果__________。main(){inta=0,i;for(i=1;i5;i++){switch(i){case0:第3页共14页case3:a+=2;case1:case2:a+=3;default:a+=5;}}printf(%d\n,a);}A)13B)20C)41D)3113.有以下程序段intx=3do{printf(“%d”,x-=2);}while(!(--x));其输出结果是_________。A)1B)30C)1-2D)死循环14.以下程序的输出结果是_________。main(){inti;for(i=1;i6;i++){if(i%2){printf(#);continue;}printf(*);}printf(\n);}A)#*#*#B)#####C)*****D)*#*#*15.下面程序的功能是将从键盘输入的一对数从小到大排序输出。当输入一对相等数时结束循环,请选择填空_______。main(){inta,b,t;scanf(%d,%d,&a,&b);while(_________){if(ab){t=a;a=b;b=t;}printf(%d,%d\n,a,b);scanf(%d,%d,&a,&b);}A)!a=bB)a!=bC)a==bD)a=b16.以下程序的输出结果是________。main(){inta[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;for(i=1;i3;i++)for(j=0;j=i;j++)s+=a[i][j];printf(“%d\n”,s);}A)18B)19C)20D)21第4页共14页17.有以下程序main(){inti,j;for(i=1;i4;i++){for(j=i;j4;j++)printf(%d*%d=%d,i,j,i*j);printf(\n);}}程序运行后的输出结果是_________。A)1*1=11*2=21*3=32*1=22*2=43*1=3B)1*1=11*2=21*3=32*2=42*3=63*3=9C)1*1=11*2=22*2=41*3=32*3=63*3=9D)1*1=118s12和s2已正确定义并分别指向两个字符串。若要求:当s1所指串大于s2所指串时,执行语句S;则以下选项中正确的是_______。A)if(s1s2)S;B)if(strcmp(s1,s2))S;C)if(strcmp(s2,s1)0)S;D)if(strcmp(s1,s2)0)S;19.若有以下说明和语句,则输出结果是_______。charsp[]=\t\v\\\0will\n;printf(%d,strlen(sp));A)1B)3C)9D)字符串中有非法字符20.以下程序的输出结果是_____。main(){inti,k,a[10],p[3];k=5;for(i=0;i10;i++)a[i]=i;for(i=0;i3;i++)p[i]=a[i*(i+1)];for(i=0;i3;i++)k+=p[i]*2;printf(%d\n,k);}A)20B)21C)22D)2321.要求以下程序的功能是计算:1+1/2+1/3+…+1/10.main(){intn;floats;s=1.0;for(n=10;n1;n--)s=s+1/n;print(%6.4f\n,s);第5页共14页}程序运行后输出结果错误,导致错误结果的程序行是________。A)s=1.0;B)for(n=10;n1;n--)C)s=s+1/n;D)printf(%6.4f/n,s);22.已知inti,x[3][4];,则不能将x[1][1]的值赋给变量i的语句是_______。A)i=*(*(x+1)+1)B)i=x[1][1]C)i=*(*(x+1))D)i=*(x[1]+1)23.已有定义int(*p)();,则指针p可以。A)代表函数的返回值B)指向函数的入口地址C)代表函数的类型D)代表函数返回值的类型24.凡在函数中未指明存储类别的变量,其隐含的存储类别为________。A.auto型B.static型C.extern型D.register型25.有以下函数fun(char*a,char*b){while((*a!=‘\0‘)&&(*b!=‘\0‘)&&(*a==*b)){a++;b++;}return(*a-*b);}该函数的功能是___________。.A)计算a和b所指字符串的长度之差B)将b所指字符串复制到a所指字符串中C)将b所指字符串连接到a所指字符串后面D)比较a和b所指字符串的大小二、程序阅读题(每题4分,共20分,答案请写在答题卡上)得分评阅人1.以下程序段的执行结果是___________。main(){inti,j,a[][3]={1,2,3,4,5,6,7,8,9};for(i=0;i3;i++)for(j=i+1;j3;j++)a[j][i]=0;for(i=0;i3;i++){for(j=0;j3;j++)printf(%d,a[i][j]);printf(\n);}}2.以下程序运行后的输出结果是__________。main(){inti,m=0,n=0,k=0;for(i=9;i=11;i++)第6页共14页switch(i/10){case0:m++;n++;break;case10:n++;break;default:k++;n++;}printf(%d%d%d\n,m,n,k);}3.下面函数的功能是:_________。#includestring.hvoidinvert(charstr[]){inti,j,【1】;for(i=0,j=strlen(str)【2】;ij;i++,j--){k=str[i];str[i]=str[j];str[j]=k;}}4.设有下列程序:#includestdio.h#includestring.hmain(){inti;charstr[10],temp[10];gets(temp);for(i=0;i4;i++){gets(str);if(strcmp(temp,str)0)strcpy(temp,str);}printf(%s\n,temp);}上述程序运行后,如果从键盘上输入(在此CR代表回车符):C++CRBASICCRQuickCRAdaCRPascalCR则程序的输出结果是__________。5.以下程序的输出结果是___________。main(){chars[]=“9876”,*p;for(p=s;ps+2;p++)printf(“%s\n”,p);}三、填空题(每空2分,共10分,答案请写在答题卡上)1.下面程序的功能是:输出100以内能被3整除且个位数为6的所有整数,请填空。#includestdio.h得分评阅人第7页共14页main(){inti,j;for(i=0;i【1】;i++){j=i*10+6;if(【2】)continue;printf(%d,j);}}2.下面fun函数的功能是将形参x的值转换成二进制数,所得二进制数的每一位数放在一维数组中返回,二进制数的最低位放在下标为0的元素中,其它依此类推。请填空。fun(intx,intb[]){intk=0,r;do{r=x%2;b[k++]=r;x/=【3】;}while(x);}3.下面的findmax函数返回数组s中最大元素的下标,数组中元素的个数由t传入,请填空。findmax(ints[],intt){intk,p;for(p=0,k=p;pt;p++)if(s[p]s[k])【4】。returnk;}4.以下程序的功能是将字符串s中的数字字符放入d数组中,最后输出d中的字符串。例如,输入字符串:abc123edf456gh,执行程序后输出:123456。请填空。#includestdio.h#includectype.hmain(){chars[80],d[80];inti,j;gets(s);for(i=j=0;s[i]!=‘\0’;i++)if(【5】){d[j]=s[i];j++;}d[j]=‘\0’;puts(d);}四、编程题(每题10分,共20分,答案请写在答题卡上)1.通过循环按行顺序为一个5×5的二维数组a赋1到25的自然数,然后输出该数组的左下半三角。试