第1页共9页南昌大学2005~2006学年第二学期期末考试试卷试卷编号:(B)卷课程编号:H61050001课程名称:C程序设计考试形式:闭卷适用班级:全校理工科姓名:学号:班级:学院:专业:考试日期:题号一二三四五六七八九十总分累分人签名题分30302218100得分考生注意事项:1、本试卷共8页,请查看试卷中是否有缺页或破损。如有立即举手报告以便更换。2、考试结束后,考生不得将试卷、答题纸和草稿纸带出考场。一、单项选择题(每空1分,共30分)得分评阅人1.一个C程序的执行是从。A)本程序的main函数开始,到main函数结束B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C)本程序的main函数开始,到本程序文件的最后一个函数结束D)本程序文件的第一个函数开始,到本程序main函数结束2.一个C语言程序是由。A)若干主程序和若干子程序组成B)函数组成C)若干过程组成D)若干子程序组成3.以下不能定义为用户标识符是。A)MainB)_0C)_intD)sizeof4.合法的C语言赋值语句是。A)a=b=58B)i++;C)a=58,b=58D)k=int(a+b);5.以下所列的C语言常量中,错误的是。A)0xFFB)1.2e0.5C)2LD)’\72’6.若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是。A)1B)2C)2.0D)2.5说明:请将各小题正确答案的字母序号填到相应小题的下划线上。第2页共9页7.若有说明语句:inta=5;a++;此时表达式a++的值是。A)7B)6C)5D)48.putchar函数可以向终端输出一个。A)整型变量表达式值B)实型变量值C)字符串D)字符或字符型变量值9.以下叙述中错误的是。A)对于double类型数组,不可以直接用数组名对数组进行整体输入或输出B)数组名代表的是数组所占存储区的首地址C)当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出下标越界的出错信息D)可以通过赋初值的方式确定数组元素的个数10.设a=5,b=6,c=7,d=8,m=2,n=2,执行(m=ab)&&(n=cd)后n的值为______。A)1B)2C)3D)411.以下程序的输出结果是______。main(){intp[8]={11,12,13,14,15,16,17,18},i=0,j=0;while(i8){if(p[i]%2)j+=p[i];i++;}printf(%d\n,j);}A)42B)45C)56D)6012.以下能正确定义一维数组的选项是______。A)inta[5]={0,1,2,3,4,5};B)chara[]={0,1,2,3,4,5};C)chara={'A','B','C'};D)inta[5]=0123;13.以下程序的输出结果是______。intf1(intx,inty){returnxy?x:y;}intf2(intx,inty){returnxy?y:x;}main(){inta=4,b=3,c=5,d=2,e,f,g;e=f2(f1(a,b),f1(c,d));f=f1(f2(a,b),f2(c,d));g=a+b+c+d-e-f;printf(%d,%d,%d\n,e,f,g);}A)4,3,7B)3,4,7C)5,2,7D)2,5,714.以下程序的输出结果是______。voidf(int*x,int*y){intt;t=*x;*x=*y;*y=t;}main(){inta[8]={1,2,3,4,5,6,7,8},i,*p,*q;p=a;q=&a[7];while(p=q){f(p,q);p++;q--;}for(i=0;i8;i++)printf(%d,a[i]);}A)82345671B)56781234C)12345678D)8765432115.已有定义int(*p)();,则指针p可以。A)代表函数的返回值B)指向函数的入口地址C)代表函数的类型D)代表函数返回值的类型第3页共9页16.以下程序的输出结果是______。main(){inta[3][3],*p,i;p=&a[0][0];for(i=0;i9;i++)p[i]=i;for(i=0;i3;i++)printf(%d,a[1][i]);}A)012B)123C)234D)34517.以下程序的输出结果是______。main(){intx=1,a=0,b=0;switch(x){case0:b++;case1:a++;case2:a++;b++;}printf(“a=%d,b=%d\n”,a,b);}A)a=2,b=1B)a=1,b=1C)a=1,b=0D)a=2,b=218.以下程序执行后sum的值是______。main(){inti,sum=0;for(i=1;i6;i++)sum+=i;printf(“%d\n”,sum);}A)15B)14C)不确定D)019.以下程序的输出结果是______。main(){inta=1,b;for(b=1;b=10;b++){if(a=8)break;if(a%2==1){a+=5;continue;}a-=3;}printf(%d\n,b);}A)3B)4C)5D)620.以下程序的输出结果是______。main(){chars[]=159,*p;p=s;printf(%c,*p++);printf(%c,*p++);}A)15B)16C)12D)5921.若fp是指向某文件的指针,且已读到文件的末尾,则C语言函数,feof(fp)的返回值不可能是______。A)EOFB)-1C)1D)NULL22.以下能正确定义二维数组的是_______。A)inta[][3];B)inta[][3]=2{2*3};C)inta[][3]={1};D)inta[2][3]={{1},{2},{3,4}};第4页共9页23.下面函数的功能是______。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所指字符串的大小24.以下程序的输出结果是______。main(){intm=12,n=34;printf(%d%d,m++,++n);printf(%d%d,n++,++m);}A)12353514B)12353513C)12343514D)1234351325.以下程序运行后的输出结果是____#defineS(x)4*x*x+1main(){inti=6,j=8;printf(%d\n,S(i+j));}A)81B)785C)402D)40126.有以下程序main(){chara[]={‘a’,‘b’,‘c’,‘d’,‘e’,‘f’,‘g’,‘h’,‘\0’};inti,j;i=sizeof(a);j=strlen(a);printf(“%d,%d\b”i,j);}程序运行后的输出结果是_________。A)9,9B)8,9C)1,8D)9,827.若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|10的是_____。A)abs(x-y)10B)x-y-10&&x-y10C)@(x-y)-10||!(y-x)10D)(x-y)*(x-y)10028.若有说明语句:intc[4][5],(*p)[5];p=c;能正确引用c数组元素的是_________。A)p+1B)*(p+3)C)*(p+1)+3D)*(p[0]+2))29.设有以下语句typedefstructS{intg;charh;}T;则下面叙述中正确的是_________。A)可用S定义结构体变量B)可以用T定义结构体变量C)S是struct类型的变量D)T是structS类型的变量30.有以下程序main(){unsignedchara,b;a=4|3;b=4&3;printf(“%d%d\n”,a,b);}执行后输出结果是_________。A)70B)07C)11D)430第5页共9页二、程序阅读题(每小题6分,共30分)得分评阅人1.源程序如下:#includestdio.hmain(){intk=4,m=1,p;p=func(k,m);printf(%d,,p);p=func(k,m);printf(%d\n,p);}func(inta,intb){staticintm=0,i=2;i+=m+1;m=i+a+b;returnm;}程序运算后的结果为:____________。2.源程序如下:main(){inta[][3]={{1,2,3},{4,5,0}},{*pa}[3],i;pa=a;for(i=0;i3;i++)if(i2)pa[1][i]=pa[1][i]-1;elsepa[1][i]=1;printf(%d\n,a[0][1]+a[1][1]+a[1][2]);}程序运算后的结果为:____________。3.源程序如下:intm(unsignedk){ints=1;do{s*=k%10;k/=10;}while(k);returns;}main(){printf(%d,%d\n,m(1234),m(43209));}则程序的输出结果是果是:____________。4.源程序如下:main(){inta=10,b=20,c;c=(a%b1)||(a/b1);printf(%d%d%d\n,a,b,c);}程序运算后的结果为:____________。第6页共9页5.源程序如下:#includestring.hmove(char*str,intn){chartemp;inti;temp=str[n-1];for(i=n-1;i0;i--)str[i]=str[i-1];str[0]=temp;}main(){chars[50];intn,i,z;scanf(%d,%s,&n,s);z=strlen(s);for(i=1;i=n;i++)move(s,z);printf(%s\n,s);}若从键盘输入:3,abcde<回车>,则输出结果是:____________。三、程序填空题(每空2分,共22分)得分评阅人1.以下程序完成的功能是寻找出二维数组中的最大值,请填空:#includestdio.hmax(intm,intn,inta[][]){inti,j,max;max=__(1)___;for(i=0;im;i++)for(j=0;jn;j++)if(maxa[i][j])____(2)___;return___(3)___;}main(){inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};printf(%d\n,__(4)_);}(1)_______________________(2)_______________________(3)_______________________(4)_______________________2.若fp已正确定义为一个文件指针,d1.dat为二进制文件,请填空,以便为“读”而打开此文件:fp=fopen(__(5)___,___(6)___);(5)_______________________(6)_______________________第7页共9页3.以下程序的功能是从键盘输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入,请填空:main(){floatx,amax,amin;scanf(%f,&x);amax=x;amin=x;while(_(7)_){if(xmax)amax=x;if(__(8)__)amin=x;scanf(%f,&x);}printf(\nam