c语言题目及答案

  • 格式:doc
  • 大小:464.50 KB
  • 文档页数:16

考试题型

一、单项选择题(30分)

二、填空题 (20分)

三、阅读程序写结果(20分)

四、编程序题(30)

复习题一

一、 选择题

1.下列说法中正确的是 。

A.C语言程序由主函数和0个或多个函数组成

B.C语言程序由主程序和子程序组成

C.C语言程序由子程序组成

D.C语言程序由过程组成

2.执行语句“x=(a=3,b=a--)”后,x,a,b的值依次为 。

A.3,3,2 B.3,2,2 C.3,2,3 D.2,3,2

3.设有int i=010,j=10;则printf("%d,%d\n",++i,j--); 的输出的是 。

A.11,10 B.9,10 C.010,9 D.10,9

4.设a、b为字符型变量,执行scanf("a=%c,b=%c",&a,&b); 后使a为'A', b为'B',从键盘上的正确输入是 。

A.'A' 'B' B.'A','B' C.A=A,B=B D.a=A,b=B

5.已知int x=12, y=3;执行下述程序后,变量x的值是____。

do{ x/=y--;}while(x>y);

A.1 B.2 C.3 D.程序运行有错误

6.C语言中while和do-while循环的主要区别是 。

A.do-while的循环体至少无条件执行一次

B.while的循环控制条件比do-while的循环控制条件严格

C.do-while允许从外部转到循环体内

D.do-while的循环体不能是复合语句

7.设x和y均为int型变量,则执行下面的循环后,y的值为 。

for (y=1,x=1;y<=50;y++) {

if (x>=10 ) break;

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

x - =3;

}

A.2 B.4 C.6 D.8

8.以下正确的说法是____。

A.用户若需调用标准函数,调用前必须重新定义

B.用户可以重新定义标准库函数,若如此,该函数将失去原有含义

C.系统根本不允许用户重新定义标准函数

D.用户若需要调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调

9.若调用一个函数,且此函数中没有return语句,则关于该函数正确的说法是__ _。

A. 没有返回值

B. 能返回若干个系统默认值 C. 能返回一个用户所希望的函数值

D. 返回一个不确定的值

10.已知函数定义如下:

float fun1(int x,int y)

{ float z;

z=(float)x/y;

return(z);

}

主调函数中有int a=1,b=0;可以正确调用此函数的语句是____。

A.printf("%f",fun1(a,b)); B.printf("%f",fun1(&a,&b));

C.printf("%f",fun1(*a,*b)); D.printf("%f",fun1(b,a));

11.宏定义:#define PI 31.14159中,宏名PI代替______。

A.单精度 B.双精度 C.常量 D.字符串

12.若有以下数组说明,则数值最小和最大的元素下标分别是 。

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

A.1,12 B.0,11 C.1,11 D.0,12

13.以下合法的数组定义是 。

A.int a[3][ ]={0,1,2,3,4,5}; B.int a[ ][3] ={0,1,2,3,4};

C.int a[2][3]={0,1,2,3,4,5,6}; D.int a[2][3]={0,1,2,3,4,5,};

14.函数调用:strcat(strcpy (str1,str2),str3); 的功能是 。

A.将字符串str1复制到字符串str2中后再连接到字符串str3 之后。

B.将字符串str1连接到字符串str2之后再复制到字符串str3 之后。

C.将字符串str2复制到字符串str1中后再将字符串str3 连接到字符串str1之后。

D.将字符串str2连接到字符串str1之后再将字符串str1 复制到字符串str3中。

15.设有二维数组定义如下,则不正确的数组元素引用是 。

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

A.a[2][3] B.a[a[0][0]][1] C.a[7] D.a[2][‘c’-‘a’]

16.若用数组名作为函数调用时的实参,则实际上传递给形参的是 。

A.数组首地址 B.数组的第一个元素值

C.数组中全部元素的值 D.数组元素的个数

17.以下对指针变量进行操作的语句,正确的选项是 。

A.int *p,*q; q=p; B.int a,*p,*q; q=&a; p=*q;

C.int a=b=0,*p; p=&a; b=*p; D.int a=20,*p,*q=&a; p=q;

18.若有以下定义和语句:

int s[4][5],(*ps)[5];ps=s;

则对s数组元素的正确引用形式是 。

A.ps+1 B.*(ps+3)

C.ps[0][2] D.*(ps+1)+3

19.当说明一个共用体变量时系统分配给它的存储容量是 。

A.共用体中最后一个成员所需的存储容量

B.共用体中第一个成员所需的存储容量

C.成员中占存储量最大者所需的存储容量

D.各成员所需存储容量的总和

20.有定义如下: struct student

{ int age;

char num[8];

} stu[3]={{20,"200401"},{21,"200402"},{10,"200403"}};

struct student *p=stu;

以下选项中引用结构体变量成员的表达式错误的是 。

A.(p++)->num B.p->num

C.(*p).num D.stu[3].age

二、填空题

1.设a=3,b=2,c=1,则a>b的值为 ,a>b>c的值为 。

2.若w, x, y, z, m均为int型变量,则执行下面程序段后的m值是 。

w= 1; x = 2; y= 3; z=4;

m=(w

m= (m

m=(m

3.下面程序的输出结果是____。

#include

main()

{ int a=1,b=0;

do {

switch(a)

{ case 1: b=1;break;

case 2: b=2;break;

default : b=0;

}

b=a+b;

}while(!b);

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

}

4.下面程序的输出结果是____。

#include

main()

{ int x,i;

for(i=1;i<=100;i++) {

x=i;

if(++x%2==0)

if(++x%3==0)

if(++x%7==0)

printf("%d ",x);

}

}

5.下面程序的输出结果是____。

#include int func(int a,int b)

{ int c;

c=a+b;

return(c);

}

void main()

{ int x=6,y=7,z=8,r;

r=func((x--,y++,x+y),z--);

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

}

6.下面程序的输出结果是____。

#include

void main()

{ int x=1;

void f1(),f2();

f1( );

f2(x);

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

}

void f1(void)

{ int x=3;

printf("%d ",x);

}

void f2(x)

int x;

{ printf("%d ",++x);

}

7.程序中有定义:

#define S(r) r/r

int a=4,b=3,area;

则表达式area=S(a+b)的值为_______。

三、程序完善题

1.以下程序的功能是计算分段函数y的值。请完善程序。

#include

void main()

{ int x,c,m;

float y;

scanf(“%d”,&x);

if( (1) ) c=-1; 4020205.020101010000xxxxxxy else c= (2) ;

switch( c)

{ case –1: y=0; break;

case 0: y=x; break;

case 1: y=10; break;

case 2:

case 3: y=-0.5*x+20; break;

default : y=-2;

}

if( (3) ) printf(“y=%f”, y);

else printf(“error\n”);

}

2.有以下程序段:

s=1.0;

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

s=s+1.0/(k*(k+1));

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

填空完成下述程序,使之与上述程序的功能完全相同。

s=0.0;

(1) ;

k=0;

do{

s=s+d;

(2) ;

d=1.0/(k*(k+1));

}while( (3) );

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

3.根据以下嵌套的if语句说给条件,填写switch语句,使它完成相同的功能。

(假设score的取值在1~100之间。)

if语句:

if(score<60) k=1;

else if(score<70) k=2;

else if(score<80) k=3;

else if(score<90) k=4;

else if(score<=100) k=5;

switch语句:

switch( (1) )

{ (2) : k=1; break;