2016 年浙江宁波大学 C 程序设计考研真题
一、单项选择题:
本大题共 30 小题,每小题 3 分,共 90 分。在每小题列出的四个选项中只有一
个是符合题目要求的。错选、多选或未选均不得分。
1. 关于C语言中的函数,下列说法中错误的是___________
A) 函数定义可以分为两个部分,即函数说明部分和函数体
B) 主函数可以调用非主函数
C) 某个非主函数可以调用其它非主函数
D) 程序可以从任何函数开始执行
2. C 语言中 while 和 do-while 循环的主要区别是___________
A) do-while 的循环体至少无条件执行一次
B) while 的循环控制条件比 do-while 的循环控制条件严格
C) do-while 里面不允许使用 break
D) do-while 里面不允许使用 continue
3. 在 C 语言程序中,以下说法正确的是___________
A) 函数的定义可以嵌套,但函数的调用不可以嵌套
B) 函数的定义不可以嵌套,但函数的调用可以嵌套
C) 函数的定义和函数的调用都不可以嵌套
D) 函数的定义和函数的调用都可以嵌套
4. 下列字符列中,能作为某个变量的标识符是___________
A) ?a
B) a=2
C) a.3
D) a_3
5. 在以字节存储字符的系统中,字符‘\n ’在内存占用的字节数是___________
A) 1
B) 2
C) 3
D) 4
6. 下面的数字中,合法的长整型常数是___________
A) 0L
B) 4962710
C) 0.054838743
D) 2.1869e10
7. 下面正确表示字符常量的是___________
A) "\n"
B) '\t'
C) "0"
D) 65
8. 输出字符型变量 x 与整型变量 y,下列 printf 语句使用正确的是___________
A) printf ("%f%s", x, y);
B) printf ("%lf%c", x, y) ;
C) printf ("%c%d", x, y);
D) scanf ("%f%c", x, y) ;
9. 为表示关系 x≥y≥z,应使用 C 语言表达式___________
A) (x>=y>=z)
B) (x>=y) AND (y>=z)
C) (x>=y) && (y>=z)
D) (x>=y) & (y>=z)
10. C 语言对 if 嵌套语句的规定 else 总是与___________配对。
A) 第一个 if
B) 之前最近的且尚未配对的 if
C) 缩进位置相同的 if
D) 之前最近的 if
11. 已知整数变量 a 为 10,b 为 3,则 a&b 的值为___________
A) 1
B) 0
C) 13
D) 2
12. 设有定义:char s[12]={“string”};则 printf(“%d\n”, strlen(s));的输出是
___________
A) 6
B) 7
C) 11
D) 12
13. 设有定义:int a[6]={1,2,3,4,5,6}; 则 a[6]的值为___________
A) 4
B) 5
C) 6
D) 已经超出范围
14. 若有说明语句“int a[10], *p=a;”,对数组元素的正确引用是___________
A) a[p]
B) p[a]
C) *(p+2)
D) p+2
15. 以下定义数组的语句错误的是___________
A) int num[]={1, 2, 3, 4, 5, 6};
B) int num[][3]={{1, 2}, 3, 4, 5, 6};
C) int num[2][4]={{1, 2}, {3, 4}, {5, 6}};
D) int num[][4]={1, 2, 3, 4, 5, 6};
16. 若有定义:“int a[2][3];”,则对 a 数组的第 i 行第 j 列元素的正确引用为
___________
A) *(*(a+i)+j)
B) (a+i)[j]
C) *(a+i+j)
D) *(a+i)+j
17. 两个指针变量不可以___________
A) 相加
B) 相减
C) 比较
D) 指向同一个地址
18. 以下对枚举类型名的定义中,正确的是___________
A) enum a ={one, two, three};
B) enum a{a1, a2, a3};
C) enum a ={‘1’, ‘2’, ‘3’};
D) enum a {“one”, “two”, “three” };
19. 在下列代码中,正确的 C 代码是___________
A) # define MYNAME=“ABC” B) # include string.h
C) for (i=0; i<10; i++);
D) struct int stu { int name; };
20. 假设 var1, var2, var3, var4, var5 是 5 个整形变量,有如下函数调用语句:
func(var1, var2+var3, var4, var5);该函数调用语句中,含有的实参个数是___________
A) 3
B) 4
C) 5
D) 6
21. 下列语句中,将 c 定义为文件型指针的是___________
A) FILE c;
B) FILE *c;
C) file c;
D) file *c;
22. 函数 fseek(pFile,0L,SEEK_CUR)中的 SEEK_CUR 代表的起始点是___________
A) 文件开始
B) 文件末尾
C) 文件当前位置
D) 以上都不对
23. 设有定义
struct {int x, y;} d[2] = {{1,3},{2,7}};
那么
printf(“%d\n”, d[0].y/d[0].x*d[l].x);
的输出是___________
A) 0
B) 1
C) 3
D) 6
24. 关于链表,下面说法正确的是___________
A) 链表不能在表头插入元素或者删除元素
B) 链表支持随机存取
C) 链表中各元素的物理地址连续
D) 链表属于动态数据结构
25. 若 k 是 int 类型变量,有以下 for 语句:
for(k=-1; k=1; k++)
printf("OK\n");
下面关于语句执行情况的叙述中正确的是___________
A) 循环体执行两次
B) 循环体执行一次
C) 循环体一次也不执行
D) 构成无限循环
26. 设 a=15; 则执行 a += a -= a *= a 以后,a 的值为___________
A) 15
B) 30
C) 0
D) 225
27. 设 x, y, tmp 均为整形变量,则以下语句:
tmp = x; x = y; y = tmp;
的功能是___________
A) 按从小到大排列
B) 按从大到小排列
C) 无确定结果
D) 交换 x 与 y 的值
28. 下面的程序
#include
void main()
{
int a = 3;
switch (--a)
{
case 2: printf("2");
case 3: printf("3");
}
}
输出的结果是___________ A) 2
B) 23
C) 3
D) 32
29. 下面的程序
#include
#define ABC(x) x * x
void main(){
int a = 3;
printf("%d\n", ABC(a + 1));
}
输出的结果是___________ A) 7
B) ABC
C) 4
D) 16
30. 下面的程序
#include
void main()
{
int a = 4;
int b = a++;
int c = a;
printf("%d, %d, %d\n", a, b/2, c/2);
}
输出的结果是___________ A) 5, 2, 2
B) 4, 2.5, 2.5
C) 4, 2.5, 2
D) 5, 2, 2.5
二、 编程题:
本大题共 4 小题,每小题 15 分,共 60 分。
1、这门课程的总评成绩。
【问题描述】
你这学期计算机应用基础课程的总评成绩=10%平时+40%上机实验+50%期末卷面考试;成
绩由优、良、中、及格、不及格五个等级来表示,其中:
总评成绩>=90,优
90>总评成绩>=80,良
80>总评成绩>=70,中
70>总评成绩>=60,及格
其他,不及格
【输入】
输入一个学生的平时成绩、上机实验成绩、期末卷面成绩(整型);
【输出】
请你输出该学生的成绩等级。
【样例输入】
80 90 85
【样例输出】
良
2、根据年龄计算生肖。
【问题描述】
在东南亚的很多国家,都有十二生肖的说法。以中国为例,2000 年为龙年(Dragon),接下
来依次是蛇(Snake),马(Horse),羊(Sheep),猴(Monkey),鸡(Cock),狗(Dog),猪(Boar),
鼠(Rat),牛(Ox),虎(Tiger),兔(Hare)。今年是 2015 年,请根据用户输入的年龄,输出
他(她)
的生肖。
【输入】
第一行的数字为测试数据的组数 N,接下来是 N 个人的年龄。
【输出】
相应的生肖。
【样例输入】
2
14
109
【样例输出】
Snake
Horse
3、各位数字和。
【问题描述】
小明今年 4 岁了,正读幼儿园小班呢。老师为了测试孩子对加法的掌握程度,在黑板上随
手写了一些数字,让孩子们把各个位上的数字加一起,看看答案正确与否。
【输入】
第一行的数字为测试数据的组数 N,接下来每行有两个数字,前面的数字代表老师写下的
整数,后面的数字代表孩子运算的结果。
【输出】
如果正确输入 Right, 如果错误输出 Wrong。
【样例输入】
2
123 6
7890 20
【样例输出】
Right
Wrong
4、复数的乘积。
【问题描述】
复数可表示成 a+bi,其中 a,b 都是实数, i*i = -1。现有 N 个复数,请计算它们的乘积。
输入复数的个数 N 及每个复数,输出它们的乘积。保留两位小数。
复数乘法公式:(a+bi)*(c+di)=(ac-bd)+(bc+ad)i
【输入】
N 个复数
【输出】
它们的乘积
【样例输入】
2
0.5 1
1 -0.5
【样例输出】
1.00 0.75