1、广州大学20202021学年第1学期C语言程序设计考试试卷(A卷)考试范围:C语言程序设计;满分:100分;考试时间:120分钟院/系:_专业:_姓名:_ 考号:_题号一二三四总分得分注意事项:1答题前填写好自己的姓名、班级、考号等信息2请将答案正确填写在答题卡上第I卷(选择题)评卷人得分一、选择题(共20题,每题2分,共40分。下列每小题的四个选项中,有一项是最符合题意的,错选、多选或未选均无分)1若有定义:char*ps=aa,bb,cc,dd;,则以下叙述正确的是()。Aps是字符串aaB*ps是字符串aa的首地址Cps是字符串aa的首地址D*ps是字符串aa2有以下程序#include
2、void fun(char *c,int d) c=c+1; d=d+1; printf(%c,%c,*c,d);main() char b=a,a=A; fun(&b,a); printf(%c,%cn,b,a);程序运行后的输出结果是()。Ab,B,b,ABb,B,B,ACa,B,B,aDa,B,a,B3有以下程序:#includemain() int s = 1,2,3,4,5,6, *ps,k; for(k=0;k3;k+) ps=s; printf(%d,*(ps+1); 程序的运行结果是()。A246B135C123D4564有以下程序#include void f(int *q)
3、 int i=0; for(;i5;i+)(*q)+;main() int a=1,2,3,4,5,i; f(a); for(i=0;i5;i+) printf(%d,a);程序运行后的输出结果是()。A2,2,3,4,5,B6,2,3,4,5,C1,2,3,4,5,D2,3,4,5,6,5已定义以下函数int fun(int*p) return *p;fun函数返回值是()。A一个整数B不确定的值C形参p中存放的值D形参p的地址值6以下叙述中错误的是()。A当在程序的开头包含头文件stdio.h时,可以给指针变量赋NULLB函数可以返回地址值C改变函数形参的值,不会改变对应实参的值D可以给指
4、针变量赋一个整数作为地址值7设有如下函数定义:int fun(int k) if(k1) return 0; else if(k=1) return 1; else return fun(k-1)+1;若执行调用语句:n=fun(3);,则函数fun()总共被调用的次数是()。A2B3C4D58有以下程序#include int f(int n) int t=0,a=5; if(n/2) int a=6; t+=a+; else int a=7; t+=a+; return t+a+;main() int s=0,i=0; for(;i2;i+) s+=f(i); printf(%dn,s);
5、程序运行后的输出结果是()。A24B28C32D369以下不能对文件进行输出的库函数是()。AfwriteBfputsCfpoutDfprintf10字符数组a和b中存储了两个字符串,判断字符串a和b是否相等,应当使用的是()。Aif(strcmp(a,b)=0)Bif(strcpy(a,b)Cif(a=b)Dif(a=b)11有以下程序#includemain() int a = 1,2,3,4,5, b = 0,2,1,3,0, i, s=0; for(i=0;i5;i+) s=s+a; printf(%dn,s);程序运行后的输出结果是()。A6B10C11D1512有以下程序:#inc
6、lude void fun(int a,int n) int i; for(i=0;in;i+) if(i % 3=0) a-=n; else a+=n; main() int c=6,7,8,9,10,i; fun(c,5); for(i=0;i5;i+)printf(%d,c); printf(n);程序运行后的输出结果是()。A1,12,13,4,15,B10,9,8,7,6,C1,7,13,9,15,D10,12,8,4,6,13若有以下程序#include main() int a=-2,b=0; while(a+) +b; printf(%d,%dn,a,b);则程序的输出结果是(
7、)。A1,2B0,2C1,3D2,314若有以下程序#include main() int s=0,n; for(n=0;n4;n+) switch(n) default:s+=4; case 1:s+=1;break; case 2:s+=2;break; case 3:s+=3; printf(%dn,s);则程序的输出结果是()。A13B10C11D1515执行以下程序段后,w的值为()。int w=A,x=14,y=15;w=(x|y)&(wa);A-1BNULLC1D016有以下程序段#includemain() int j; float y; char name; scanf(%2
8、d%f%s,&j,&y,name);当执行上述程序段,从键盘上输入55566 7777123后,y的值为()。A566.0B55566.0C7777.0D566777.017若有定义语句double x,y,*px,*py;执行了px=&x;py=&y;之后,输入语句正确的是()。Ascanf(%f%f,x,y);Bscanf(%f%f&x,&y);Cscanf(%1f%1e,px,py);Dscanf(%1f%1f,x,y);18以下选项中关于程序模块化的叙述错误的是()。A把程序分成若干相对独立的模块,可便于编码和调试B把程序分成若干相对独立、功能单一的模块,可便于重复使用这些模块C可采用
9、自底向上、逐步细化的设计方法把若干独立模块组装成所要求的程序D可采用自顶向下、逐步细化的设计方法把若干独立模块组装成所要求的程序19有以下程序:#include typedef struct stu char name; char gender; int score; STU;void f(STU a, STU *b) *b = a; printf(%s,%c,%d, b-name, b-gender, b-score);main() STU a=Zhao, m, 290, b=Qian, f, 350; f(a,&b); printf(%s,%c,%dn, b.name, b.gender,
10、 b.score);程序运行后的输出结果是()。AZhao,m,290,Qian,f,350BQian,m,290,Zhao,m,290CQian,f,350,Qian,f,350DZhao,m,290,Zhao,m,29020有以下程序:#include#includemain( ) char w, a = abcdef, ghijkl, mnopq, rstuv, wxyz.; int i; for(i=0;i5;i+) w=a)-1; w=0; puts(w);Aflqv.BagmrwCekpuyDflqvz第II卷(非选择题)评卷人得分二、填空题(共3题,每题8分,共24分)21下面程
11、序的功能是从键盘输入一个字符串,然后反序输出输入的字符串。#include struct node char data;struct node *link;*head;main() char ch;struct node *p;head = NULL;while( ch=getchar()!=n ) p = (struct node *)malloc(sizeof(struct node);p-data = ch;p-link = ;head = ; ;while( p!=NULL ) printf(%c , p-data);p = p-link;22有以下程序段:s=1.0;for(k=1;
12、k=n;k+)s=s+1.0/(k*(k+1);printf(%fn,s);填空完成下述程序,使之与上述程序的功能完全相同。s=0.0; ;k=0; do s=s+d; ;d=1.0/(k*(k+1);while( );printf(%fn,s);23下面程序的功能是从键盘上输入两个字符串,对两个字符串分别排序;然后将它们合并,合并后的字符串按ASCII码值从小到大排序,并删去相同的字符。#include strmerge(a,b,c) /* 将已排好序的字符串a、b合并到c */char *a,*b,*c; char t,*w;w=c;while( *a!= 0 *b!=0 ) t= ?*a
13、+:*b*a ? *b+ : ( ); /* 将*a、*b的小者存入t */if( *w 0 ) *w=t;else if( t *w) *+w=t; /* 将与*w不相同的t存入w */while( *a != 0 ) /* 以下将a或b中剩下的字符存入w */if( *a != *w ) *+w=*a+;else a+;while( *b != 0)if( *b != *w ) *+w=*b+;else b+;*+w = ;strsort( char *s ) /* 将字符串s中的字符排序 */ int i,j,n;char t,*w; ;for( n=0;*w != 0; )w+;for
14、( i=0;in-1;i+ )for( j=i+1;jsj ) main( ) char s1100,s2100,s3200;printf(nPlease Input First String:);scanf(%s,s1);printf(nPlease Input Second String:);scanf(%s,s2);strsort(s1);strsort(s2); = 0;strmerge(s1,s2,s3);printf(nResult:%s,s3);评卷人得分三、改错题(共1题,每题16分,共16分)24请根据以下各小题的要求设计C应用程序(包括界面和代码)。下列给定的程序中,函数f
15、un的功能是:把主函数中输入的3个数,最大的放在a中,最小的放在c中。例如,输入的数为55 12 34,输出结果应当是:a=55.0,b=34.0,c=12.0。请改正程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序如下:#include #include void fun(float p,float q,float *s) float *k; k = (float *)malloc(sizeof(float); if(*p*q) /*found*/ k=*p;p=q;*q=k; /*found*/ if(*s*p) /*found*
16、/ k=*s; s=p; *p=k; if(*q*s) /*found*/ k=*q; q=s; *s=k; free(k);main() float a,b,c; printf(Input a b c: ); scanf(%f%f%f,&a,&b,&c); printf(a = %4.1f, b = %4.1f, c = %4.1fnn,a,b,c); fun(&a,&b,&c); printf(a = %4.1f, b = %4.1f, c = %4.1fnn,a,b,c);评卷人得分四、设计题(共1题,每题20分,共20分)25请根据以下要求设计C应用程序。请编写函数fun,它的功能是:
17、统计各年龄段的人数。N个年龄通过调用随机函数获得,并放在主函数的age数组中;要求函数把0至9岁年龄段的人数放在d中,把10至19岁年龄段的人数放在d中,把20至29岁年龄段的人数放在d中,其余依次类推,把100岁(含100岁)以上年龄的人数放在d中。结果在主函数中输出。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序如下:#include #define N 50#define M 11void fun(int a, int b) double rnd() static int t=29,c=217,m=1024,
18、r=0; r= (r*t+c)%m; return (double) r/m);main () int age,i,d; for(i=0; i N; i+) age = (int)(115*rnd (); printf (The original data : n); for(i=0; i N; i+) printf(i+1)%10 = 0? %4dn:%4d,age); printf(nn); fun(age,d); for(i=0; i 10; i+) printf(%4d-%4d :%4dn, i*10,i*10+9,d); printf(Over 100 : %4dn,d);【标准答案
19、】第I卷(选择题)一、选择题(共20题,每题2分,共40分。下列每小题的四个选项中,有一项是最符合题意的,错选、多选或未选均无分)1C2A 3A4B5A 6D7B8A 9C10A11C12A13A14C15C16A17C18C19D20A第II卷(非选择题)二、填空题(共3题,每题8分,共24分)21 head p p=head22 d=1 k+ k=n23 & *a*b *a+, *b+ = != 0 w=s n+ t=si;si=sj;sj=t; s30三、改错题(共1题,每题16分,共16分)24(1)错误:k=*p;p=q;*q=k;正确:*k=*p;* p=*q;q=k;(2)错误:
20、if(*s*p) (3)错误:k=*s;s=p;*p=k;正确:*k=*8;s=p;p=k;(4)错误:k=*q;q=s;*s=k;正确:*k=*q;q=s;s=k;四、设计题(共1题,每题20分,共20分)25void fun(int a, int b) int i,j; for (j=0; jM;j+) b=0; for (i=0; iN;i+) switch (a/10) case 0:b+; break; case 1:b+; break; case 2:b+; break; case 3:b+; break; case 4:b+; break; case 5:b+; break; case 6:b+; break; case 7:b+; break; case 8:b+; break; case 9:b+; break; default:b+; break; 第 13 页 共 13 页