1、高级语言程序设计自考题-11 及答案解析(总分:100.00,做题时间:90 分钟)一、单项选择题(总题数:15,分数:30.00)1.以下选项中,合法的用户标识符是( )Along B_2TestC3Dmax DA.dat(分数:2.00)A.B.C.D.2.正确的变量定义是( )Aunsigned long d=1000; Bfloat m1=m2=10.0;Cchar c1=A,c2=A; Ddouble x=1.76,x=92.84;(分数:2.00)A.B.C.D.3.设有定义 int x=2;,则表达式 x+1/5 的值是( )A0 B2C3 D4(分数:2.00)A.B.C.D.
2、4.设整型变量 a 为 2,使 b 不为 1 的表达式是( )Ab=a/2 Bb=2-(-a)Cb=a%2 Db=a3? 2:1(分数:2.00)A.B.C.D.5.执行语句 for(k=3;+k5;k+) +k;后,变量 k 的值是( )A3 B5C6 D7(分数:2.00)A.B.C.D.6.设 int a=2,b=3,x,y;,则能正确执行的语句是( )Ascanf(“%d,%d“,x-y,x+y); Bprintf(“%d/n“,a%b);Cprintf(“%f/n“,a+b); Dscanf(“%d,%d“,x,y);(分数:2.00)A.B.C.D.7.以下不正确的描述是( )Ab
3、reak 语句不能用于除循环语句和 switch 语句以外的任何其他语句B在 switch 语句中使用 break 语句或 continue 语句的作用相同C在循环语句中使用 continue 语句是为了结束本次循环,而不是终止整个循环的执行D在循环语句中使用 break 语句是为了使流程跳出循环体,提前结束循环(分数:2.00)A.B.C.D.8.以下正确的定义语句是( )Aint AB; Bint A 8,3;Cint A9; Dint A5;(分数:2.00)A.B.C.D.9.若有定义 int x=1,*p=&x;,则语句 printf(“%d/n“,*p);的输出结果是( )A随机值
4、 B1Cx 的地址 Dp 的地址(分数:2.00)A.B.C.D.10.下列函数返回值的数据类型是( )fun (int x)int y;y=4*x-5;return y;Avoid BintCfloat D不确定(分数:2.00)A.B.C.D.11.对函数而言,叙述正确的是( )A程序中只能有一个 main 函数B当函数的形参是数组时,形实结合为值传递方式C函数中只能有一个 return 语句D无参函数的函数体内不能出现 return 语句(分数:2.00)A.B.C.D.12.结构型变量占用内存的字节数是( )A各成员占用内存字节数之和 B第一个成员占用的内存字节数C占用内存最大成员所需
5、的字节数 D最后一个成员占用的内存字节数(分数:2.00)A.B.C.D.13.运行下列程序后,输出结果是( )f(int x,int y,int *z)return(*z=x*x+y*y);main()int a=3;f(f(1,2,&a),f(1,2,&a),&a);pintf(“%“,a);A9 B10C50 D60(分数:2.00)A.B.C.D.14.以下对文件型指针的定义,正确的是( )Afile fp; Bfile*fp;CFILE fp; DFILE*fp;(分数:2.00)A.B.C.D.15.使用函数 fseek()不能完成的操作是( )A定位到文件头 B定位到文件尾C定位
6、到文件尾的后 10 个字节 D定位到文件的第 25 个字节(分数:2.00)A.B.C.D.二、填空题(总题数:10,分数:20.00)16.转义字符由 1 符号开始的单个字符或若干个字符组成。(分数:2.00)填空项 1:_17.表达式!5!=!5 的值是 1。(分数:2.00)填空项 1:_18.语句 for(i=2;i=2;i+);循环的次数是 1。(分数:2.00)填空项 1:_19.使用 fopen(“123“,“45“)打开文件时,若 123 文件不存在,则 1。(分数:2.00)填空项 1:_20.设 char s20=“My“;,则执行 strcat(s,“Sun!“)后 s
7、的内容是 1。(分数:2.00)填空项 1:_21.设 float x=23.65;,则执行语句 printf(“%d/n“,(int)(x+0.5);后输出结果是 1。(分数:2.00)填空项 1:_22.设 int a25=8,4;则数组元素 1 的值为 4。(分数:2.00)填空项 1:_23.设 int x=-9,y;,则执行 y=x=0? x:-x;后 y 的值是 1。(分数:2.00)填空项 1:_24.z=y*=x+9 相当于 1 和 z=y 两个表达式。(分数:2.00)填空项 1:_25.磁盘文件的主要用途之一,也是文件特点的是 1。(分数:2.00)填空项 1:_三、程序分
8、析题(总题数:4,分数:16.00)26.在 C 盘中有一个名为 temp.txt 的文本文件。#include stdio.h#include stdlib.hmain()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“,&n);printf(“%3d“,n);fclose
9、(fp);(分数:4.00)_27.int f(int n)static int f=1;f=f*n;return f;main()int i;for (i=1;i5;i+)printf(“%d,“,f(i);(分数:4.00)_28.struct Hint x;int *y; xy2;void f(struct H *p)(p+1)-x=10;(*P).x=20;(*p).y=&(*(p+1).x);(*(P+1).y=&(p-x);main()struct H *q=xy;f(q);printf(“%d,%d/n“,*(q-y),*(xy0.y);(分数:4.00)_29.main()in
10、t s=0,k;for(k=8;k=0;k-)switch(k)case 0:case 2:s+;break;case 4:s+=3;break;case 7:case 3:case 6:break;case 1:case 5:case 8:s+=2;break;printf(“s=%d/n“,s);(分数:4.00)_四、程序填充题(总题数:3,分数:18.00)30.函数 f 用于计算数组各元素值的平方,主函数调用 f 并输出各元素的值。void f(int a,int s)int i;for(i=0;i_;i+)si=si*si; /*第一空*/main()int i,b5=1,2,3,
11、4,5;f(5,_); /*第二空*/for(i=0;i5;i+)printf(“%5d“,_); /*第三空*/printf(“/n“);(分数:6.00)填空项 1:_31.下列函数的主要功能是在 w 指向的数组的前*n 个数据中插入 x,要求 w 指向的数组的前*n 个数据已按由小到大顺序存放。插入 x 后,该数组中的数据仍按照从小到大的顺序排列,同时将*n 修改为插入 x 后长度。void f(char *w,char x,int *n)int i,p=0;w*n=x;while (xwp)_;for(i=*n;ip;i-) wi=_;_;+*n:(分数:6.00)填空项 1:_32.
12、下面程序输出两个字符串对应位置相等的字符。main()char a=“students“,b=“study“;int i=0;while(ai!=/0&_)if(ai=bi)printf(“%c“,_);else_;(分数:6.00)填空项 1:_五、程序设计题(总题数:2,分数:16.00)33.从键盘输入 50 个整数,计算并输出大于等于零的数的平均值(保留小数点后两位)。(分数:8.00)_34.在同一程序中,用三种循环语句分别显示 19 的平方值。(分数:8.00)_高级语言程序设计自考题-11 答案解析(总分:100.00,做题时间:90 分钟)一、单项选择题(总题数:15,分数:3
13、0.00)1.以下选项中,合法的用户标识符是( )Along B_2TestC3Dmax DA.dat(分数:2.00)A.B. C.D.解析:解析 本题主要考查的知识点为用户标识符。要点透析 C 语言中,标识符是由字母或下划线开头的字母、数字、下划线组成的字符序列,并且不能是保留字。A 项是保留字,C、D 项格式不正确,所以答案为 B 项。2.正确的变量定义是( )Aunsigned long d=1000; Bfloat m1=m2=10.0;Cchar c1=A,c2=A; Ddouble x=1.76,x=92.84;(分数:2.00)A. B.C.D.解析:解析 主要考查的知识点为变
14、量的定义。要点透析 B 项中 m2 没有定义类型,C 项中字符型变量 c2 的初值应用单引号括起来,D 项中变量 x 重复定义了。3.设有定义 int x=2;,则表达式 x+1/5 的值是( )A0 B2C3 D4(分数:2.00)A.B. C.D.解析:解析 本题主要考查的知识点为+运算符的优先级。要点透析 表达式 x+1/5 相当于(x+)+(1/5),所以结果值为 2。4.设整型变量 a 为 2,使 b 不为 1 的表达式是( )Ab=a/2 Bb=2-(-a)Cb=a%2 Db=a3? 2:1(分数:2.00)A.B.C. D.解析:解析 本题主要考查的知识点为%运算符。要点透析 运
15、算符“%”的对象必须是整型数据,结果是整除后的余数,所以表达式 b=a%2 的值为 0,其他三个表达式中 b 的值均为 1。5.执行语句 for(k=3;+k5;k+) +k;后,变量 k 的值是( )A3 B5C6 D7(分数:2.00)A.B.C.D. 解析:6.设 int a=2,b=3,x,y;,则能正确执行的语句是( )Ascanf(“%d,%d“,x-y,x+y); Bprintf(“%d/n“,a%b);Cprintf(“%f/n“,a+b); Dscanf(“%d,%d“,x,y);(分数:2.00)A.B. C.D.解析:解析 主要考查的知识点为 printf 函数和 sca
16、nf 函数的使用。要点透析 scanf 函数中的“格式控制”后面的应当是变量的地址,而不是变量名,故 A、D 项错误。printf 函数输出时,输出对象的类型应与格式说明匹配,故 C 项错误。7.以下不正确的描述是( )Abreak 语句不能用于除循环语句和 switch 语句以外的任何其他语句B在 switch 语句中使用 break 语句或 continue 语句的作用相同C在循环语句中使用 continue 语句是为了结束本次循环,而不是终止整个循环的执行D在循环语句中使用 break 语句是为了使流程跳出循环体,提前结束循环(分数:2.00)A.B. C.D.解析:解析 本题主要考查的
17、知识点为 break 和 continue 的使用。要点透析 switch 是多分支选择结构,continue 语句是用来判断重新控制循环的条件,用于循环结构中,不能用在 switch 语句中。8.以下正确的定义语句是( )Aint AB; Bint A 8,3;Cint A9; Dint A5;(分数:2.00)A.B.C.D. 解析:解析 本题主要考查的知识点为数组的定义。要点透析 一维数组的定义格式为;数据类型 数组名长度;二维数组定义格式为:数据类型 数组名行长度列长度;其中长度、行长度、列长度均为“整型常量表达式”,通常为整型常量,故 A、B 项错误。在二维数组中,若给所有元素赋初值
18、,则行长度可以省略,故 C 项错误。9.若有定义 int x=1,*p=&x;,则语句 printf(“%d/n“,*p);的输出结果是( )A随机值 B1Cx 的地址 Dp 的地址(分数:2.00)A.B. C.D.解析:10.下列函数返回值的数据类型是( )fun (int x)int y;y=4*x-5;return y;Avoid BintCfloat D不确定(分数:2.00)A.B. C.D.解析:解析 本题主要考查的知识点为默认返回值类型。要点透析 在 C 语言中,当函数类型为 int 时,函数类型名 int 可以不写,系统默认为 int。11.对函数而言,叙述正确的是( )A程
19、序中只能有一个 main 函数B当函数的形参是数组时,形实结合为值传递方式C函数中只能有一个 return 语句D无参函数的函数体内不能出现 return 语句(分数:2.00)A. B.C.D.解析:12.结构型变量占用内存的字节数是( )A各成员占用内存字节数之和 B第一个成员占用的内存字节数C占用内存最大成员所需的字节数 D最后一个成员占用的内存字节数(分数:2.00)A. B.C.D.解析:解析 本题主要考查的知识点为结构型变量占用内存的字节数。要点透析 在给结构型变量分配内存时,分配的内存字节数等于该结构型所有成员占用的字节数之和。13.运行下列程序后,输出结果是( )f(int x
20、,int y,int *z)return(*z=x*x+y*y);main()int a=3;f(f(1,2,&a),f(1,2,&a),&a);pintf(“%“,a);A9 B10C50 D60(分数:2.00)A.B.C. D.解析:14.以下对文件型指针的定义,正确的是( )Afile fp; Bfile*fp;CFILE fp; DFILE*fp;(分数:2.00)A.B.C.D. 解析:解析 本题主要考查的知识点为文件型指针的定义。要点透析 文件型指针的定义方法为 FILE*文件型指针名 1,*文件型指针名 2,其中的“文件型指针名”是用户选取的标识符。15.使用函数 fseek(
21、)不能完成的操作是( )A定位到文件头 B定位到文件尾C定位到文件尾的后 10 个字节 D定位到文件的第 25 个字节(分数:2.00)A.B.C. D.解析:解析 本题主要考查的知识点为 fseek 函数的使用。要点透析 fseek()为文件随机定位函数,它可以使文件内部指针指向需要读取的某个数据,而不是某几个数据,然后读取当前数据。二、填空题(总题数:10,分数:20.00)16.转义字符由 1 符号开始的单个字符或若干个字符组成。(分数:2.00)填空项 1:_ (正确答案:/)解析:17.表达式!5!=!5 的值是 1。(分数:2.00)填空项 1:_ (正确答案:0)解析:18.语句
22、 for(i=2;i=2;i+);循环的次数是 1。(分数:2.00)填空项 1:_ (正确答案:1)解析:19.使用 fopen(“123“,“45“)打开文件时,若 123 文件不存在,则 1。(分数:2.00)填空项 1:_ (正确答案:建立新文件)解析:20.设 char s20=“My“;,则执行 strcat(s,“Sun!“)后 s 的内容是 1。(分数:2.00)填空项 1:_ (正确答案:MySun!)解析:21.设 float x=23.65;,则执行语句 printf(“%d/n“,(int)(x+0.5);后输出结果是 1。(分数:2.00)填空项 1:_ (正确答案:
23、24)解析:22.设 int a25=8,4;则数组元素 1 的值为 4。(分数:2.00)填空项 1:_ (正确答案:a10)解析:23.设 int x=-9,y;,则执行 y=x=0? x:-x;后 y 的值是 1。(分数:2.00)填空项 1:_ (正确答案:9)解析:24.z=y*=x+9 相当于 1 和 z=y 两个表达式。(分数:2.00)填空项 1:_ (正确答案:y=y*(x+9))解析:25.磁盘文件的主要用途之一,也是文件特点的是 1。(分数:2.00)填空项 1:_ (正确答案:能长期保存数据)解析:三、程序分析题(总题数:4,分数:16.00)26.在 C 盘中有一个名
24、为 temp.txt 的文本文件。#include stdio.h#include stdlib.hmain()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“,&n);printf(“%3d“,n);fclose(fp);(分数:4.00)_正确答案:(1 3 5 7 9)
25、解析:27.int f(int n)static int f=1;f=f*n;return f;main()int i;for (i=1;i5;i+)printf(“%d,“,f(i);(分数:4.00)_正确答案:(1,2,6,24,)解析:28.struct Hint x;int *y; xy2;void f(struct H *p)(p+1)-x=10;(*P).x=20;(*p).y=&(*(p+1).x);(*(P+1).y=&(p-x);main()struct H *q=xy;f(q);printf(“%d,%d/n“,*(q-y),*(xy0.y);(分数:4.00)_正确答案
26、:(10,10)解析:29.main()int s=0,k;for(k=8;k=0;k-)switch(k)case 0:case 2:s+;break;case 4:s+=3;break;case 7:case 3:case 6:break;case 1:case 5:case 8:s+=2;break;printf(“s=%d/n“,s);(分数:4.00)_正确答案:(s=11)解析:四、程序填充题(总题数:3,分数:18.00)30.函数 f 用于计算数组各元素值的平方,主函数调用 f 并输出各元素的值。void f(int a,int s)int i;for(i=0;i_;i+)si
27、=si*si; /*第一空*/main()int i,b5=1,2,3,4,5;f(5,_); /*第二空*/for(i=0;i5;i+)printf(“%5d“,_); /*第三空*/printf(“/n“);(分数:6.00)填空项 1:_ (正确答案:abbi)解析:31.下列函数的主要功能是在 w 指向的数组的前*n 个数据中插入 x,要求 w 指向的数组的前*n 个数据已按由小到大顺序存放。插入 x 后,该数组中的数据仍按照从小到大的顺序排列,同时将*n 修改为插入 x 后长度。void f(char *w,char x,int *n)int i,p=0;w*n=x;while (x
28、wp)_;for(i=*n;ip;i-) wi=_;_;+*n:(分数:6.00)填空项 1:_ (正确答案:p+wi-1wp=x)解析:32.下面程序输出两个字符串对应位置相等的字符。main()char a=“students“,b=“study“;int i=0;while(ai!=/0&_)if(ai=bi)printf(“%c“,_);else_;(分数:6.00)填空项 1:_ (正确答案:bi!=/0ai+i+)解析:五、程序设计题(总题数:2,分数:16.00)33.从键盘输入 50 个整数,计算并输出大于等于零的数的平均值(保留小数点后两位)。(分数:8.00)_正确答案:(
29、#includestdio.h#define N 50main() int aN,i,n=0;float sum=0,aver;for(i=0;iN;i+)scanf(“%d“,&ai);for(i=0;iN;i+)if(ai=0)sum=sum+ai;n+;if(n=0)printf(“All numbers are negative!/n“);else aver=sum/n;printf(“aver=%7.2f/n“,aver);)解析:34.在同一程序中,用三种循环语句分别显示 19 的平方值。(分数:8.00)_正确答案:(#include stdio.hmain() int i;for(i=1;i=9;i+)printf(“%d,“,i*i);printf(“/n“);i=1;while(i=9)printf(“%d,“,i*i);i+;printf(“in“);i=1;doprintf(“%d,“,i*i);i+;while(i=9);)解析: