1、广州大学20212022学年第1学期C语言程序设计考试试卷(B卷)考试范围:C语言程序设计;满分:100分;考试时间:120分钟院/系:_专业:_姓名:_ 考号:_题号一二三四总分得分注意事项:1答题前填写好自己的姓名、班级、考号等信息2请将答案正确填写在答题卡上第I卷(选择题)评卷人得分一、选择题(共20题,每题2分,共40分。下列每小题的四个选项中,有一项是最符合题意的,错选、多选或未选均无分)1有以下程序#include main() int x=1,y=0,a=0,b=0; switch(x) case 1: switch(y) case 0:a+;break; case 1:b+;b
2、reak; case 2:a+;b+;break; case 3:a+;b+; printf(a=%d,b=%dn,a,b);程序的运行结果是()。Aa=2,b=1Ba=2,b=2Ca=1,b=1Da=1,b=02若有以下定义:struct ttchar name;char sex;aa=aaaa,F,*p=&aa; 则错误的语句是()。Ascanf(%c,aa.sex); Baa.sex=getchar(); Cprintf(%cn,(*p).sex); Dprintf(%cn,p-sex); 3以下程序:#include #define SUB(a) (a)-(a)main() int a
3、=2,b=3,c=5,d; d=SUB(a+b)*c; printf(%dn,d);程序运行后的结果是()。A0B-12C-20D104若有代数式(其中e仅代表自然对数的底数,不是变量),则以下能够正确表示该代数式的C语言表达式是()。Asqrt(fabs(pow(n,x)+exp(x) Bsqrt(fabs(pow(n,x)+pow(x,e) Csqrt(abs(nx+ex) Dsqrt(fabs(pow(x,n)+exp(x) 5有以下程序:#include main() char b,c; int i,j; for(i=0;i4;i+) j=0; while(c=getchar()!=
4、& c!=n) b=c; b = 0; printf(%s%s%s%sn, b, b, b, b);程序运行时从第一列开始输入:Peach flower is pink.则输出结果是()。APeachflowefispink.BPeachflowefis pink.CPeachflower is pink.DPeach flower is pink.6若有定义:char*ps=aa,bb,cc,dd;,则以下叙述正确的是()。Aps是字符串aaB*ps是字符串aa的首地址Cps是字符串aa的首地址D*ps是字符串aa7有以下程序#include char fun(char *c) if(*c=
5、A) *c-=A-a; return *c;main() char s,*p=s; gets(s); while(*p) *p=fun(p); putchar(*p); p+; printf(n);若运行时从键盘上输入OPEN THE DOOR,程序的输出结果是()。AOPEN THE DOORBOPEN tHE dOORCopen the doorDOpen The Door8有以下程序:#includeint fun(int(*s),int n,int k) int m,i; m=s; for(i=1;im) m=s; return m;main() int a = 1,2,3,4, 11
6、,12,13,14, 21,22,23,24, 31,32,33,34; printf(%dn,fun(a,4,0);程序运行的结果是()。A4B34C31D329有以下程序:#includemain() FILE*fp; int i,a=1,2,3,4,5,6; fp=fopen(d2.dat,w+); for(i=0;i6;i+) fprintf(fp,%dn, a); rewind(fp); for(i=0;i6;i+) fscanf(fp,%d, &a); fclose(fp); for(i=0;i6;i+) printf(%d, a);程序运行后的结果是()。A4,5,6,1,2,3
7、,B1,2,3,3,2,1,C1,2,3,4,5,6,D6,5,4,3,2,1,10有以下程序:#includemain() int a=-2,b=0; while(a+&+b); printf(%d,%dn,a,b);程序运行后的输出结果是()。A1,3B0,2C0,3D1,211在C语言中,形参的缺省存储类型是()。AautoBregisterCstaticDextern12有如下程序:#include main() int i; for(i=0;i5;i+) putchar(Z-i);程序运行后的输出结果是()。AXYZWVBVWXYZCZYXWVDABCDE13以下合法的转义字符是()
8、。A0X41B0x41CX41Dx4114下列叙述中正确的是()。A两个连续的双引号()是合法的字符串常量B两个连续的单引号()是合法的字符常量C可以对字符串进行关系运算D空字符串不占用内存,其内存空间大小是015若有定义语句int a,b,c,*p=&c;接着执行以下选项中的语句,则能正确执行的语句是()。Ascanf(%d%d%d,a,b,c);Bscanf(%d,p);Cscanf(%d,a,b,c);Dscanf(%d,&p);16以下叙述正确的是()。AC程序总是以main()作为程序执行的起始行Bmain()函数若不带参数,其后面的一对圆括号可省略C函数体内的定义语句和可执行语句允
9、许任意穿插出现DC语言中的语句之间必须用分号作为分隔符17下列叙述中正确的是()。A每个C程序文件中都必须要有一个main函数B在C程序中main函数的位置是固定的CC程序中所有函数之间都可以相互调用D在C程序的函数中不能定义另一个函数18以下叙述中错误的是()。A使用三种基本结构构成的程序只能解决简单问题B结构化程序由顺序、分支、循环三种基本结构组成CC语言是一种结构化程序设计语言D结构化程序设计提倡模块化的设计方法19以下叙述中错误的是()。A算法正确的程序最终一定会结束B算法正确的程序可以有零个输出C算法正确的程序可以有零个输入D算法正确的程序对于相同的输入一定有相同的结果20有以下程序
10、:#include void fun(int a, int n) int i; for(i=0;in;i+) if(i%2=0) a += n; else a -= n; main() int c=5,4,3,2,1,i; fun(c,5); for(i=0;i5;i+) printf(%d,c); printf(n);程序运行后的输出结果是()。A10,-1,8,-3,6,B5,4,3,2,1,C10,2,8,4,6,D5,-1,3,-3,1,第II卷(非选择题)评卷人得分二、填空题(共3题,每题8分,共24分)21下面程序的功能是键盘上输入一个字符串,把该字符串中的小写字母转换为大写字母,
11、输出到文件test.txt中,然后从该文件读出字符串并显示出来。#include main() char str100;int i=0;FILE *fp;if(fp=fopen(test.txt, )=NULL) printf(Cant open the file.n);exit(0);printf(Input a string:n);gets(str);while(stri) if(stri= a&stri= z)stri= ;fputc(stri,fp);i+;fclose(fp);fp=fopen(test.txt, );fgets(str,strlen(str)+1,fp);print
12、f(%sn,str);fclose(fp);22下面程序的功能是将字符串s中的每个字符按升序的规则插到数组a中, 字符串a已排好序。#include main() char a20=cehiknqtw;char s=fbla;int i,k,j;for(k=0;sk!= 0;k+ ) j=0;while(sk=aj & aj!= 0 )j+;for( ) ;aj=sk;puts(a);23下面的函数是一个求阶乘的递归调用函数。facto(int n) if( n = 1 ) ;else return( );评卷人得分三、改错题(共1题,每题16分,共16分)24请根据以下各小题的要求设计C应用
13、程序(包括界面和代码)。下列给定程序中,函数fun()的功能是:将n个无序整数从小到大排序。请改正程序指定部位的错误,使它能得到正确结果。注意:不要改动函数main(),不得增行或删行,也不得更改程序的结构。试题程序如下:#include void fun(int n, int *a) int i,j,p,t; for(j=0;jn-1;j+) p=j; /*found*/ for(i=j+1;ia) /*found*/ t=i; if(p!=j) t=a; a=a; a=t; void putarr(int n, int *z) int i; for(i=1;i=j;i- ai+1=ai23 return(1) n*facto(n-1)三、改错题(共1题,每题16分,共16分)24(1)错误:for(i=j+1;in-1;i+)正确:for(i=j+1;in;i+)(2)错误:t=i;正确:p=i;四、设计题(共1题,每题20分,共20分)25void fun( char *a ) int i,j=0; for(i=0;ai!=0;i+) if(ai!=*) aj+=ai; /*若不是要删除的字符*则留下*/ aj=0;第 10 页 共 10 页