您好,欢迎访问三七文档
考试中心填写:湖南大学课程考试试卷课程名称:C语言程序设计;试卷编号:();考试时间:120分钟年月日考试用专业班级:题号一二三四五六七八九十总分应得分101020202020100实得分评分:评卷人一、选择题(每题2分,共10分)1.以下叙述中正确的是()A)构成C程序的基本单位是函数B)可以在一个函数中定义另一个函数C)main()函数必须放在其它函数之前D)所有被调用的函数一定要在调用之前进行定义2.设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是()A)6.500000B)6C)5.500000D)6.0000003.已知i、j、k为int型变量,若从键盘输入:1,2,3回车,使i的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是()A)scanf(“%2d%2d%2d”,&i,&j,&k);B)scanf(“%d%d%d”,&i,&j,&k);C)scanf(“%d,%d,%d”,&i,&j,&k);D)scanf(“i=%d,j=%d,k=%d”,&i,&j,&k);4.若x为unsignedint型变量,则执行下列语句后x值为()x=65535;printf(“%d\n”,x);A)65535B)1C)无定值D)-15.定义全局变量时,若变量的的存储类别缺省,则默认的存储类型是()。A)autoB)registerC)externD)static二、判断题(每题1分,共10分)1、C程序中的函数不能嵌套调用,但可嵌套定义。()。2、当形式参数为指针变量名时,实际参数可为指针变量名、数组名或其它类型变量的首地址()。3、若有说明:staticinta[3][4];,则数组a中各数组元素可在程序的编译阶段得到初值0()。4、若用数组名作为函数调用时的实参,则实际上传递给形参数组的是数组的第一个元素的值()。5、共用体变量的地址和它的各成员的地址都是同一起始地址。()。6、语句int(*p)(int,int);定义了一指针变量p,指向一个包含有两个int型形参的函数,其返回值也为int型数据。()。7、文件指针与文件内部位置指针意义相同。()。8、在定义枚举类型数据时,枚举元素是变量。()。9、continue语句只能冲破一层循环。()。10、结构体类型数据可以嵌套定义。()。装订线(答题不得超过此线)学号:姓名:第1页(共6页)三、写出程序运行结果(每题5分,共20分)1.main(){inta=15,b=21,m=0;switch(a%3){case0:m++;break;case1:m++;switch(b%2){default:m++;case0:m++;break;}}printf(“%d\n”,m);}程序运行后的输出结果是:2.floatfun(intx,inty){return(x+y);}main(){inta=2,b=5,c=8;printf(%3.0f\n,fun((int)fun(a+c,b),a-c));}程序运行后的输出结果是:3.voidfun(char*c,intd){*c=*c+1;d=d+1;printf(%c,%c,,*c,d);}main(){chara='A',b='a';fun(&b,a);printf(%c,%c\n,a,b);}程序运行后的输出结果是:4.structstu{charnum[10];floatscore[3];};main(){structstus[3]={{20021,90,95,85},{20022,95,80,75},{20023,100,95,90}},*p=s;inti;floatsum=0;for(i=0;i3;i++)sum=sum+p-score[i];printf(%6.2f\n,sum);}程序运行后的输出结果是:第2页(共6页)四、程序改错(每题5分,共20分)1.以下程序的功能是:按顺序读入10名学生4门课程的成绩,计算出每位学生的平均分并输出,程序如下:main(){intn,k;floatscore,sum,ave;sum=0.0;for(n=1;n=10;n++){for(k=1;k=4;k++){scanf(%f,&score);sum+=score;}ave=sum/4.0;printf(NO%d:%f\n,n,ave);}}上述程序运行后结果不正确,调试中发现有一条语句出现在程序中的位置不正确。这条语句是哪条?并将其移到正确的位置。2.以下函数的功能是计算s=1+1/2+1/3+……+1/n,程序运行后结果不正确,错误的语句是哪条?并改之。main(){floats=0.0;inti;for(i=1;i=3;i++)s=s+1/i;printf(%f,s);}3.以下函数的功能是:输出有10个元素的整型数组a的元素值。程序运行后结果不正确,只增加一条语句使其完成要求功能。main(){inta[10],*p=a,i;for(i=0;i10;i++)scanf(%d,p++);printf(\n);for(i=0;i10;i++,p++)printf(%d,*p);}4.以下函数的功能是:打印1到5的阶乘值。程序运行后结果不正确,只修改一条语句使其完成要求功能。intfac(n)intn;{intf=1;f=fn;return(f);}main(){inti;for(i=1;i=5;i++)printf(“%d!=%d\n”,i,fac(i));}第3页(共6页)五、程序填空(在【】中填空,每题5分,共20分)1.fun函数的功能是:首先对a所指的N行N列的矩阵,找出各行中的最大的数,再求这N个最大值中的最小的那个数作为函数值返回。请填空。#includestdio.h#defineN4intfun(int(*a)[N]){introw,col,max,min;for(row=0;rowN;row++){for(max=a[row][0],col=1;colN;col++)if(【】)max=a[row][col];if(row==0)min=max;elseif(【】)min=max;}returnmin;}2.函数sstrcmp()的功能是对两个字符串进行比较。当s所指字符串和t所指字符串相等时,返回值为0;当s所指字符串大于t所指字符串时,返回值大于0;当s所指字符串小于t所指字符串时,返回值小于0(功能等同于库函数strcmp())。请填空。#includestdio.hintsstrcmp(char*s,char*t){while(*s&&*t&&(*s-*t)【】){s++;t++;}return【】}3.下面的程序是用指针来交换两个数据,请将缺省语句填上。voidexchange(int*p,int*q){intt;t=*p;*p=*q;*q=t;}main(){inta,b,*x,*y;a=10;b=20;x=&a;【】【】printf(“%d%d\n”,*x,*y);}4.下面的程序是将字符串a按反向存入字符串b中并输出。(如:串a为12345,则串b为54321)main(){char*a={abcdefg},b[80],*p=b;intn,m,k;k=strlen(a);n=k-1;m=0;while(n=0){*(p+m)=【】n--;【】}*(p+k)=*(a+k);printf(%s\n,a);printf(%s\n,b);}六、编写函数完善下面程序(每题10分,共20分)1.编写在字符串中寻找关键字符的子函数#includestdio.hchar*search(char*tagstr,char*c){}main(){char*string=Iamastudent,c;printf(Pleaseenterthecharacter:);scanf(%c,&c);/*输入关键字符*/if(search(string,&c))printf(Found!!!,search(string,&c));elseprintf(NotFound!!!\n);}2.用指向函数的指针作形参,设计一个函数process,每次实现不同的功能,当用不同的函数名作实参调用process时,process再去调用相应的函数。#includestdio.hmain(){intmax(),min(),add(),process();inta,b;printf(enteraandb:);scanf(%d,%d,&a,&b);printf(max=);process(a,b,max);printf(min=);process(a,b,min);printf(sum=);process(a,b,add);}第5页(共6页)第4页(共6页)max(x,y)intx,y;{intz;if(xy)z=x;elsez=y;return(z);}min(x,y)intx,y;{intz;if(xy)z=x;elsez=y;return(z);}add(x,y)intx,y;{intz;z=x+y;return(z);}process(){}第6页(共6页)考试中心填写:湖南大学课程考试答题纸课程名称:C语言程序设计;试卷编号:();考试时间:120分钟年月日考试用专业班级:题号一二三四五六七八九十总分应得分101020202020100实得分评分:评卷人一、选择题(每题2分,共10分)1.2.3.4.5.二、判断题(每题分,共10分)1.2.3.4.5.6.7.8.9.10.三、写出程序运行结果(每题5分,共20分)1.2.3.4.。四、程序改错(每题5分,共20分)1.程序中的位置不正确的语句是:;改为(说明新位置):。2.错误的语句是:;改为:。3.在增加一条语句:。4.将语句:改为:。五、程序填空(每题5分,共20分)(每题按原程序次序填空)1.【】【】。2.【】【】。3.【】【】。4.【】【】。六、编写函数完善下面程序(每题10分,共20分)1.char*search(char*tagstr,char*c)装订线(答题不得超过此线)学号:姓名:2.process()考试中心填写:C语言程序设计参考答案课程名称:C语言程序设计;试卷编号:();考试时间:120分钟年月日考试用专业班级:题号一二三四五六七八九十总分应得分101020202020100实得分评分:评卷人一、选择题(每题2分,共10分)1.A2.D3.C4.D5.A二、判断题(每题分,共10分)1.×2.√3.√4.×5.√6.√7.×8.×9.×10.√三、写出程序运行结果(每题5分,共20分)1.12.93.b,BA,b4.270.00。四、程序改错(每题5分,共20分)1.程序中的位置不正确的语句是:sum=0;(说明新位置):删除sum=0;并改内循环为:for(sum=0.0,k=1;k=4;k++)。2.错误的语句是:是s=s+1/i;;改为:s=s+1.0/i;。3.在:第二个for循环之前增加增加一条语句:p=a;。4.将语句:intf=1;改为:staticintf=1;。五、程序填空(每题5分,共20分)(每题按原程序次序填空)1.【a[row][col]max】【minmax】。2.【==0】【*s-*t;】。3.【y=&b;】【exchange(x,y);】。4.【*(a+n);】【m++;】。六、编写函数完善下面程序(每题10分,共20分)1.char*search(char*tagstr,char*c)char*p=tagstr;{while(*p!='\0'){if(*p==*c)return*p;p++;}returnNULL;}装订线(答题不得超过此线)学号:姓名:2.process(x,y,fun)intx,y;int(*fun)();{intresult;result=(*fun)(x,y);printf(%d\n,r
本文标题:C语言程序设计试卷
链接地址:https://www.777doc.com/doc-4065425 .html