浙江科技学院考试试卷
???????????????????? ? ? ? ? ? ? ? ? ? ? ? ?名线姓订 装 ? ? ? ? ? ? ? ? ? 号?学? ? ? ? ? ? ? ? ? ? ? ?级?班?业?专? ?浙江科技学院
2011 - 2012 学年第 1 学期考试试卷 B卷
考试科目 C语言程序设计 考试方式 闭 完成时限 2小时 拟题人 题库 审核人 批准人 2012年1月11日 信息、建工、生化、经管、轻工、理学 学院 2011 年级 理工科专业 题序 一 二 三 四 五 总分 加分人 复核人 得分 签名
说明:
1. 应将全部答案写在答卷纸对应的题号处;否则作无效处理;
2. 编程题应写明题号,若答卷纸不够,请写在背面,不要另添卷纸; 3. 考试完成后,必须将试卷与答卷同时交回。
得分 一、判断题(本大题共12小题,每题小1分,共12分) 1. C语言是一种面向对象的编程语言。
2. 从狭义角度讲,算法是解决一个问题采取的方法和步骤的描述。
3. 程序调试就是找出并改正C源程序中的语法错误
4. 循环结构中,for语句的功能比while语句强大,有些for语句能实现的功能,while
语句实现不了。
5. break在循环中的作用是结束本次循环,即跳过本次循环体中余下尚未执行的语
句,接着再一次进行循环判断。
6. 假定一个字符在内存中占1个字节,字符串“china”在内存中占5个字节。 7. 二维数组元素在内存中的地址像一个矩阵,有多行多列,行与行之间的地址是不
连续的。
8. 定义语句: int a[10];则*(a++)代表元素a[1]。
9. 语句“char ch=?A?,*p=&ch;”中,定义了一个字符型变量ch和一个字符型指针变
第 1 页 共 12 页
浙江科技学院考试试卷
量p,p前的“*”是取内容运算符。
10. do-while语句先执行循环体,后判断循环条件,所以循环体至少会执行一次。 11. C程序的编译预处理命令以“#”开始,并以“;”结束。
12. 使用结构体的目的是将一组数据作为一个整体,而其中所有的成员共享同一存储
空间。
得分 二、单选题(本大题共20小题,每题1分,共20分) 1. 下列说法正确的是( )。
A. 在C语言程序中,main函数必须位于程序的最前面
B. 在对一个C程序的编译过程中,可发现注释中的拼写错误
C. C语言本身没有输入输出语句 D. C程序的每行中只能写一条语句
2. 设有程序段 int k=10; while (k==1) k=k-1; 则下面的描述中正确的是( )。 A. 循环将会执行1次 C. 循环将会执行9次
B. D.
循环一次都不会执行 循环将会执行无数次
3. C 语言程序中可以对程序进行注释,注释部分可用符号( )括起来。 A.?{? 和?}? B.?[?和?]? C.“/*”和”*/” D.“*/”和”/*” 4. 在C 语言程序中,在函数外部定义的变量称为( )。
A.全局变量 B.外部变量 C.局部变量 D.内部变量 5. 对于以下的变量定义,表达式( )是不正确的。 struct node { int j, k; } x, *p=&x;
A.p->k=2 B.(*p).k=2 C.x.k=2 D.x->k=2
6. 数组定义为 int a[11][11],则数组a 有( )个数组元素。
A.12 B.144 C. 100 D. 121 7. 表达式( )的值是0。
A.3%5 B.3/5.0 C.3/5 D.3<5
8. 设程序中不再定义和声明变量,写出在函数fun中可以使用的所有变量( )。 #include
{ static int y; ?? return; } int z;
第 2 页 共 12 页
浙江科技学院考试试卷
void main( ) { int a,b; fun(a); ?? }
A.x, y
B.x, y, z C. a,b,y,z D.a,b,x,y,z
9. 若二维数组a每行有m列,则在元素a[i][j]前的元素个数为( )。 A. j*m+i
B.
i*m+j-1
C.
i*m+j+1
D.
i*m+j
10. 若p1、p2都是整型指针,p1已经指向变量x,要使p2也指向x,则下列表达式正
确的是( )。 A. p2=p1; 11. 设有:
int a=1,b=2,c=3,d=4,m=2,n=2;
执行 (m=ad)后n的值是( )。 A. 1
B.
2
C.
3
D.
4
B.
p2=**p1;
C.
p2=&p1;
D.
p2=*p1;
12. 若变量已正确定义并且指针p已经指向某个变量x,则(*p)++相当于( )。
A.p++ B.x++ C.*(p++) D.&x++
13. 若想在程序中判断输入给字符变量c的字符是否为数字字符,则要使用的表达式
是( )。 A. 0<=c<=9 C.
?0?<=c<=?9?
B. D.
0<=c && c<=9 ?0?<=c && c<=?9?
14. 下列程序的输出结果是( )。
int k=1, s=0; switch (k) {
case 1: s+=10;
case 2: s+=20; break; default: s+=3; }
printf(\A. k=1 s=10 C.
k=1 s=30
B. D.
k=1 s=20 k=1 s=33
15. 下列程序的输出结果是( )。
int k=1, j=2, *p, *q, *t; p=&k; q=&j; t=p; p=q; q=t;
第 3 页 共 12 页
浙江科技学院考试试卷
printf(\ A. 1,2 C.
2,1
B. D.
1,1 2,2
16. 已知链表结点定义语句为“struct node{int num; struct node *next;};”, 在下图所
示的链表中,head为头指针,p0指向一个新建结点,则将p0按num域升序的规律插入到链表中的语句是( )。 head
3 5 NULL p0
1 A. p0->next =head->next; head->next =p0; B. C.
head->next= p0->next; p0 = head->next; p0->next=head; head=p0;
D. head->next=1;p0->next=3;
17. 已知有如下的宏定义,则下列语句执行后的输出结果是( )。
#define A 10
#define B (A B. -2 C. -1 D. 0 18. 下列宏定义命令中,哪一个格式是正确的( )。 A. #define NUM=10 C. #defineNUM 10 B. D. #define NUM 10; define NUM 10 19. 为在程序中能够调用库函数strcmp,需要包含头文件( )。 A. math.h B. string.h C. stdio.h D. stdlib.h 20. 函数f的原型说明为“void f(int x[], int x);”,有如下定义语句:“int a[10], m;”, 则下列函数调用正确的是( )。 A. m=f(a); C. f(int a[10], int m); 得分 三、程序填空题(本大题共4小题,每空2分,共24分) 1. 下面程序运行后输入以0结束的一批整数,统计大于零的整数个数。 第 4 页 共 12 页 B. D. f(a,m); m=f(a[10],m);