您的当前位置:首页浙江大学C语言程序设计理论考试模拟试题答案

浙江大学C语言程序设计理论考试模拟试题答案

来源:小侦探旅游网
浙江大学C语言理论考试模拟试题答案

一、判断题

共10题,每题1分,共10分。正确的请选择A,错误的请选择B。

1、 在C语言中,函数不可以嵌套定义,但函数可以嵌套调用。A A、正确 B、错误 解答:A

2、 在程序中 else 子句可以单独使用。 B A、正确 B、错误 解答:B

3、 C 语言源程序文件通过了编译、连接之后 , 生成一个后缀为 .EXE 的文件。 ( A、正确 B、错误 解答:A

4、 _ya是不合法的C语言标识符。B A、正确 B、错误 解答:B

5、 在数组初始化时,如果初值个数多于数组长度,将出现错误。 A A、正确 B、错误 解答:A

6、 C语言规定,函数返回值的类型是由return语句中的表达式类型所决定。 B A、正确 B、错误 解答:B

7、 若有定义 int *p, 则表达式 p++ 的值就是 p 所指向的变量的地址值加1。 B A、正确 B、错误 解答:B

8、 '\\n'不是一个字符常量。B A、正确 B、错误 解答:B

9、 表达式 (z=0, (x=2)||(z=1),z) 的值是1。B A、正确 B、错误 解答:B

10、 若打开文件的方式为“w”而该文件已经存在,则文件中原有数据被清空。 A、正确 B、错误

) A 解答:A

二、单选题

请从给定的选项中选择一个唯一正确的选项。每小题2分,共10题,20分。

1、 C下面有关变量的命名,不合法的是:( ) A. _int B. __intint C. __int&int D. ___intintint C

解答:C

2、 有变量定义int a;float c;下面输入语句有语法错误的是( )。 A. scanf(\"%d,%f\B. scanf(\"x=%d, c=%f\C. scanf(\"%d%f\D. scanf(\"%f %d\D

解答:D

3、 下面关于函数参数使用的说法,不正确的是:( ) A. 函数调用时实参按顺序传递到形参; B. 函数调用时实参把值传递给形参;

C. 函数的实参和形参个数可以不一致,但使用时应尽量一致; D. 函数的实参和形参可以同名; C

解答:C

4、 已知 int k=1; for(k=1;1;k++) if(k) break; for语句的循环次数是( A. 0 B. 1 C. 2 D. 无限次 B

解答:B

5、 下面定义的max函数返回值的数据类型是( ) max(float a,float b) {

return(a>b?a :b) ; } A. int B. float

)。 C. double D. 不确定 A

解答:A (此题似乎有争议)

此题应该没有争议,因为max()的函数头决定了max()的返回值必定是int, return 后面的表达式必须转化成int。----BlackWhite注

6、 已知int a = 10 , x = 0 ; x = ~a;则x的值为( )。 A. -1 B. 0 C. -11 D. 负无穷大 C

解答:C

7、 表达式(float)10/2的值的数据类型是( )。 A. int B. long C. float D. double C

解答:D 这题才有争议,这个题明显出得不好。

因为按C99标准,该表达式的类型为float,而按C89标准,则表达式的 类型为double。证明方法如下:

在TC中输出sizeof((float)10/2)可以得8,

而在VC中输出sizeof((float)10/2)则得4。。----BlackWhite注

8、 表达式 !(x>0||y>0) 等价于_____。 A. !x>0||!y>0 B. !(x>0)||!(y>0) C. !x>0&&!y>0 D. !(x>0)&&!(y>0) D

解答:D

9、 不正确的赋值或赋初值的方式是______。 A. char str[ ]=\"string\"; B. char str[10]; str=\"string\"; C. char *p=\"string\"; D. char *p; p=\"string\"; C

解答:B

10、 声明语句为“int a[3][4];”,下列表达式中与数组元素a[2][1]等价的是______。 A. *(a[2]+1) B. a[9] C. *(a[1]+2)

D. *(*(a+2))+1 color[k][j]等价于*(color[k]+j)也可以写成*(*(color+k)+j) A

解答:A

三、填空题。

在解答的文本框中填写正确的答案。共10小题,每小题2分,共20分。

1、 表达式int a=97; 表达式'b'(1) 解答:1(左边为假,则为0,右边也为0,故总体为真,值为1.)

2、 equal()函数用于判断两个数是否相等,请写出最简单的形式二使与形式一等价。 形式一:

int equal(int x,int y) {

if(x==y) return 1; else return 0; } 形式二:

int equal(int x,int y) {

return (__X==Y___); }

(1) 解答:x==y

3、 定义下列变量的值为:int x=5, y=2, z=0; 则表达式:(x||(y=5), x&&z||(y=1), x+y+z)的值为:___(1)___ 6

(1) 解答:6

4、 下面程序段运行结束后a的值为:__(1)___

5

(1) 解答:5

5、 下列程序段的输出结果是_____。

0

*K--引用*k所指向的元素,K指向数组的上一个元素 _ 解答:0

6、 下列程序的输出结果是_____。

2#4 _ 解答:2#4

7、 下列printf输出的结果是______。

10

_ 解答:10

8、 以下程序的输出结果是:______。

7

_ 解答:7

9、 若有以下的定义和语句,则表达式 *(++p)->b用%d输出的值是______。

1131 _ 解答:31

10、 系统提供了平方根函数,其函数名是______。

_ 解答:sqrt

四、选择性程序阅读题。

在给定的四个选项中,选出唯一一个正确答案。共5题,每题4分,共20分。

1、 阅读以下程序,程序运行时输入3 123 1234 12345后回车,请写出程序的运行结果。

A. 0# B. 0#4# C. 0#4#13# D. 13# C 解答:C

2、 运行时输入banana apple pear orange 的输出结果是_______。

A. pear B. banana C. apple D. orange A 解答:A

3、 下列程序的输出结果是______。

A. 22#244#2466# B. 2#24#246# C. 2#24#66# D. 22#64#126# A 解答:A

4、 假设文本文件a.txt中存放了下列数据: apple?pear?1234?output?

文本文件b.txt中存放了下列数据: apple?pear?1604?input?

假定文件都能正确打开,下列程序的输出结果是_______。

A. 2#6#2# B. apple?pear?12# C. apple?pear?110# D. 2#6#10# D 解答:D

5、 下列程序的输出结果是_______。

A. 1#1#2#3#1#3 B. 2#1#1#1#1#2#2 C. 1#1#2#3#1#1 D. 1#1#2#3#1#0 D 解答:D

五、选择性程序填空题。共30分,5题*3空=15个空,每空2分。请在给定的选项中为每空选择一个唯一正确的选项,使程序补充完整。

1、 输入两个正整数m和n(1A. m=(m+n)/2 B. m=m+n C. n=n+m D. cur=n G. pre1+pre2 H. cur=pre1 I. cur=pre2

B E G

(1) 解答: B (2) 解答: E (3) 解答: G

2、 输入1 个正整数 n(n>=6), 将n分解为3个素数之和,要求只输出一组。 如:

输入24,则输出24= 2+3+19 输入11,则输出11= 3+3+5

B E I

A. if(n%2==0) a=2;else a=3; B. n%2+2 C. n/2+2 D. prime(n-b)==0 E. prime(n-b) F. prime(b) G. return 0 H. return 1 I. return flag

(1) 解答: B (2) 解答: E (3) 解答: I

3、 输入若干学生的成绩,如果输入成绩>100或<0时输入结束,请按等级对成绩进行分类统计,并输出各等级及对应的学生人数。 等级划分如下: A:100>=优秀>=90 B:良好>=80; C:中等>=70 D:及格>=60 E:不及格<60。

例如,输入95 56 88 76 34 90 66 79 74 81 84 67 83 75 100 82 70 -1 则输出:A:3 B:5 C:5 D:2 E:2

A. x<60?0:x/10-5 B. 'A'+i C. x<60?0:(x-60)/10 D. 0<=x<=100 E. x>=0 || x<=100 F. x<=100 G. x>=0 && x<=100 H. x/10-5 I. 'E'-i G C A I (1) 解答: G (2) 解答: A (3) 解答: I

4、 编程实现输出以下图形:

A. (4 - m)%4 B. j < 2*m-1 C. printf(\"\\n\") D. j < 2*m E. 4 - m%4 F. printf(\"*\") G. printf(\" \") H. j <= 2*m I. m%4-4

(1) 解答: E (2) 解答: B (3) 解答: C

5、 输出1~1000之间所有满足各位数字的立方和等于它本身的数。A H C

A. m=k; s=0 B. m=m%10 C. k==s D. digit==s E. m=k/10 F. k=m; s=0 G. m==s H. m=m/10 I. s=0

E B C

(1) 解答: A (2) 解答: H (3) 解答: C

因篇幅问题不能全部显示,请点此查看更多更全内容