文档库 最新最全的文档下载
当前位置:文档库 › C语言考试试卷及答案

C语言考试试卷及答案

C语言考试试卷及答案
C语言考试试卷及答案

2011-2012学年第一学期

C语言程序设计A 课程A卷考试题

共 4 页此第 1 页成绩

一、单项选择题(每小题2分,共40分)

1. C语言中合法的字符常量是()

A.n

B.’\n’

C.110

D.”n”

2. 有以下程序:

main( )

{ char ch=’A’;

printf(“ch(1)=%d,ch(2)=%c\n”,ch,ch+1); }

程序运行后的输出结果是()

A. ch(1)=65,ch(2)=A

B. ch(1)=97,ch(2)=A

C. ch(1)=65,ch(2)=B

D. ch(1)=97,ch(2)=B

3. 能表示a不能被2整除且a、b不相等,但a、b的和等于0的C语言逻辑表达式是()

A. a==-b&&a%2==0

B. a!=b&&a+b==0&&a%2

C. !(a%2)&&a==-b

D.a%2==0&&a+b==0

4. 以下程序段中语句” printf("i=%d,j=%d\n",i,j);”的执行次数是()

int i, j;

for(i=3;i ;i--)

for(j=1;j<5;j++) printf("i=%d,j=%d\n",i,j);

A. 12

B. 20

C. 15

D. 24

5. 执行以下程序段后,x[2]的值是()

int x[10]={1,2,3,4,5,6,7,8,9,10},i,j,t;

i=0;j=9;

while(i

{ t=x[i]; x[i]=x[j]; x[j]=t;

i++; j--; }

A. 8

B. 2

C. 3

D. 9

6. 判断字符串”abcd”和”ab cd”是否相等,应使用的语句是()

A. if (“abcd”==”ab cd”)

B. if (abcd==ab cd)

C. if (strcmp(“abcd”,”ab cd”))

D. if (strcmp(abcd,ab cd))

7. 若有定义“int *p,*q,a=2,b;”,则以下正确的赋值语句组是()

A. p=&a; *q=*p;

B. *p=a;*q=b;

C. p=&a;q=&b;*p=*q;

D. p=&a;q=&b;*q=*p;

8.以下说法错误的是()

A. C程序中可以只包含一个main函数

B. C程序由一个main函数和若干个其他函数构成

C. C程序中可以没有main函数,但至少应包含一个其他函数

D. C程序由函数组成,函数是构成程序的基本单位

9. 以下选项中,能用作用户标识符的是()

A. void

B. 8_8

C. _0_

D. unsigned

10. 表达式:(int)((double)9/2)-(9)%2的值是()

A. 0

B. 3

C. 4

D. 5

11. 有以下程序:

#include

void main()

{ int a,b,c=200;

a=c/10%9;

b=!a||(a-2);

printf("%d,%d\n",a,b); }

程序运行后的输出结果是()

A. 0,1

B. 2,1

C. 0,0

D. 2,0

12. “==”代表C语言中的()

A. 条件运算符

B. 逻辑运算符

C. 关系运算符

D. 赋值运算符

13. .若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是()

A. 1

B. 0

C. 2

D. 不知道a的值,不能确定

14. 有以下程序:

#include

void main()

{ int a=12,b=20,t=18;

if(a>b)

t=a;a=b;b=t;

printf("a=%d,b=%d,t=%d\n",a,b,t); }

程序运行后的输出结果是()

A. a=12,b=20,t=18

B. a=20,b=18,t=18

C. a=20,b=12,t=12

D. a=20,b=18,t=12

15. 执行以下程序后的输出是()

#include

void main()

{ int x,y;

for(x=1,y=1;x<=20;x++)

{ if(y>=20) break;

if(y%5==1){ y=y+5; continue; }

y=y-1;

}

printf("x=%d,y=%d\n",x,y); }

A. x=5,y=21

B. x=4,y=21

C. x=5,y=20

D. x=4,y=20

16. 凡是函数中未指定存储类别的局部变量其隐含的存储类别是()。

A. 自动(auto)

B. 静态(static)

C. 外部(extern)

D. 寄存器(register)

17. C语言中用于结构化程序设计的三种基本结构是()

A.. 顺序结构、选择结构、循环结构

B. if、switch、break

C. for、while、do-while

D. if、for、continue

18. 在while(x)语句中的x与下面条件表达式等价的是:()

A. x!=0

B. x==1

C. x!=1

D. x==0

19. 若二维数组a有m行n列,则下面能够正确引用元素a[i][j]的为()

A. *(a+j*n+i)

B. *(a+i*n+j)

C. *(*(a+i)+j)

D. *(*a+i)+j

20. 若有以下调用语句,则不正确的fun函数的函数原型是()

void main()

{ …

int a[50],n;

fun(n, &a[9]);

…}

A. void fun(int m, int x[]);

B. void fun(int s, int h[41]);

C. void fun(int p, int *s);

D. void fun(int n, int a);

二、程序填空(每空2.5分,共20分)

1. 下面程序的功能是将一字符串中的小写英文字母全部改成大写形式,然后输出。请在横线上填上适当的程序代码,使它能输出正确的结果

#include

void main ()

{ int i=0;

char str[80];

scanf("%s",str);

while( ①)

{ if( ②) str[i]=str[i]-32;

}

printf("%s\n",str);

}

2. 以下程序的功能是计算1!+2!+3!+…20!的值,请填空

#include

long fun(int t)

{ long a=1;

int n;

for( n=1; ④n++) ⑤

return a; }

void main ()

{

int n;

long sum=0,s;

for(n=1;n<=20;n++)

{ s=fun(n); ⑥}

printf("sum=%ld\n",sum);

}

3. 以下程序的功能是用“辗转相除法”求两个正整数的最大公约数,请填空#include

void main()

{ int r,a,b;

scanf("%d%d",&a,&b);

if(a

{ ⑦}

r=a%b;

while(r!=0)

{ a=b;b=r; ⑧}

printf("%d\n",b);

}

三、分析程序题(每空4分,共20分)

1. 以下程序运行后的输出结果是①

#include

void main ()

{ int t;

for(t=1; t<=100; t++)

{ printf("%d ",t); if(t%2==1 && t%5==3) break; } }

2. 以下程序的功能是②

#include

void main()

{ int n,s=0;

scanf("%d",&n);

while(n)

{ s++;

n=n/10;

}

printf("%d",s);

}

3. 以下程序运行后,若输入5 5<回车>,则程序的输出结果是③#include

void main()

{ int a,b;

scanf("%d%d",&a,&b);

if (a>6)

if(a<10) a++;

else a--;

if (b>6)

{ if(b<10) b++; }

else b--;

printf("a=%d,b=%d\n",a,b);

}

4. 以下程序运行后的输出结果是④

#include

void main()

{ int a[10]={1,2,3,4,5,6,7,8,9,10};

int i,*p,s=0;

p=&a[0];

for(i=0;i<10;i++)

if((*(p+i))%3==0)

s=s+*(p+i);

printf("%d\n",s);

}

5. 以下程序运行后的输出结果是⑤

#include

void main()

{ int a[5]={1},i;

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

a[i]=2*i;

f or(i=0;i<5;i++)

printf("%d ",a[i]);

}

四、程序设计(共20分)

1. 请编写程序,输出1~1000之间能被11整除且个位数为5的所有整数,要求每个输出值之间有空格,输出结果后光标显示在下一行。

2. 利用递归函数计算Fibonacci数列的第n个数。要求设计递归函数,在主函数main()中输入数据n,然后调用fib()函数求得第n个Fibonacci数,并输出结果。fib(n)的递归公式如下:

一、单项选择题(每小题2分,共40分)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

B C B A A C D C C B D C A B A

16 17 18 19 20

A A A C D

二、程序填空(每空2.5分,共20分)

1、①str[i]!=’\0’ 、②str[i]>='a'&&str[i]<='z' 、③i++;

2、④n<=t; 、⑤a=a*n; 、⑥sum=sum+s;

3、⑦r=a; a=b; b=r; 、⑧r=a%b;

三、分析程序题(每空4分,共20分)

① 1 2 3 、②统计一个正整数的位数、

③a=5,b=4 、④18 、⑤ 1 2 0 6 0

四、程序设计(共20分)

1. 请编写程序,输出1~1000之间能被11整除且个位数为5的所有整数,要求每个输出值之间有空格,输出结果后光标显示在下一行

#include ----------------------- 0.5分

void main () ----------------------- 0.5分

{ int a; ------------------------- 1分

for(a=1;a<=1000;a++) ------------------------- 2分

if(a%11==0 &&a%10==5) ------------------------- 2分

printf("%d ",a); ------------------------- 1分

printf("\n"); ------------------------- 1分

}

2. 利用递归函数计算Fibonacci数列的第n个数。要求设计递归函数,在主函数main()中输入数据n,然后调用fib()函数求得第n个Fibonacci数,并输出结果。fib(n)的递归公式如下:

#include ----------------------0.5分

void main() ---------------------- 0.5分

{ long fib(int); ----------------------- 1分int n; ----------------------- 1分

printf("n="); ----------------------0.5分

scanf("%d",&n); ----------------------- 1分

printf("Fibonacci(%d): %ld\n",n,fib(n)); ----------------------- 2分

}

long fib(int n) /* 定义求Fibonacci数的函数*/ ----------------------- 1分{

if(n==1||n==2) ----------------------- 1分return(1); ----------------------- 1分else ----------------------- 0.5分return(fib(n-1)+fib(n-2)); ----------------------- 2分}

相关文档