文档库

最新最全的文档下载
当前位置:文档库 > C语言期末考试试卷(A卷含答案)

C语言期末考试试卷(A卷含答案)

桂林电子科技大学信息科技学院试卷

2011-2012 学年第 2 学期课号I04BT014

课程名称C语言程序设计(A卷;、闭卷)适用班级(或年级、专业)11级、全院

C语言期末考试试卷(A卷含答案)

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

1一个C语言程序是从 B 开始执行的。

A 程序中第一个函数

B 名为main的函数

C 包含文件(头文件)的第一个函数

D 程序中的第一个语句

2 设int型占2个字节,且int i=-3;,则语句printf("%u",i);的输出结果为 B 。

A -3

B 65533

C 65534

D 65535

3 请选出合法的C语言赋值语句 C 。

A a=b=58

B a=58,b=58

C i++;

D k=int(a+b);

4 下面程序的输出是 D 。

#include

void main()

{ int a=1,b=2;

a=a+b; b=a-b; a=a-b;

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

}

A 1,2

B 1,1

C 2,2

D 2,1

5 设a和b均为int型变量,则执行以下语句后的输出为 D 。

int a=30; int b=3; printf("%d\n",a+=(b%=2));

A 20

B 21

C 30

D 31

6 已知 int i=65;则putchar(i);printf("%d",i);printf("%c",i);的输出结果为 A 。

A A,65,A

B 65,65,A

C A,A,65

D A,A,A

7 以下程序的执行结果是 D 。

#include

void main()

{ int n=9;

while(n-->6) { n--; printf("%d",n); }

}

A 87

B 876

C 765

D 75

8 已知int y,a,i=1;,则语句printf("%d,%d",-i++,(y=a=3.6*3));的输出结果为 A 。

A -1,10

B -2,1.8

C 0,3

D 1,18

9 以下程序运行后的输出结果是 C 。

#include

void main()

{

int a=2,b=-2,c=1;

if(a

if(b<0) c=0;

else c++;

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

}

A 3

B 2

C 1

D 0

10 以下程序运行后的输出结果是 C 。

#include

void main()

{ int x=13,y=19,z=0;

switch (x/8)

{

case 1: z=z+1;

switch (y/21)

{ default : z=z+1;

case 0: z=z+1;break;

}

case 2: z=z+1;break;

}

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

}

A 1

B 2

C 3

D 4

11 以下程序的输出结果是 A 。

#include

void main()

{

int i=0,a=0;

while(i<10)

{ for(; ;)

if((i%5)==0) break;

else i--;

i+=11;

a+=i;

}

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

}

A 11

B 21

C 32

D 33

#include

void main()

{ int a, b;

for(a=1,b=1; a<=20; a=a+1)

{ if(b>=3) break;

if(b%3==1)

{ b=b+3; continue; }

}

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

}

A 1

B 2

C 10

D 20

13 以下程序执行后的输出结果是 A 。

#include

void main()

{

int x=1,y=1;

while(y<=3)

{ if(x>=5) break;

if(x%2==0){ x+=2; continue; }

x-=3; y++;

}

printf("%d,%d",x,y);

}

A 6,2

B 6,6

C 7,2

D 7,3

14 以下程序的输出结果是 C 。

#include

void main()

{ int i,k,a[5],p[3];

k=5;

for(i=0;i<5;i++) a[i]=i;

for(i=0;i<3;i++) p[i]=a[i*i];

for(i=0;i<3;i++) k+=p[i]*2;

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

}

A 13

B 14

C 15

D 16

15若运行以下程序时输入:1 3 5<回车>,则输出结果是 C 。

#include

void main()

{ int x[2][2]={0},i;

for(i=0;i<2;i++) scanf("%d",x[i]);

printf("%3d%3d%3d\n",x[0][0],x[0][1],x[1][0]);

}

A 1 0 0

B 2 0 0

C 1 0 3

D 1 0 5

#include

void reverse(int a[], int n)

{ int i, t;

for(i=0; i

{ t=a[i];

a[i]=a[n-1-i];

a[n-1-i]=t;

}

}

void main()

{

int b[6]={1,2,3,4,5,6}, i, s=0 ;

reverse (b, 4);

for(i=4; i<6; i++)

s+=b[i];

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

}

A 10

B 11

C 12

D 13

17 以下程序运行后的输出结果是 D 。

#include

void main()

{

char a[2][4];

strcpy(a,"you"); strcpy(a[1],"me");

a[0][3]='&';

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

}

A you

B you&

C me

D you&me

18 以下程序运行后的输出结果是 A 。

#include

long fun(int n)

{

long s;

if(n==1||n==2) s=2;

else s=n-fun(n-1);

return s;

}

void main()

{

printf("%ld\n",fun(3));

}

A 1

B 2

C 3

D 4

#include

void main()

{ int i, x[3][3]={9,8,7,6,5,4,3,2,1}, *p=&x[1][1];

for(i=0; i<4; i+=2) printf("%d ", p[i]);

}

A 5 1

B 5 2

C 5 3

D 9 7

20说明语句int *(*p)();的含义为 D 。

A. p是一个指向int型数组的指针

B. p是指针变量,它构成了指针数组

C. p是一个指向函数的指针,该函数的返回值是一个整型

D. p是一个指向函数的指针,该函数的返回值是一个指向整型的指针

二填空题(每题3分,共30分)

1 设x为int型变量,请写出描述“x是偶数”的表达式是 x%2==0 。

2 以下程序的输出结果是 -14 。

#include

void main()

{ char c;

c=0362;

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

}

3 若float x;以下程序段的输出结果是 5.169000

x=5.16894;

printf("%f\n",(int)(x*1000+0.5)/(float)1000);

4 下面的程序运行时从键盘上输入9876543210<回车>,程序的输出结果是a=98,b=76.0,c=54。

#include

void main()

{

int a;

float b,c;

scanf("%2d%2f%2f",&a,&b,&c);

printf("a=%d,b=%.1f,c=%.0f",a,b,c);

}

5 若输入字符串:abcde<回车>,则以下while循环体将执行 0 次。

while((ch=getchar())=='e') printf("*");

6 下列程序的输出结果是 5 。

#include

void main()

{

int s,i;

for(s=0,i=1;i<3;i++,s+=i);

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

}

7 若int类型变量占两个字节,定义int x[10]={0,2,4};,则数组x在内存中所占的字节数是 20 。

8 以下程序的输出结果是 abcbcc 。

#include

void main()

{ char ch[]="abc",x[3][4]; int i;

for(i=0;i<3;i++) strcpy(x[i],ch);

for(i=0;i<3;i++) printf("%s",&x[i][i]);

printf("\n");

}

9 运行下面程序,从键盘输入四个字符xyz#,其输出是 xyz##zyx 。

#include

void recursion()

{ char c;

c=getchar();

putchar(c);

if(c!='#') recursion();

putchar(c);

}

void main()

{ void recursion();

recursion();

}

10 以下程序的输出结果是 2 5 。

#include

void swap(int *a, int *b)

{ int *t ;

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

}

void main()

{ int i=2, j=5, *p=&i, *q=&j;

swap(p,q);

printf("%d %d\n", *p,*q)

}

三程序填空题(每空3分,共30分)

1 以下程序的功能是从键盘输入若干个学生的成绩,统计最高成绩和最低成绩,当输入为

负数时,结束输入。请填空使程序完整。

#include

void main()

{

float x,max,min;

scanf("%f",&x);

max=min= 【1】 ;

do{ if(x>max) max=x;

if(x

scanf("%f",&x);

} while( 【3】 );

printf("%f,%f",max,min);

}

2 以下程序,数组a中存放一个递增数列。输入一个整数,并将它插入到数组a中,使之

仍为一个递增数列。请填空。

#include

void main()

{

int a[20]={1,10,20,30,40,50,60,70,80,90},x,i,p;

scanf("%d",&x);

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

if(x

for(i=9;i>=p;i--) a[i+1]=a[i];

【5】 ;

for(i=0;i<=10;i++) printf("%5d\n",a[i]);

printf("\n");

}

3 以下程序的功能是:将任意十进制正整数转换成二进制数,请填空使程序完整。

#include"stdio.h"

int dtob(int n,int *p)

{

int m,i=0;

do

{ m=n%2;

【6】 ;

n=n/2;

i++;

}while(n!=0);

return i;

}

void main()

{ int n,j,a[20];

printf("Input the umber: \n");

scanf("%d",&n);

j=dtob(n,a);

for(;j>0;j--)

printf("%d", 【7】 );

}

4 下面程序的功能是将一个正整数字符串转换为一个整数,例如:“1234”转换为1234,

请填空。

#include

int chnum(char *p)

{ int num=0,k,len,j ;

len = strlen(p) ;

for ( ; 【8】; p++)

{ k=【9】; j=(--len) ;

while (【10】) k=k*10 ;

num = num + k ;

}

return (num);

}

void main()

{

int a;

char p[10];

gets(p);

a=chnum(p);

printf(“%d\n”,a);

}

2011-2012学年第2学期C 语言期末考试试卷(A 卷)答题纸

班级学号 姓名 成绩

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

C语言期末考试试卷(A卷含答案)

C语言期末考试试卷(A卷含答案)

C语言期末考试试卷(A卷含答案)

C语言期末考试试卷(A卷含答案)

C语言期末考试试卷(A卷含答案)

三 程序填空题(每空3分,共30分)

【1】x 【2】min=x 【3】x>=0 【4】break

【5】a[p]=x 或者a[i+1]=x 【6】*(p+i)=m 【7】a[j-1] 【8】*P 【9】*p -‘0’ 【10】j--

出卷人:桂林电子科技大学信息科技学院 吕元长