1、高级语言程序设计自考题-27 及答案解析(总分:100.00,做题时间:90 分钟)一、B单项选择题/B(总题数:15,分数:30.00)1.执行下列程序段后,*p 的值是U /Uchar *p=“asdf“; printf(“%c“,*(p+strlen(p); A.语句错误 B.s C.d D.a(分数:2.00)A.B.C.D.2.下列运算符中优先级最高的是U /U A.?: B.char c;double x;STD;则以下选项中,能正确定义结构体数组并赋初值的语句是_ A.STD apple2=1,A,32,2,B,45; B.STD apple2=1,“A“,32,2,“,45;
2、C.struct apple2=1,A,2,B; D.struct apple2=1,“A“,32.5,2,“B“,45.0;(分数:2.00)A.B.C.D.9.若有以下语句:char *apple=“fortran“,“basic“,“C“,“java“;char *q;q=apple+3则语句 printf(“%c/n“,*q);的输出是_ A.q 的值 B.字符串“C” C.,执行语句 printf(“%c,%d“,ch+32,ch);后的输出结果是_。(分数:2.00)填空项 1:_17.若有以下定义: int apple10; 则 apple 数组元素下标的上限为_,下限为_。(分
3、数:2.00)填空项 1:_18.设 char*strp=“CHINA“;,执行 printf(“%s/n“,strp+3);后的输出结果是 1。(分数:2.00)填空项 1:_19.执行循环语句 for(0;)printf(“Happy!/n“);后,输出“Happy!”的行数是 1。(分数:2.00)填空项 1:_20.设 x,y,z 均为整型变量,请写出描述“x 或 y 中至少有一个大于 z”的表达式_。(分数:2.00)填空项 1:_21.当一个变量占用连续的若干个字节时, 1 的地址就是变量的地址。(分数:2.00)填空项 1:_22.C 语言中规定,在程序中表示一维数组首地址的表达
4、式可以写成 1,还可写成数组名。(分数:2.00)填空项 1:_23.设 int a=10;,则执行语句 a+=a-=a+a;后 a 的值是 1。(分数:2.00)填空项 1:_24.一个字符型变量所占内存的字节数是_。(分数:2.00)填空项 1:_25.数组 int arry59;的第二维下标的最大值是 1。(分数:2.00)填空项 1:_三、B程序分析题/B(总题数:4,分数:16.00)26.void f(int x,int y,int *px,int *py) *px=x*y; *px=x-y; main() int a=10,b=20; f(a,b, printf(“%d,%d/n
5、“,a,b); (分数:4.00)_27.#includestdioh #include%stringh main() char p110=“abc“,p210=“ABC“,str50=“xyz“: strcpy(str+2,strcat(p1,p2): printf(“%s/n“,str); (分数:4.00)_28.在 C 盘中有一个名为 temp.txt 的文本文件。 #include stdio.h #include stdlib.h main() int i,n; FILE*fp; if(fp=fopen(“c:/temp.txt“,“w+“)=NULL) printf(“can n
6、ot set the temp file/n“);exit(0); for(i=1;i=10;i+)fprintf(fp,“%3d“,i); for(i=0;i5;i+) fseek(fp,*6L,SEEK_SET); fscanf(fp,“%d“, for(i=10;i0;i-) if(i%3!=0)continue; printf(“%2d“,i); printf(“/n“); (分数:4.00)_四、B程序填充题/B(总题数:3,分数:18.00)30.以下程序的功能是从键盘上输入若干个字符(以回车键作为结束)组成一个字符串存入一个字符数组,然后输出该字符数组中的字符串。 main()
7、char str51,*sptr; int i; for(i=0;i50;i+) stri=getchar();if(str j=/n)_; stri:_; sptr=str; while(*sptr)putchar(*sptr_); (分数:6.00)填空项 1:_31.SumColumMin( )的功能是:求出 M 行 N 列二维数组每列元素中的最小值,并计算它们的和值。和值通过形参传回主函数输出。 #includestdio.h #define M 2 #define N 4 void SumColumMin(_,int*sum)/*第一空*/ int i,j,s=0 for(i=0;i
8、 N;i+) k=0; for(j=1;jM;j+) if(_)k=j;/*第二空*/ s+=aki; _;/*第三空*/ main() int xMN=3,2,6,1,4,1,8,3,s; SumColumMin(x, printf(“%d/n“,s); (分数:6.00)填空项 1:_32.键入数据至二维数组,求出其中的最大值、最小值及所有元素之和。 void main() int i,j; int a34,max,min,sum=0; for(i=0;i3;i+) for(j=0;j4;j+)scanf(“%d“,_); /*第一空*/ max=min=a00; for(i=0;i3;i
9、+) for(j=0;j4;j+) _; /*第二空*/ if(aijmax)max=aij; if(aijmin)min=aij; printf(“max=%d,min=%d,sum=%d/n“,_); /*第三空*/ (分数:6.00)填空项 1:_五、B程序设计题/B(总题数:2,分数:16.00)33.求出 10 到 500 之内能同时被 3、7 整除的数,并输出;然后求出其和值。(分数:8.00)_34.编写一个程序,其功能是:输出两个字符串对应位置相等的字符,并输出其位置号(自然编号)。(分数:8.00)_高级语言程序设计自考题-27 答案解析(总分:100.00,做题时间:90
10、分钟)一、B单项选择题/B(总题数:15,分数:30.00)1.执行下列程序段后,*p 的值是U /Uchar *p=“asdf“; printf(“%c“,*(p+strlen(p); A.语句错误 B.s C.d D.a(分数:2.00)A.B.C.D. 解析:解析 指针变量 P 在得到初值“asdf“之后没有初改变过,P 就是字符串“asdf“的首地址故*P 的值为 a。2.下列运算符中优先级最高的是U /U A.?: B.char c;double x;STD;则以下选项中,能正确定义结构体数组并赋初值的语句是_ A.STD apple2=1,A,32,2,B,45; B.STD ap
11、ple2=1,“A“,32,2,“,45; C.struct apple2=1,A,2,B; D.struct apple2=1,“A“,32.5,2,“B“,45.0;(分数:2.00)A. B.C.D.解析:考点 typedef 和结构体的初始化 解析 STD 被 typedef 定义为结构体的类型说明符,且无结构体变量名,属于直接定义,所以只能用 STD 进行初始化,C,D 项错误;而成员二为字符变量,B 项中的双引号说明为字符串,不符合格式,所以选择 A 项。9.若有以下语句:char *apple=“fortran“,“basic“,“C“,“java“;char *q;q=appl
12、e+3则语句 printf(“%c/n“,*q);的输出是_ A.q 的值 B.字符串“C” C.,执行语句 printf(“%c,%d“,ch+32,ch);后的输出结果是_。(分数:2.00)填空项 1:_ (正确答案:a,65)解析:考点 字符常量和输出格式 解析 在 C 语言中,一个字符常量可以看成是整型常量,其值是其ASC码。%c 输出的是字符,%d 输出的是整型数据,ch+32 输出的是小写字母 a。17.若有以下定义: int apple10; 则 apple 数组元素下标的上限为_,下限为_。(分数:2.00)填空项 1:_ (正确答案:9,0)解析:考点 一维数组的下标 解析
13、 一维数组的下标范围为 0长度-1。18.设 char*strp=“CHINA“;,执行 printf(“%s/n“,strp+3);后的输出结果是 1。(分数:2.00)填空项 1:_ (正确答案:NA)解析:19.执行循环语句 for(0;)printf(“Happy!/n“);后,输出“Happy!”的行数是 1。(分数:2.00)填空项 1:_ (正确答案:无限(或无穷))解析:20.设 x,y,z 均为整型变量,请写出描述“x 或 y 中至少有一个大于 z”的表达式_。(分数:2.00)填空项 1:_ (正确答案:(xz)|(yz))解析:考点 逻辑表达式 解析 至少有一个,使用或运
14、算符。21.当一个变量占用连续的若干个字节时, 1 的地址就是变量的地址。(分数:2.00)填空项 1:_ (正确答案:第一个字节)解析:22.C 语言中规定,在程序中表示一维数组首地址的表达式可以写成 1,还可写成数组名。(分数:2.00)填空项 1:_ (正确答案: *px=x-y; main() int a=10,b=20; f(a,b, printf(“%d,%d/n“,a,b); (分数:4.00)_正确答案:(200,-10)解析:27.#includestdioh #include%stringh main() char p110=“abc“,p210=“ABC“,str50=“
15、xyz“: strcpy(str+2,strcat(p1,p2): printf(“%s/n“,str); (分数:4.00)_正确答案:(xyabcABC)解析:解析 #includestdioh #includestringh main() char p110=“abc“,p210=“ABC“,str50=“xyz“; strcpy(str+2,strcat(p1,p2);/*将字符数组 p2 连接在字符数组 p1 后面,并将之复制到数组 str 的第二个元素之后*/ printf(“%s/n“,str); 28.在 C 盘中有一个名为 temp.txt 的文本文件。 #include s
16、tdio.h #include stdlib.h main() int i,n; FILE*fp; if(fp=fopen(“c:/temp.txt“,“w+“)=NULL) printf(“can not set the temp file/n“);exit(0); for(i=1;i=10;i+)fprintf(fp,“%3d“,i); for(i=0;i5;i+) fseek(fp,*6L,SEEK_SET); fscanf(fp,“%d“, for(i=10;i0;i-) if(i%3!=0)continue; printf(“%2d“,i); printf(“/n“); (分数:4.
17、00)_正确答案:(-9 -6 -3)解析:四、B程序填充题/B(总题数:3,分数:18.00)30.以下程序的功能是从键盘上输入若干个字符(以回车键作为结束)组成一个字符串存入一个字符数组,然后输出该字符数组中的字符串。 main() char str51,*sptr; int i; for(i=0;i50;i+) stri=getchar();if(str j=/n)_; stri:_; sptr=str; while(*sptr)putchar(*sptr_); (分数:6.00)填空项 1:_ (正确答案:break /0 +)解析:31.SumColumMin( )的功能是:求出 M
18、 行 N 列二维数组每列元素中的最小值,并计算它们的和值。和值通过形参传回主函数输出。 #includestdio.h #define M 2 #define N 4 void SumColumMin(_,int*sum)/*第一空*/ int i,j,s=0 for(i=0;i N;i+) k=0; for(j=1;jM;j+) if(_)k=j;/*第二空*/ s+=aki; _;/*第三空*/ main() int xMN=3,2,6,1,4,1,8,3,s; SumColumMin(x, printf(“%d/n“,s); (分数:6.00)填空项 1:_ (正确答案:int aMN
19、akiaji *sum=s)解析:32.键入数据至二维数组,求出其中的最大值、最小值及所有元素之和。 void main() int i,j; int a34,max,min,sum=0; for(i=0;i3;i+) for(j=0;j4;j+)scanf(“%d“,_); /*第一空*/ max=min=a00; for(i=0;i3;i+) for(j=0;j4;j+) _; /*第二空*/ if(aijmax)max=aij; if(aijmin)min=aij; printf(“max=%d,min=%d,sum=%d/n“,_); /*第三空*/ (分数:6.00)填空项 1:_ (正确答案:第一空: int i=0; gets(c);/*字符数组 c 获得字符串内容*/ gets(s);/*字符数组 s 获得字符串内容*/ while(ci/*输出该字符*/ printf(“%d/n“,i+1);/*输出该字符的位置号(自然编号)*/ )解析: