2007~2008学年“C程序设计基础”试卷
考试时间: 2008年6月26日上午10:30-12:30
姓名___________________ 学号___________________ 成绩____________________
一.单项选择题(每题1分,共10分)
1. 假定以下表达式中所有变量均已定义为int类型并已赋值,请问其中哪个表达式没有语
法错误______。 A. x=3.14%2;
B. y=2a+b;
C. m=a
D. n=(-x)++; D.void
2. 表达式'A'+'B'的类型为______。
A.char B. int 3. 执行下程序段后
unsigned char a=0;int b=1; do{b++;a++}while(a!=0); 变量b的值是______。
A.0 B.1 C.128 D.257 4. 如果一个函数的返回类型为void,则哪个说法是正确___________ 。
A.该函数中不可以用return语句.
B.该函数中可以用return语句,但必须是最后一个语句
C.该函数中可以用return语句,但return后面不能跟任何表达式 D.该函数中可以返回一个任意类型的值,也可以没有返回值 5. 执行下程序段后,
char a[]=\int n;
n=sizeof(a);
变量n的值是_______。
A.10 IA.%f
B.14 B.%lf
C.9 C.%f或%lf
D.17 D.%ld
6. 用scanf()输入一个double类型的变量的值,则输入格式要用_______。 7. 假定有以下变量定义语句float *p,q;说法正确为_______。
A.p和q的类型均为(float *)
B.p的类型为(float *),q的类型为float C.p的类型为float,q的类型为(float *) D.此变量定义语句有语法错误
8. 执行下程序段
char a='0';
printf(\
后,输出是___________。 A.30 B.0x30
C.0X30 D. 0
9. 假定有如下定义
struct st{char name[10];int score;}a[3],*p=a; 。
A.p->name=\ C.(*p)->name[0]='C';
B.*p.name[0]='B'; D.*(*p).name='D';
10. 执行以下语句后,int n=strcmp(\值正确为______________。
A.n=0 B.n=1 C.n>1 D.n<0
二、填空题(每题2分,共20分)
1.执行以下代码后,将输出__________。 #define FOR while(x--); int x=3,y=0; FOR {y++;}
printf(\
2.执行以下代码后,将输出__________。 int a=2,b=5,c=8; c|=(~a&&b)^!(a&b);
printf(\
3.执行以下代码后,变量d的值为__________。 int a=-10,b=0,c=20,d;
d=a>b?-3.14:b>c?2.68:4.99
4.执行以下代码后,变量x的值为_________________。 int a=3,b=4,c=3,x;
x=a!=(b=c);
5.执行以下代码后,将输出__________。 char t[]=\
int a[]={5,1,2,3,4,0,2,4,5},i=0,go; do{putchar(t[go=a[i++]]); }while(go);
6. 若定义unsigned long int a;且变量a已赋值,试写出判断a的二进制最高位即最左边那位与1相等的表达式(要求不调用任何函数)_____________。 7. 执行以下代码后,将输出__________。
long int a[5]={10,20,30,40,50};; long int *p=a+1;
long *q=&a[3];
printf(\
8. 执行以下代码后,变量max的值为_________________。
int x=3,y=2,z=1,max;
if(x>y&&x>z) max=x; if(y>x&&y>z) max=y; else max=z;
9. 执行以下代码后,将输出__________。
char a[][5]={\
printf(\}
10, 若定义函数时省略该函数的返回类型,则它的实际返回值类型是__________。
三、程序阅读题(每题5分,共30分)
1. 下列程序的输出结果是_________。
# include
for(i=0;i<3;i++) p[strlen(p)]=?A? return (AP)p+1; }
void main( )
{ char a[]=”FROG\\0SEAL\\0LION\\0LAMB”; Puts(defy(a)[1]+2); }
2.下列程序的输出结果是___________________。 # include
if(i==2)continue; for(j=1;j<=6;j++) { sum+=j;
if(sum>=6) break;
}
sum+=i*10; }
printf(“sum=%d”,sum);
}
3.下列程序的输出结果是___________________。 #include \int g=96; void gf(void) {g++; }
int df(void) {int g=10; g++; return g; }
int *sf(void) {static int g=20; g++; return &g; }
void main()
{int a,b,c,*p; gf();gf();a=g; b=df();b=df();
p=sf();*p=32765;p=sf();c=*p; printf(\}
4. 假定运行以下程序时输入 3+4*5-3/2=
则程序的输出结果是_________________。 #include
scanf(\if(p=='=') return x; switch(p)
{case '+':return x+calc(); case '-':return x-calc(); case '*':return x*calc(); case '/':return x/calc(); }
}
void main()
{ printf(\
}
5.下列程序的输出结果是_________________。 #include
{ static int a[N+1][N+1]={1}; int i,j;
for(i=1;i<=N;i++) for(j=1;j<=i;j++) a[i][j]=a[i-1][j-1]+a[i-1][j]; for(i=1;i<=N;i++) {int space=N-i;
while(space--)
putchar(? ?); /*输出空格*/ for(j=1;j<=i;j++)
printf(\
printf(\}}
6. 下列程序的输出结果是_________________。