1、高级语言程序设计真题 2013 年上半年及答案解析(总分:100.00,做题时间:90 分钟)一、B单项选择题/B(总题数:15,分数:30.00)1.正确的自定义标识符是_ A.2c B.x#y C.case D.Word_2(分数:2.00)A.B.C.D.2.设 int a=2,b=3,c;,正确的赋值语句是_ A.(a+b)+; B.b=a%2.5; C.a+=b+=5; D.c=a+b=5;(分数:2.00)A.B.C.D.3.设 int a=1,b=3,c;,执行语句 c=(a!=b)?+a:b+;后,c 的值是_ A.1 B.2 C.3 D.4(分数:2.00)A.B.C.D.4
2、.6-1/2+5%2 的值是_ A.2.6 B.3.6 C.4.1 D.4.6(分数:2.00)A.B.C.D.5.设 int a=-1,b=3;,执行表达式+a,指针 p 指向 x 的正确语句是_ A.p=x; B.*p=*x; C.*p= D.p=x&;(分数:2.00)A.B.C.D.8.设 float a,b,c;,函数调用语句 f(a,b),a+c),5);中参数的个数是_ A.1 B.2 C.3 D.4(分数:2.00)A.B.C.D.9.设 int m=5,4,3,2,1,i=2;,其值为 1 的数组元素是_ Ami+2 Bmi+3 Cmi-1Dmmi(分数:2.00)A.B.C
3、.D.10.下列叙述正确的是_ A.while 语句中的循环体至少被执行一次 B.do-while 语句中的循环体至少被执行一次 C.switch 语句中每个 case 后必须有 break 语句 D.continue 和 break 在循环语句中的作用是相同的(分数:2.00)A.B.C.D.11.设 char s2*5=“1234567“;,数组 s 的长度是_ A.10 B.9 C.8 D.7(分数:2.00)A.B.C.D.12.下列二维数组定义并初始化正确的是_ A.int a33=0,3; B.int a2=3,4,5,6; C.int at2,3=2,3,4,5,6,7,8,9;
4、 D.int a4=1,2,4,5,2,3,3,4,9;(分数:2.00)A.B.C.D.13.设 char s120=“China“,s210:“Beijing“;,执行下列语句后的输出结果是_strcat(s1,s2);printf(“%s,%d/n“,s1,strlen(s1); A.China,5 B.Beijing,7 C.ChinaBeijing,12 D.BeijingChina,12(分数:2.00)A.B.C.D.14.设 typedef int ARRAY10;,与语句 ARRAY a,b;等价的是_ A.int a,b; B.int a,b10; C.int a10,b;
5、 D.int a10,b10;(分数:2.00)A.B.C.D.15.表示“回车”的转义字符是_ A./r B./t C./o D./n(分数:2.00)A.B.C.D.二、B填空题/B(总题数:10,分数:20.00)16.执行语句 printf(“%d“,35);后的输出结果是_。(分数:2.00)填空项 1:_17.在 C 语言的文件使用中,EOF 的值是_。(分数:2.00)填空项 1:_18.设 float x,y,a; (分数:2.00)填空项 1:_19.运算符+=,!和,执行语句 printf(“%c,%d“,ch+32,ch);后的输出结果是_。(分数:2.00)填空项 1:
6、_24.设 int n=123;,执行语句 printf(“%d“,n/10%10);后的输出结果是_。(分数:2.00)填空项 1:_25.在 C 语言中,将圆周率(PI=3.1415926)定义为常量的宏定义命令是_。(分数:2.00)填空项 1:_三、B程序分析题/B(总题数:4,分数:16.00)26.#includcstdio.h void main() char op; int a=10,b=20; for(op=a;op=b;op+=2) switch(op) case a:printf(“a+b=%d/n“,a+b);break; case b:printf(“a-b=%d/n
7、“,a-b);break; case c:printf(“a*b=%d/n“,a*b);break; case d:printf(“a/b=%d/n“,a/b);break; (分数:4.00)_27.#includestdio.h void sub(int x,int y,int *z) z=x+y; void main() int a=2,b=5,c; sub(a,b, printf(“%d,%d,%d/n“,a,b,c); (分数:4.00)_28.#includestdio.h int x=1;/*全局变量*/ void fx(int p) x=p+x;p+; void main()
8、int a=3; fx(a);x+; printf(“%d,%d/n“,a,x); (分数:4.00)_29.#includestdio.h int power(int n)/*递归函数*/ if(n=0)return 1; else return 2*power(n-1); void main() printf(“%d/n“,power(5);(分数:4.00)_四、B程序填充题/B(总题数:3,分数:18.00)30.计算 1!+2!+3!+4!+5!的值并输出。 #includestdio.h int f(int a) static int c=1; c=c*a; return(_);/
9、*第一空*/ void main() int i,k; k=-1; for(i=2;i=5;i+)k+_;/*第二空*/ printf(“_/n“,k);/*第三空*/ (分数:6.00)填空项 1:_31.设有 30 名学生,由键盘分别输入每个学生的姓名和两门课成绩,计算每个学生的总分,并输出总分最高者的姓名和总分。 #includestdio.h #define N 30 struct st char name20; float s1,s2,total; ; void main() struct st sN; int i,k; float max; for(i=0;iN;i+) scanf
10、(“%s%f%f“,si.name, si.total=_;/*第一空*/ max=_;/*第二空*/ for(i=1,k=-0;iN;i+) if(si.totalmax) max=si.total;_;/*第三空*/ printf(“%s,%f/n“,sk.name,max);(分数:6.00)填空项 1:_32.从键盘输入 5 个字符串,将其写到文本文件 fs.txt 中。 #includestdio.h #includestdlib.h void main() FILE *fp; char str510; int i; for(i=0;i5;i+)gets(stri);/*输入字符串*
11、/ if(fp=fopen(“fs.txt“,_)=NULL)/*第一空*/ printf(“Cant open file!/n“);exit(0); for(i=0;i5;i+)/*写入文件*/ fputs(_,fp);/*第二空*/ fputs(“/n“,fp); fclose(_);/*第三空*/ (分数:6.00)填空项 1:_五、B程序设计题/B(总题数:2,分数:16.00)33.从键盘输入一个正整数 n,若能同时被 3、5 和 7 整除,则输出“Yes”,否则输出“No”。(分数:8.00)_34.利用循环结构输出以下图形。 (分数:8.00)_高级语言程序设计真题 2013 年
12、上半年答案解析(总分:100.00,做题时间:90 分钟)一、B单项选择题/B(总题数:15,分数:30.00)1.正确的自定义标识符是_ A.2c B.x#y C.case D.Word_2(分数:2.00)A.B.C.D. 解析:考点 标识符的定义 解析 C 语言规定,标识符是由字母或下画线开头的字母、数字、下画线组成的字符序列,而且不能是 C 语言的保留字。2.设 int a=2,b=3,c;,正确的赋值语句是_ A.(a+b)+; B.b=a%2.5; C.a+=b+=5; D.c=a+b=5;(分数:2.00)A.B.C. D.解析:考点 运算符的规则 解析 A 项中,表达式不可自增
13、 1 或自减 1;B 项中模运算的对象必须是整型数据;D 项中,先运算 a+b=8,不可给常量赋值。3.设 int a=1,b=3,c;,执行语句 c=(a!=b)?+a:b+;后,c 的值是_ A.1 B.2 C.3 D.4(分数:2.00)A.B. C.D.解析:考点 条件运算符 解析 条件运算符的格式为:条件一?条件二:条件三。先运算条件一,非 0则运算条件二,为 0 则运算条件三。a!=b 的值为 1,运行+a。运算后 c 的值为 2。4.6-1/2+5%2 的值是_ A.2.6 B.3.6 C.4.1 D.4.6(分数:2.00)A.B.C.D. 解析:考点 除法和整除运算 解析 对
14、象都是整数的除运算,除得的商是整数,商有小数则截去小数部分,故 1/2 的值为 0;模运算的结果是整除后的余数,故 5%2 的值为 1;因此 3.6-0+1=4.6。5.设 int a=-1,b=3;,执行表达式+a,指针 p 指向 x 的正确语句是_ A.p=x; B.*p=*x; C.*p= D.p=x&;(分数:2.00)A.B.C.D. 解析:考点 指针变量 解析 A 项中,p 是指针变量,不能把整型变量 x 赋给 p;B 项中,x 不是地址,*x 非法;C 项中,,函数调用语句 f(a,b),a+c),5);中参数的个数是_ A.1 B.2 C.3 D.4(分数:2.00)A.B.
15、C.D.解析:考点 逗号运算符 解析 逗号表达式的运算规则是依次计算左边、右边表达式,最后的值为右边表达式的值,参数的个数为 2。9.设 int m=5,4,3,2,1,i=2;,其值为 1 的数组元素是_ Ami+2 Bmi+3 Cmi-1Dmmi(分数:2.00)A. B.C.D.解析:考点 一维数组元素的引用 解析 一维数组的下标下限是 0,元素 1 的下标是 4。10.下列叙述正确的是_ A.while 语句中的循环体至少被执行一次 B.do-while 语句中的循环体至少被执行一次 C.switch 语句中每个 case 后必须有 break 语句 D.continue 和 brea
16、k 在循环语句中的作用是相同的(分数:2.00)A.B. C.D.解析:考点 循环结构 解析 while 结构一旦开始就不符合循环条件,循环体一次都不会执行;case语句后不一定要有 break 语句;continue 语句的作用是结束剩下的语句,再判断循环条件,而 break 语句的作用是结束循环。11.设 char s2*5=“1234567“;,数组 s 的长度是_ A.10 B.9 C.8 D.7(分数:2.00)A. B.C.D.解析:考点 数组的长度 解析 数组的定义长度是 10,赋初值不足 10 个,系统默认剩下的为 0,故数组 s 的长度是 10。12.下列二维数组定义并初始化
17、正确的是_ A.int a33=0,3; B.int a2=3,4,5,6; C.int at2,3=2,3,4,5,6,7,8,9; D.int a4=1,2,4,5,2,3,3,4,9;(分数:2.00)A.B.C.D. 解析:考点 二维数组的定义和初始化 解析 二维数组的定义格式为:数据类型数组名行长度列长度。二维数组的行长度可以省略,但是列长度不可省略;初始化时,要用花括号将初始值括起。13.设 char s120=“China“,s210:“Beijing“;,执行下列语句后的输出结果是_strcat(s1,s2);printf(“%s,%d/n“,s1,strlen(s1); A.
18、China,5 B.Beijing,7 C.ChinaBeijing,12 D.BeijingChina,12(分数:2.00)A.B.C. D.解析:考点 strlen()和 strcat()函数 解析 str(s1,s2)的功能是把字符串 s2 连接到 s1,此时 s1变为“ChinaBeijing”;strlen(s1)的功能是计算字符串的长度,此时 s1 的长度为 12。14.设 typedef int ARRAY10;,与语句 ARRAY a,b;等价的是_ A.int a,b; B.int a,b10; C.int a10,b; D.int a10,b10;(分数:2.00)A.B
19、.C.D. 解析:考点 用户自定义类型 解析 用户自定义的格式为:typedef 类型符 1 类型符 2;功能是将类型符 1 定义成用户自选的类型符 2,此后可用类型符 2 来定义相应数据类型的变量、数组、指针变量等。int ARRAY10;中 ARRAY 被定义为整型数组类型,故 ARRAY a,b;是将 a,b 定义为整型数组。15.表示“回车”的转义字符是_ A./r B./t C./o D./n(分数:2.00)A.B.C.D. 解析:考点 转义字符 解析 C 语言的字符集中,还有一些不可显示的字符,如回车换行符号、响铃符号等,回车换行符号为/n。二、B填空题/B(总题数:10,分数:
20、20.00)16.执行语句 printf(“%d“,35);后的输出结果是_。(分数:2.00)填空项 1:_ (正确答案:6)解析:考点 按位运算符 解析 3 和 5 化为二进制分别为 00000011 和 00000101,则 35 按位异或为00000110,化为十进制为 6。17.在 C 语言的文件使用中,EOF 的值是_。(分数:2.00)填空项 1:_ (正确答案:-1)解析:考点 符号常量 EOF 解析 “EOF”是在“stdio.h”中定义的一个符号常量,其值为-1,含义为“文件尾”。18.设 float x,y,a; (分数:2.00)填空项 1:_ (正确答案:2*a/(x
21、+y))解析:考点 算术表达式 解析 2a 在 C 语言中要把乘号加上,同时除数也需要加上括号。19.运算符+=,!和,执行语句 printf(“%c,%d“,ch+32,ch);后的输出结果是_。(分数:2.00)填空项 1:_ (正确答案:a,65)解析:考点 字符常量和输出格式 解析 在 C 语言中,一个字符常量可以看成是整型常量,其值是其ASC码。%c 输出的是字符,%d 输出的是整型数据,ch+32 输出的是小写字母 a。24.设 int n=123;,执行语句 printf(“%d“,n/10%10);后的输出结果是_。(分数:2.00)填空项 1:_ (正确答案:2)解析:考点
22、除运算和模运算 解析 若两个对象都是整型数据,除得的商是整数,所以 n/10 的值为12,因此 12%10 的值为 2。25.在 C 语言中,将圆周率(PI=3.1415926)定义为常量的宏定义命令是_。(分数:2.00)填空项 1:_ (正确答案:#define PI 3.1415926)解析:考点 宏定义命令 解析 宏定义命令的格式为:#define 宏名一串符号。三、B程序分析题/B(总题数:4,分数:16.00)26.#includcstdio.h void main() char op; int a=10,b=20; for(op=a;op=b;op+=2) switch(op)
23、case a:printf(“a+b=%d/n“,a+b);break; case b:printf(“a-b=%d/n“,a-b);break; case c:printf(“a*b=%d/n“,a*b);break; case d:printf(“a/b=%d/n“,a/b);break; (分数:4.00)_正确答案:(a+b=30 a*b=200)解析:27.#includestdio.h void sub(int x,int y,int *z) z=x+y; void main() int a=2,b=5,c; sub(a,b, printf(“%d,%d,%d/n“,a,b,c);
24、 (分数:4.00)_正确答案:(2,5,7)解析:28.#includestdio.h int x=1;/*全局变量*/ void fx(int p) x=p+x;p+; void main() int a=3; fx(a);x+; printf(“%d,%d/n“,a,x); (分数:4.00)_正确答案:(3,5)解析:29.#includestdio.h int power(int n)/*递归函数*/ if(n=0)return 1; else return 2*power(n-1); void main() printf(“%d/n“,power(5);(分数:4.00)_正确答案
25、:(32)解析:四、B程序填充题/B(总题数:3,分数:18.00)30.计算 1!+2!+3!+4!+5!的值并输出。 #includestdio.h int f(int a) static int c=1; c=c*a; return(_);/*第一空*/ void main() int i,k; k=-1; for(i=2;i=5;i+)k+_;/*第二空*/ printf(“_/n“,k);/*第三空*/ (分数:6.00)填空项 1:_ (正确答案:c f(i) %d)解析:31.设有 30 名学生,由键盘分别输入每个学生的姓名和两门课成绩,计算每个学生的总分,并输出总分最高者的姓名
26、和总分。 #includestdio.h #define N 30 struct st char name20; float s1,s2,total; ; void main() struct st sN; int i,k; float max; for(i=0;iN;i+) scanf(“%s%f%f“,si.name, si.total=_;/*第一空*/ max=_;/*第二空*/ for(i=1,k=-0;iN;i+) if(si.totalmax) max=si.total;_;/*第三空*/ printf(“%s,%f/n“,sk.name,max);(分数:6.00)填空项 1:
27、_ (正确答案:si.s1+si.s2 s0.total k=i)解析:32.从键盘输入 5 个字符串,将其写到文本文件 fs.txt 中。 #includestdio.h #includestdlib.h void main() FILE *fp; char str510; int i; for(i=0;i5;i+)gets(stri);/*输入字符串*/ if(fp=fopen(“fs.txt“,_)=NULL)/*第一空*/ printf(“Cant open file!/n“);exit(0); for(i=0;i5;i+)/*写入文件*/ fputs(_,fp);/*第二空*/ fp
28、uts(“/n“,fp); fclose(_);/*第三空*/ (分数:6.00)填空项 1:_ (正确答案:“W“ stri fp)解析:五、B程序设计题/B(总题数:2,分数:16.00)33.从键盘输入一个正整数 n,若能同时被 3、5 和 7 整除,则输出“Yes”,否则输出“No”。(分数:8.00)_正确答案:(#includestdio.h main() int n; scanf(“%d“, else if(n%3=0 else printf(“No“); )解析:34.利用循环结构输出以下图形。 (分数:8.00)_正确答案:(#includestdio.h main() int i,j,k; for(i=0;i5;j+) for(j=0;j4-i;j+) printf(“); for(k=0;k(2*i+1);k+) printf(“*“); printf(“/n“); )解析: