C语言02 - 08年春夏学期考试试卷及答案汇总 下载本文

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 #include typedef char (*AP)[5]; AP defy(char *p) {int i;

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 void main() { int i,j,sum=0; for(i=1;i<=3;i++) {

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 int calc(void) {int x;char p;

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 #define N 4 void main()

{ 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. 下列程序的输出结果是_________________。