一、2019年

选择

1.C  2.D  3.A  4.C  5.B  6.C  7.A  8.D  9.A  10.B  

判断

11.对  12.错  13.错  14.对  15.错  16.错  17.对  18.错  19.错  20.错

注:

12题,字符串有’\0′,有效字符+1   

16题,以形参为准   

20题,只有定义变量的时候才会去分配存储空间

分析

21.

功能分析:寻找年龄最大的人,输出其姓名和年龄

运行结果:  Liming,58

22.

功能分析:字符串str2是否在字符串str1中,在输出Yes!,不在输出No!

运行结果:(1)No!  (2)Yes!

23.

功能分析:将输入的字符串中的大写字母改成小写,小写字母改成大写

运行结果:tHIS IS A TEST OF c pROGRAM lANGUAGE!


二、2018年

选择

1.B  2.C  3.A  4.D  5.A  6.D  7.B  8.C  9.C  10.B  

判断

11.错  12.对  13.对  14.错  15.对  16.错  17.错  18.错  19.错  20.错

注:

11题,分号;是语句的一部分,不是语句的分割符

18题,循环嵌套中,外层循环成立后再进入内循环  

19题,一个指针变量只能指向同一类型的变量

分析

21.

功能分析:先统计输入的字符串中各个字母的个数(不区分大小写),最后根据字母表顺序依次输出大写字母和对应的个数(这里的字母个数是大写加小写)

运行结果: 

A - 2

E - 1

G - 1

H - 1

I - 2

K - 1

M - 1

O - 2

P - 1

R - 2

S - 3

T - 3

22.

功能分析:分别输出成绩最高与最低的学生的姓名与分数。

运行结果:

Max is: Wanghai, 93

Min is: Liuhong, 62

23.

功能分析:将输入的数据逆序输出

运行结果:54321


三、2017年

选择

1.C  2.A  3.D  4.A  5.D  6.A  7.C  8.B  9.A  10.D  

注:

第8题,从右到左运算,先算a*a=9,此时a=3,a=a-9=-6,此时a=-6,最后运行a=a+a,即-6-6=-12

判断

11.错  12.错  13.错  14.对  15.错  16.错  17.错  18.对  19.错  20.对

分析

21.

功能分析:将输入的数降序排列

运行结果: 67 56 48

22.

功能分析:输出每个人的名字和对应的总分。

运行结果:

name: Zhangwei total=170.000000
name: Wangfeng total=150.000000

注:题目中的k1k2写错了,分别对应的是score1score2

23.

功能分析:输入15个数存入一个二维数组中,输出这15个数中的最大值和对应的下标。

运行结果:a[2][1]=92


四、2016年

选择

1.A  2.C  3.A  4.A  5.A  6.D  7.B  8.A  9.D  10.B  

注:第四题,赋值语句必须有一个‘=’号,C中i- -严格来说不是,但他实现了i=i-1的功能,这样在功能上来说,算是赋值语句。但在选项中A更合适。B中少了分号,D强制转换错误,应该是y=(int) x;

判断

11.错  12.对  13.错  14.对  15.错  16.错  17.对  18.对  19.对  20.错

注:

16题,结构体成员可以是指针类型(比如链表)  

19题,strlen()函数不计算’\0′,字符串实际多长就是多长;而sizeof求字符串大小的时候需要加上’\0′

分析

21.

功能分析:对两个数进行四则运算,其中若除数为0或运算符不为 + ,- ,*,/ 中的一种,则结果为 0。

运行结果:

(1)12 + 120 = 132 

(2)60 / 3 = 20

22.

功能分析:对输入的 10个数进行由小到大升序排列(冒泡排序)

运行结果:

13 27 32 38 49 55 61 76 86 87

23.

功能分析:将字符串中小写字母转换成大写字母

运行结果:

Output: INTRODUCTION OF C++ LANGUAGE


五、2015年

填空

(1) 1
(2) test1.txt
(3) int FindMax(int x[N][M])
(4) max = FindMax(x);
(5) return max;
(6) printf(“%c”, a[i]);
(7) 字符型
(8) 变量 a, b 的值互换
(9) c = 10 + 2 * ( n – 1 )
(10) age(n)
(11) 题目有误,s1 为字符串常量,常量的值是不能被改变的(若将*s1,*s2改为s1[],s2[];则答案为4)
(12) 3

改错

10.

(1) char * p_str;
(2) 
if ((p_str=(char *)malloc(100)) == NULL)
(3) 
free(p_str);

11.

(4) void input(struct person * x);
(5) 
input(&y);
(6) 
void input(struct person * x)

12.

(7) double result = 0;
(8) 
result += 1.0 / fac;

13.

(9) int i;
(10) 
printf("*****\n");

分析

14.

功能分析:判断数组 a 和数组 b 对应位置是否相当,若相等,则结束;若不等,则输出 a 对应位置的元素

运行结果:  12 4 17 24 27

15.

功能分析:将字符串两两之间进行比较,升序排列


六、2014年

选择

1.B  2.A  3.A  4.C  5.B  

判断

1.错  2.对  3.错  4.错  5.对  

分析

1.

功能分析:求1~10中的偶数和与奇数和

2.

功能分析:将数组a中元素按从小到大的次序进行排序

3.

99101:89.3

99102:85.5

99103:96.8

99104:78.6

4.

功能分析:
打开文件 fname.dat ,如果打开失败则提示错误,并结束程序;如果成功打开该文件,则统计该文件中字符的个数并输出字符的个数。

5.
(1) person + 3
(2) old < p->age

6.
(1) i
(2) +(*(a+i))

7.
(1) x[i][i]
(2) x[i-1][j-1] + x[i-1][j]