浙江大学20 08 –20 09 学年 秋冬 学期
《程序设计基础及实验》课程期末考试试卷(A)
试题一、单选题(每小题2分,共20分)
1. 下列运算符中优先级最低的是_____。
A.|| B .>= C .!= A.a=2++
B.a=3,5
C.a=a+1=3
D.~ D.12.3%4
2. 若变量已正确定义并赋值,符合C语言语法的表达式是 。 3. 表达式____不能用于判断“x和y不同时为零”。 A.x!=0 || y!=0 B.x || y C.!( x==0 || y==0) D.!( x==0 && y==0) 4. 表达式5>3>1值是_____。 A.0 B.1
C.3
D.表达式语法错
5. 下列程序段执行后s值为_____。 int i=5, s=0; while(i--) if (i%2) continue; else s+=i;
A.15 B.10 C.9 D.6
6. 已知字母A的ASCII码为十进制数65,且ch为字符型变量,则执行语句ch=?A?+?6?-?3?;后,ch
中的值为_____。 A.D B.68 C.C D.不确定 7. 以下不正确的定义语句是________。
A.double x[5]={2.0,4.0,6.0,8.0,10.0}; B.char c2[]={?\\x10?,?\\xa?,?\\x8?}; C.char c1[]={?1?,?2?,?3?,?4?,?5?}; D.int y[5]={0,1,3,5,7,9}; 8. 下列语句定义pf为指向float类型变量f的指针,_____是正确的。 A.float f, *pf = f; B.float f, *pf = &f; C.float *pf = &f, f; D.float f, *pf =0.0;
9. 假设scanf语句执行时输入ABCDE<回车>,能使puts(s)语句正确输出ABCDE字符串的程序
段是______。
A.char s[5]={\C.char *s;scanf(“%s”,s);puts(s);
B.char s[5]={?A?,?B?,?C?,?D?,?E?}; puts(s); D.char *s; s=\
10. 以下scanf函数调用语句中不正确的是______。
struct pupil {
char name[20]; int age; int sex;
} pup[5], *p=pup;
A.scanf(“%s”,pup[0].name); B.scanf(“%d”,&pup[0].age); C.scanf(“%d”, p->age); D.scanf(“%d”,&(p->sex));
《程序设计基础及实验》课程期末考试试卷, 2009年1月15日 1 / 8
试题二、填空题(每小题2分,共30分)
1. 若有定义:int x=2, y=5; 则表达式x*=y-3的值为_____。
2. 若有定义:int a=3, b=6; 则表达式(a^b)<<2的值为_____。 3. 输入abcde#<回车>,下列程序段的输出结果是_____。 char c; for(c=getchar(); getchar()!=?#?; c=getchar()) putchar(c);
4. 下列程序段的输出结果是_____。
int k=3, s=0; switch (k) {
case 3: s++; k++; case 4: s+=1; switch(s){
case 1:s+=2;
default:k++;break; }
default: s+=3; break; }
printf(\
5. 下列程序的输出结果是_____。
# include
int f(int x)
{ static int k=0; return ++k+x;
}
main( ) { int k;
for(k=0;k<3;k++) printf(\}
6. 下列命令行参数程序生成的执行程序为test.exe,执行test 123 abc<回车>,输出结果是_____。
# include
main(int argc,char *argv[]) {
while(--argc)
printf(\}
7. 下列函数strcpy实现将字符串t拷贝到s,请填写完整。
void strcpy(char*s,char*t) { while(_______); }
《程序设计基础及实验》课程期末考试试卷, 2009年1月15日 2 / 8
8. 请将下列程序段的等价代码填写完整。
int i=0,s=0,a[10]; while (i<10) s+=a[i++]; 等价于
int i,s,a[10];
for(___________);
9. 下列程序段的输出是__________。
#define FB(a,b) (a*b+1) int k=3;
k= FB(k+1,k-1)-9; printf(\
10. 假设有下列函数定义:
void foo(int sum) {
int j;
for (j = 0; j < 10; ++j) sum += (j + 1) * sum; }
在main函数中有如下代码段: int sum = 0; foo(sum);
printf(“%d”, sum);
执行后,输出结果为_________。
11. 用 typedef 写出类型定义 ,使得AIP表示含有10个元素的整型指针数组类型。 12. 下列程序段输出 _____。
char s[]=”abc\\0def\\0ghi”,*sp=s; printf(“%s”,sp+5);
13. 对于以下递归函数f,调用 f (3) 的返回值是_____。 f (int n)
{ return ((n>0) ? 2*f(n-1)+f(n-2) : -1); } 14. 下列程序段执行后,z的值是 ______。
static struct {
int x, y[3];
} a[3] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}}, *p=a+3; int z;
z=*((int *)(p-1)-1);
15. 下列程序段的输出结果是_____.
char *a[]={“123”,”456”},**p=a+1; printf(“%s#%c#”,*p+1,**p-1);
《程序设计基础及实验》课程期末考试试卷, 2009年1月15日 3 / 8
试题三、程序阅读题(每小题5分,共30分)
1. 若输入 -6+15*3/5=<回车> , 以下程序的输出结果是_______。
#include
int m=0, sum=0; char c, oldc='+';
do {
c=getchar(); if(c<='9'&&c>='0')
m=10*m+c - '0';
else {
if(oldc=='+')
sum += m;
else
sum -= m;
m=0; oldc=c;
printf(\ }
} while(c!='='); }
2. 运行下列程序的输出结果是__________。
#include
printf(\}
main() {
fun(13, 2);
putchar(','); fun(33, 5);
《程序设计基础及实验》课程期末考试试卷, 2009年1月15日 4 / 8
相关推荐: