1、高级语言程序设计真题 2013 年下半年及答案解析(总分:100.00,做题时间:90 分钟)一、B单项选择题/B(总题数:15,分数:30.00)1.正确的自定义标识符是_ A.2xy B.int C.root%x D.total(分数:2.00)A.B.C.D.2.正确的 C 语言常数是_ A.012 B.“abc“ C.0xfp D.2e1.25(分数:2.00)A.B.C.D.3.下列不是 C 语言运算符的是_ A. B. C.! D.,执行语句 c=(a=b)|+a;后 c 的值是_ A.0 B.1 C.4 D.5(分数:2.00)A.B.C.D.8.设 int m=0;,语句 wh
2、ile(m!=0)m+;的循环次数是_ A.0 B.1 C.2 D.无限(分数:2.00)A.B.C.D.9.定义数组并初始化正确的是_ A.int a=(2,4,6,8); B.int a=2,4,6,8; C.int a3=2,4,6,8; D.int *a4=2,4,6,8;(分数:2.00)A.B.C.D.10.设 int a35;,该数组两个下标的取值范围分别是_ A.03 和 04 B.0-3 和 35 C.02 和 04 D.35 和 05(分数:2.00)A.B.C.D.11.设 typedef float REAL;则 REAL 是_ A.变量名 B.常量名 C.函数名 D.
3、类型名(分数:2.00)A.B.C.D.12.设 char s10;,将字符串输入至数组 s 的正确语句是_ A.s=gets(); B.getchar(s); C.scanf(“%s“,s); D.scanf(“%s“,(分数:2.00)A.B.C.D.13.关于函数叙述正确的是_ A.函数必须有形参 B.函数的形参可以是常数 C.函数中只能出现一个 return 语句 D.函数类型为 void 寸,该函数无返回值(分数:2.00)A.B.C.D.14.设 int a10,*p=a;,与数组元素 a0等价的是_ A.*p B.p C.,“n 为偶数”的 C 语言逻辑表达式是_。(分数:2.0
4、0)填空项 1:_17.实现字符串复制的系统函数是_。(分数:2.00)填空项 1:_18.实(浮点)型分为单、双精度两种,其类型保留字分别是_。(分数:2.00)填空项 1:_19.在 C 语言中,运算符优先级最低的是_。(分数:2.00)填空项 1:_20.设 int a=3;,执行语句 printf(“%d“,a2);后的输出结果是_。(分数:2.00)填空项 1:_21.设 float x=3.1;,执行语句 printf(“%.1f“,3.2+(int)x);后的输出结果是_。(分数:2.00)填空项 1:_22.设 FILE *fp;,若 fp 指向文件尾部,则 feof(fp)的
5、返回值是_。(分数:2.00)填空项 1:_23.设 char p=“abcd“;,执行语句 printf(“%c“,*(p+2);后的输出结果是_。(分数:2.00)填空项 1:_24.设 chat str=“book/n“;,执行语句。printf(“%d“,sizeof(str);后的输出结果是_。(分数:2.00)填空项 1:_25.若局部变量的存储类型缺省,其默认类型是_。(分数:2.00)填空项 1:_三、B程序分析题/B(总题数:4,分数:16.00)26.#includestdio.h int f(int a) static int d=10;/*静态变量*/ d+=a; re
6、turn d; void main() printf(“f1=%d“,f(3); printf(“f2=%d/n“,f(5); (分数:4.00)_27.#includestdio.h void main() int i; for(i=10;i0;i-) if(i%3!=0)continue; printf(“%2d“,i); printf(“/n“); (分数:4.00)_28.#includestdio.h void main() int i,j,s,a3=1,2,3,4,5,6; for(s=0,i=0;i3;i+) switch(i) case 0: case 1: case 2:fo
7、r(j=0;j3;j+)s+=aij;break; printf(“s=%d/n“,s); (分数:4.00)_29.#includestdio.h struct country int no; char name20; a=1,“China“,2,“Russia“,3,“America“,*p=a; void main() p+; printf(“%d,%s“,(*p).no,(*p).name); p-; printf(“%d/n,%s“,p-no,p-name); printf(“%d,%s/n“,a2.no,a2.name); (分数:4.00)_四、B程序填充题/B(总题数:3,分数
8、:18.00)30.从键盘输入一系列正(负数作为结束),写入二进制文件 data.dat。 #includestdio.h void main() FILE *fp; float x; fp=fopen(“data.dat“,_);/*第一空*/ while(1) scanf(“%f“, if(x=0.0)_;/*第二空*/ fwrite( fclose(_);/*第三空*/ (分数:6.00)填空项 1:_31.利用选择排序法实现对数组元素的升序排序。 #includestdio.h #define N 10 void main() int i,j,k,temp,aN; for(i=0;iN
9、;i+)scanf“%d“, for(i=0;iN-1;i+) for(j=i+1;jN;j+) if(_)/*第一空*/ temp=ai;_;/*第二空*/ aj=temp; for(i=0;iN;i+)printf(“%d“,_;/*第三空*/ printf(“/n“); (分数:6.00)填空项 1:_32.利用递归法,按下列公式计算并输出函数 fx 的值。 (分数:6.00)填空项 1:_五、B程序设计题/B(总题数:1,分数:16.00)(1).写一个函数计算自然数 n 的阶乘(函数头为 long fac(int n);(分数:8.00)_(2).由键盘输入两个自然数 a 和 b 且
10、 ab,调用上述函数计算并输出 (分数:8.00)_高级语言程序设计真题 2013 年下半年答案解析(总分:100.00,做题时间:90 分钟)一、B单项选择题/B(总题数:15,分数:30.00)1.正确的自定义标识符是_ A.2xy B.int C.root%x D.total(分数:2.00)A.B.C.D. 解析:考点 C 语言的基本词法标识符 解析 标识符是由字母或下画线开头的字母、数学、下画线组成的字符序列。故 A、C 错误,又因为 B 中 int 为保留字,故错误。2.正确的 C 语言常数是_ A.012 B.“abc“ C.0xfp D.2e1.25(分数:2.00)A. B.
11、C.D.解析:考点 C 语言数据类型常量 解析 A 项中 012 为八进制整型常量;B 项中若写成“abc”则正确;C 项中 oxfp:十六进制整数中不会出现 P;D 项中 e 后边应为整数。3.下列不是 C 语言运算符的是_ A. B. C.! D.,执行语句 c=(a=b)|+a;后 c 的值是_ A.0 B.1 C.4 D.5(分数:2.00)A.B. C.D.解析:考点 逻辑运算符的运算 解析 表达式中出现 11 时,只要有一个为真,则逻辑值为非零,即1。由于+a=1,故选 B。8.设 int m=0;,语句 while(m!=0)m+;的循环次数是_ A.0 B.1 C.2 D.无限
12、(分数:2.00)A. B.C.D.解析:考点 while 语句用来实现循环结构 解析 计算表达式值,为真则执行语句,然而此题表达式值为假,则终止。9.定义数组并初始化正确的是_ A.int a=(2,4,6,8); B.int a=2,4,6,8; C.int a3=2,4,6,8; D.int *a4=2,4,6,8;(分数:2.00)A.B. C.D.解析:考点 一维数组的初始化 解析 格式:数据类型符,数组名长度=初始值。10.设 int a35;,该数组两个下标的取值范围分别是_ A.03 和 04 B.0-3 和 35 C.02 和 04 D.35 和 05(分数:2.00)A.B
13、.C. D.解析:考点 二维数组元素的引用 解析 数组名行下标列下标,其中“行下标”合法取值范围是0行长度-1;“列下标”同上。11.设 typedef float REAL;则 REAL 是_ A.变量名 B.常量名 C.函数名 D.类型名(分数:2.00)A.B.C.D. 解析:考点 基本数据类型的自定义 解析 用户自定义类型的格式:typdef 类型符、类型符 2。12.设 char s10;,将字符串输入至数组 s 的正确语句是_ A.s=gets(); B.getchar(s); C.scanf(“%s“,s); D.scanf(“%s“,(分数:2.00)A.B.C. D.解析:考
14、点 使用 gets()函数和 scanf()函数输入字符串的不同之处 解析 gets 的格式为 gets(字符数组)。13.关于函数叙述正确的是_ A.函数必须有形参 B.函数的形参可以是常数 C.函数中只能出现一个 return 语句 D.函数类型为 void 寸,该函数无返回值(分数:2.00)A.B.C.D. 解析:考点 函数的基本概念 解析 函数可以为有函参数,也可以为无参函数,函数的形参是变量形式,函数中可以出现多个返回值,也可以没有 return 语句。14.设 int a10,*p=a;,与数组元素 a0等价的是_ A.*p B.p C.,“n 为偶数”的 C 语言逻辑表达式是_
15、。(分数:2.00)填空项 1:_ (正确答案:a%2=0)解析:考点 逻辑表达式的应用 解析 n 为偶数等价于 n%2 的运算结果,等于 0。17.实现字符串复制的系统函数是_。(分数:2.00)填空项 1:_ (正确答案:strucpy(字符数组、字符串、整型表达式))解析:考点 字符串复制函数 解析 字符串复制函数的调用格式:strcpy(字符数组,字符串,整形表达式)。18.实(浮点)型分为单、双精度两种,其类型保留字分别是_。(分数:2.00)填空项 1:_ (正确答案:float,double)解析:考点 保留字 解析 在 C 语言中有特殊含义的单词称为“保留字”,对于实型变量来说
16、,保留字 double 代表的含义为双精度实型;保留字 float 代表的含义为单精度实型。19.在 C 语言中,运算符优先级最低的是_。(分数:2.00)填空项 1:_ (正确答案:逗号运算符)解析:考点 运算符的优先级 解析 任何运算符优先于逗号运算符。20.设 int a=3;,执行语句 printf(“%d“,a2);后的输出结果是_。(分数:2.00)填空项 1:_ (正确答案:12)解析:考点 位移位运算符左移 解析 a=3 对应二进制数为 0000000000000011,“a2”代表 a 向左移 2 位,运算结果为 0000000000001100,其对应的十进制数为 12。2
17、1.设 float x=3.1;,执行语句 printf(“%.1f“,3.2+(int)x);后的输出结果是_。(分数:2.00)填空项 1:_ (正确答案:6.2)解析:考点 数据类型转换规则以及输出格式字符 解析 “(int)x”表示将变量 x 的值强制转换成整型(3),所以 3.2+(int)x 的值为 6.2;%.1f 代表输出 1 位小数,由于总宽度超过 0 位,所以按实际位数输出,即结果为 6.2。22.设 FILE *fp;,若 fp 指向文件尾部,则 feof(fp)的返回值是_。(分数:2.00)填空项 1:_ (正确答案:非零)解析:考点 文件尾测试函数 解析 若当前是文
18、件尾,返回非 0,否则返回 0。23.设 char p=“abcd“;,执行语句 printf(“%c“,*(p+2);后的输出结果是_。(分数:2.00)填空项 1:_ (正确答案:C)解析:考点 指向字符串常量的指针变量的使用 解析 *(P+i)指向*P 中的第 i 个字符,此题中 i 取0、1、2、3。24.设 chat str=“book/n“;,执行语句。printf(“%d“,sizeof(str);后的输出结果是_。(分数:2.00)填空项 1:_ (正确答案:6)解析:考点 sizeof() 解析 sizeof():计算变量占用内存,包括/0。25.若局部变量的存储类型缺省,其
19、默认类型是_。(分数:2.00)填空项 1:_ (正确答案:自动型(auto))解析:考点 变量的存储类型 解析 当定义某个或某些变量时,省略了存储类型符,系统将默认为自动型变量。三、B程序分析题/B(总题数:4,分数:16.00)26.#includestdio.h int f(int a) static int d=10;/*静态变量*/ d+=a; return d; void main() printf(“f1=%d“,f(3); printf(“f2=%d/n“,f(5); (分数:4.00)_正确答案:(13,18)解析:27.#includestdio.h void main()
20、 int i; for(i=10;i0;i-) if(i%3!=0)continue; printf(“%2d“,i); printf(“/n“); (分数:4.00)_正确答案:(-9 -6 -3)解析:28.#includestdio.h void main() int i,j,s,a3=1,2,3,4,5,6; for(s=0,i=0;i3;i+) switch(i) case 0: case 1: case 2:for(j=0;j3;j+)s+=aij;break; printf(“s=%d/n“,s); (分数:4.00)_正确答案:(6)解析:29.#includestdio.h
21、struct country int no; char name20; a=1,“China“,2,“Russia“,3,“America“,*p=a; void main() p+; printf(“%d,%s“,(*p).no,(*p).name); p-; printf(“%d/n,%s“,p-no,p-name); printf(“%d,%s/n“,a2.no,a2.name); (分数:4.00)_正确答案:(1,china 2 Russia 3,American)解析:四、B程序填充题/B(总题数:3,分数:18.00)30.从键盘输入一系列正(负数作为结束),写入二进制文件 da
22、ta.dat。 #includestdio.h void main() FILE *fp; float x; fp=fopen(“data.dat“,_);/*第一空*/ while(1) scanf(“%f“, if(x=0.0)_;/*第二空*/ fwrite( fclose(_);/*第三空*/ (分数:6.00)填空项 1:_ (正确答案:“W”,break,fp)解析:31.利用选择排序法实现对数组元素的升序排序。 #includestdio.h #define N 10 void main() int i,j,k,temp,aN; for(i=0;iN;i+)scanf“%d“,
23、for(i=0;iN-1;i+) for(j=i+1;jN;j+) if(_)/*第一空*/ temp=ai;_;/*第二空*/ aj=temp; for(i=0;iN;i+)printf(“%d“,_;/*第三空*/ printf(“/n“); (分数:6.00)填空项 1:_ (正确答案:ajtemp,ai=aj,ai)解析:32.利用递归法,按下列公式计算并输出函数 fx 的值。 (分数:6.00)填空项 1:_ (正确答案:n=1,s,s(m))解析:五、B程序设计题/B(总题数:1,分数:16.00)(1).写一个函数计算自然数 n 的阶乘(函数头为 long fac(int n);(分数:8.00)_正确答案:(long fac(intn) if(n=1)return(1); else return(n*fac(n-1); )解析:(2).由键盘输入两个自然数 a 和 b 且 ab,调用上述函数计算并输出 (分数:8.00)_正确答案:(long+ac(intn) if(n=1)return(1); else return(n*fac(n-1); void main( ) int a,b; float x; scanf(“%d,%d“, else(b=a) x=1.000; )解析: