2017浙江大学C语言试卷附的答案
一、 单选题
1.假定以下表达式中所有变量均已定义为int类型并已赋值,请问其中哪个表达式没有语法错误。
x=3.14%2;
y=2a+b;
m=a
n=(-x)++; (c)
2. 表达式 ‘A’+’B’ 的类型为:
A. char
B. int
C. double
D. void (b)
3. 执行以下这段程序后,
unsigned char a=0;
int b=1;
do{
b++;
a--;
} while(a!=0);
变量b的值等于多少?
A.0 B。1 C。128 D。257 (d)
4.如果一个函数的返回值类型为void, 则以下哪个说法是正确的?
A.该函数中不可以用return语句
B.该函数中可以用return语句,但必须是最后一个语句
C.该函数中可以用return语句,但ruturn后面不能跟任何表达式
D.该函数可以返回一个任意类型的值,也可以没有返回值 (c)
5.执行以下程序后,
char a[]=”ABC\\XYZ\007\xFF”;
int n;
n=sizeof(a);
变量n的值等于多少?
A. 10 B。 14 C。 9 D。 17 (a)
6。用scanf() 输入一个double类型的变量的值,则输入格式要用
A."%f”
B. “%lf”
C. “%f”或”%lf”
D. “%ld” (b)
7.假定有以下变量定义语句,
float *p,q;
请问哪个说法是正确的?
p和q的类型均为 (float *)
p的类型为(float *),q的类型为float
p的类型为float,q的类型为(float *)
此变量定义语句有语法错误 (b)
8.执行以下程序后,
char a=’0’;
printf(“%x”,a);
将输出什么结果?
A. 30 B.0x30 C.0X30 D.0 (a)
9.假定有如下定义,
stuuct st {
char name[10];
int score;
} a[3],*p=a;;
请问哪个用法是正确的?
p->name=”Tom”;
*p.name[0]=’B’;
(*p)->name[0]=’C’;
*(*p).name=’D’; (d)
10.执行一下语句后,
int n=strcmp(“ABC”,”AB”);
则一下关于n值的描述哪一个是正确的?
n=0;
n=1;
n>1;
n<0 (c)
二、填空题
1.执行以下代码后,将输出 。
# define FOR while(x--);
int x=3,y=0;
FOR
{
y++;
}
Printf(“x=%d, y=%d”,x,y); x= -1,y=1
2.执行以下代码后,将输出 。
int a=2,b=5,c=8?;
c?|= (~a && b) ^?!(a&b);
printf(“c=%d’,c); c=8
3.执行以下代码后,变量d的值= 。
int a=-10,b=0,c=20,d?;
d= a>b?? -3.14 : b>c ? 2.68:4.99; d=4
4.执行以下代码后,变量x的值= 。
int a=3,b=4,c=3,x?;