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

2004~2005学年“C程序设计基础”试卷

考试时间: 2005年7月5日上午10:30-12:30

姓名___________________ 学号___________________ 成绩____________________

一.单项选择题(每题2分,共20分)

4. 下面C语言的标识符中,哪个不合法______。

A._total

B.Large#tall

C.int_

D._while

2. C语言源程序经过编译连接最后生成的文件,其后缀名是______。

A.”.c” B.”.obj” C.”.exe” D.”.bas” 3. 表达式x&&1等价于______。 A.x!=0 B.x==0

C.x!=-1

D.x==-1

4. 若变量k已正确定义且k的值是4,计算表达式(j=k++)后,______。 A.k=4,j=4? B.j=4,k=5 C.j=5,k=4? D.j=5,k=5 5. C语言中,函数若没有声明返回值的类型,默认的类型是_______。 A.int B.long C. float D.double

12. 若p1和p2都是指向int类型变量的指针,p1已经指向变量x,要使p2也指向x,则_____是正确的。

A.p2=&*p1; int a[]={1,3,5,7,9}; int *b=a+2; printf(“%d”,*b++); A.3

B.5

C.7

D.9

B.p2=&&p1;

C.p2=&p1;

D.p2=*p1;

13. 下列程序段输出是_____________。

14. 执行下列程序:

#define FB(a,b) (a*b+1) int k=3;

k=FB(FB(k,k+1),k)-7;

后变量k的值是_____________。 A.7 B.24 C.27 D.33

9. 在某C程序中调用了puts函数。在程序的编译预处理部分应用#include 包含__________。

A.”math.h” B.”string.h” C.”stdio.h” D.”ctype.h”

10. 设有结构定义如下: struct student{ int num;

char name[30]; float score; }stud1;

则标准的ANSI C(如TC)下,计算sizeof(stud1)的值为____________。

A.9

B.16

C.25

D.36

二、填空题(每题3分,共24分)

1.写出语句printf(“%d,%o,%x”,?a?/4,0x14,014);的输出结果__________。 2.写出计算s(s?a)(s?b)(s?c)的C语言表达式__________。 3.写出下列程序段的输出结果是_______________________。

int m;char ss[10]=?12345?,8s=ss; for(m=10;m!=0;m--); printf(“%d”,m);

while(*s++)putchar()++s);

4.下列程序段的输出结果是______________________。 #include “stdio.h\ int x;

void f(int x) {static int a=1; printf(“%d,”,a); a+=x+2; }

void main() {int k;

for(k=1;k<=3;k++) f(k);

}

5.对于以下递归函数f,调用f(4)的返回值是_______________________。 f(int n)

{return((n>0)?2*f(n-1)+f(n-2):1);}

6. 下列程序的输出结果是__________________。 #include “stdio.h\ void main()

{int x=3,y=6,z=0;

while(x++)!=(y-=1))

{z++; if(x

printf(“x=%d,y=%d,z=%d”.x.y.z); }

7. 下列程序的输出结果是_____________。

int p,q,k=3,j=4;

q=&k;p=q;q=&j; printf(“%d”,*p);

8. 下面函数定义中的错误是_____________。

double sum(double x,y)

{return(x*x+y*y); }

三、程序阅读题(每题5分,共20分) 8. 下列程序的输出结果是_________。

# include void main( ) { int x,k;

x=12;

for(k=0;x!=0;x=x+2) ++k;

printf(“k=%d,x=%d\\n”,k,x); }

9. 下列程序的输出结果是___________________。

# include

void sort(int b[],intn,int x) { int k;

for(k=n-1;k>=0;k--) if(b[k]

b[k+1]=b[k]; else break; b[k+1]=x; }

void main() {int I,j;

static int a[5]={8,5,7,2,6}; int b[8]; b[0]=a[0];

for(i=1;i<5;i++)

{sort(b,i,a[i]);

for(j=0;j<=i;j++)printf(“%d “,b[j]); pintf(“\\n”); }

}

10. 输入12345后,下列程序的输出结果是___________________。 #include “stdio.h” int fun();

void main()

{ fun();} int fun()

{ char c;

if((c=getchar())!=?\\n?) fun(); putchar(c); }

4. 下列程序的输出结果是_________________。 # include

void main() { int i,n;

char *pa,*s;

pa=”Happy”;

for(s=pa,n=0;*s!=?\\0?;++s,++n);

for(s=pa,j=0;j

}

四、程序填空题(每空2分,共20分)

5. 读入1个正整数n,计算并输出s的前n项的和。

s=1-1/2+1/3-1/4+?? # include

# include void main() { int k,flag,n;

float s;

flag=1;s=0; scanf(“%d”,&n); for(k=1;k<=n;k++){ s=s+ (1) ; (2) ; }

printf(\

} 2.在C盘一级目录TC(c:\\tc)下创建文本文件k2.txt。用键盘键入一个字符串,以‘@’ 作为结束标记,并写入该文件,然后重新从中取出字符并显示在屏幕上。 # include # include

void main()

{ ___________(3)__________;

If((fpa=fopen(“______(4)________”,”w”))==NULL){ printf(“Can?t open file\\n”); exit(0); }

while(___________(5)______) fputc(ch,fp); fclose(fp);

If((_______(6)___________){ printf(“Can?t open file\\n”); exit(0); }

while(!feof(fp)){ ch=fgetc(fp);

printf(______________(7)_______); }

fclose(fp); }

3. 下列程序用于实现从键盘上输入一个正整数,左移三位,并将移位后的数以二进制数输出。

# include