文档库

最新最全的文档下载
当前位置:文档库 > C语言综合练习(附答案)

C语言综合练习(附答案)

一、选择

1.在C语言中运算对象必须是整型的运算符是

A %

B !

C /

D *

2. 有以下程序

#include

main(){

int x;

scanf(“%d”,&x);

if(x<=3);

else if(x!=10)

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

}

程序运行时,输入的值在哪个范围才会有输出结果____________ 。

A)不等于10的整数 B)大于3且不等于10的整数

C) 大于3或等于10的整数 D)小于3的整数

3. 下列定义数组的语句中,正确的是__________。

A)int N=10;int x[N]; B)#define N 10

int x[N];

C) int x[0..10]; D) int x[];

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

#include

main()

{

int m=1,n=2,*p=&m,*q=&n,*r;

r=p;p=q;q=r;

printf(“%d,%d,%d,%d\n”,m,n,*p,*q);

}

A)1,2,1,2 B)1,2,2,1 C)2,1,2,1 D)2,1,1,2

5. C语句x*=y+2;还可以写成

A x=x*y+2;

B x=2+y*x;

C x=x*(y+2);

D x=y+2*x;

6. 以下程序运行后的输出结果是________________。

#include

main(){

int a=1,b=0;

if(!a) b++;

else if(a==0) if(a) b+=2;

else b+=3;

printf(“%d\n”,b)

}

A)0 B)1 C)2 D)3

7. 若要定义一个具有5个元素的整形数组,以下错误的定义语句是__________。

A)int a[5]={0}; B)int b[] = {0,0,0,0,0};

C) int c[2+3] ; D)int i=5,d[i];

8. 设有float x;则x是____变量。

A 整型 B实型

C 字符型

D 长型

9. 若有定义:float x=1.5;int a=1,b=3,c=2; 则正确的switch语句是___________。

A)switch(x)

{

case 1.0:printf(“*\n”);

case 2.0:printf(“**\”);

}

B)switch((int)x);

{

case 1:printf(“*\n”);

case 2:printf(“**\n”);

}

C) switch(a+b)

{

case 1:printf(“*\n”);

case 2+1:printf(“**\n”);

}

D) switch(a+b)

{

case c:printf(“*\n”);

case 2:printf(“**\n”);

}

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

#include

main()

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

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

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

}

A) 6 B)10 C)11 D)15

11. 若有float x,y;则以下不合法的语句是

A ++x;

B y=(x%2)/10;

C x*=y+8;

D x=y=10;

12. 以下程序运行后的输出结果是______________。

#include

main(){

int a=1,b=2;

while(a<6){b+=a;a+=2;b%=10;}

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

}

A)5,11 B)7,1 C)7,11 D)6,1

13. 下面是有关C语言字符数组的描述,其中错误的是__________。

A)不可以用赋值语句给字符数组名赋字符串

B)可以用输入语句把字符串整体输入给字符数组

C)字符数组中的内容不一定是字符串

D)字符数组只能存放字符串

14. turbo c中int类型变量所占字节数是

A 1

B 2

C 3

D 4

15. 以下程序运行后的输出结果是__________。

#include

main(){

int y=10;

while(y--);

printf(“y=%d\n”,y);

}

A)y=0 B)y=-1 C)y=1 D)while构成无限循环

16. 以下程序运行后的输出结果是________________。

#include

void fun(int p)

{ int d=2;

p=d++;printf(“%d”,p);

}

main()

{ int a=1;

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

}

A)32 B)12 C)21 D)22

17. 正确的字符串常量是

A“ABCD”B{ABCD}

C ‘ABCD’

D ABCD

18. 设变量已正确定义,以下不能统计出一行中输入字符个数(不包含回车符)的程序段是________。

A)n=0;while((ch=getchar())!=”\n”)n++;

B)n=0;while(getchar()!=”\n”)n++;

C)for(n=0;getchar()!=”\n”;n++);

D)n=0;for(ch=getchar()!=”\n”;n++);

19. 下面的函数调用语句中func函数的实参个数是_____________。

func(f2(v1,v2),(v3,v4,v5),(v6,max(v7,v8)));

A)3 B)4 C) 5 D)8

20. 表达式(int)2.5的值是

A 2

B 3

C 0

D 2.5

21. 以下程序段中的变量已正确定义,则程序段的输出结果是__________。

for(i=0;i<4;i++,i++)

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

printf(“*”);

A)* * * * * * B)* * * * C)* * D)*

22. 以下程序运行后的结果是___________。

#include

int fun()

{ static int x=1;

x+=1;return x;

}

main()

{

int i,s=1;

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

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

}

A)11 B)21 C)6 D)120

23. 逗号表达式"(a=3*5,a*4),a+15"的值是

A 15

B 60

C 30

D 不确定

24. 以下叙述中正确的是______________。

A) break语句只能用于switch语句体中

B)continue语句的作用是:使程序的执行流程跳出包含它的所有循环

C)break语句只能用在循环体内和switch语句体内

D)在循环体内使用break语句和continue语句的作用相同

25. 若函数的形参为一维数组,则下列说法中正确的是

A 调用函数时的对应实参必为数组名。

B形参数组可以不指定大小。

C 形参数组的元素个数必须等于实参数组的元素个数。

D 形参数组的元素个数必须多于实参数组的元素个数。

26. 以下叙述中正确的是

A 输入项可以是一个实型常量,如: scanf("%f",3.5);

B 只有格式控制,没有输入项,也能正确输入数据到内存,例如: scanf("a=%d ,b=%d")''

C 当输入一个实型数据时,格式控制部分可以规定小数点后的位数,例如:

scanf("%4.2f",&d);

D当输入数据时,必须指明变量地址,例如: scanf("%f",&f);

27. 有程序段:

int n=1;

do{ n=++n*5;}

while(n=10);

则此循环的循环体( )

A: 执行1次 B: 执行2次 C: 不执行D:执行无限次

28. 在函数的说明和定义时若没有指出函数的类型,则

A系统自动地认为函数的类型为整型。

B 系统自动地认为函数的类型为字符型。

C 系统自动地认为函数的类型为实型。

D 编译时会出错。

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

int u=010,v=0x10,w=10;

printf("%d,%d,%d\n",u,v,w);

则输出结果是:

A 8,16,10

B 10,10,10

C 8,8,10

D 8,10,10

30. 以下程序的输出结果是()

main()

{ int i;

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

{

if(i%2) printf(“*”);

else continue;

printf(“#”);

}

printf(“$”);

}

A: *#*#*#$ B: *#*#$ C: #*#*#*$D: #*#*$

二、填空题

1. C语言源程序文件的后缀是_.C___经过编译后生成文件的后缀是_.Obj___,经过链接后生成文件的后缀是.EXE____.

2.函数直接或者间接地自己调用自己,被称为函数的递归调用。

3. 以下程序的功能是:将输入的正整数按逆序输出。例如:若输入135,则输出531.请填空。

#include

main()

{ int n,s;

printf(“Enter a number:”);scanf(“%d”,&n);

printf(“Output:”);

do{ s=n%10;printf(“%d”,s);_ n/=10___;

}while(n!=0);

printf(“\n”);

}

4.在函数内部定义的只在本函数内有效的变量叫局部变量,在函数以外定义的

变量叫全局变量。

5. 以下程序统计从终端输入的字符中大写字母的个数,num[0]中统计字母A的个数,num[1]中统计字母B的个数,其他以此类推。用#号结束输入,请填空。 #include

#include

main()

{

int num[26]={0},i;char c;

while(_c = getchar()_!=’#’)

if(isupper(c)) num[c-‘A’]+=__1__;

for(i=0;i<26;i++) printf(“%c:%d\n”,i+’A’,num[i]); }

三、读程序写结果

1.下面程序的运行结果是(a+b=9)//与3类似,但main函数未声明plus函数,错误int a=5; int b=7;

main()

{ int a=4,b=5,c;

c=plus(a,b);

printf(“a+b=%d”,c);

}

plus(int x,int y)

{ int z;

z=x+y;

return(z);

}

2.以下程序的输出结果是(9 8 7)

main()

{ int n=10;

while(n>7)

{n--;

printf(“%d”,n);

} }

3. 以下程序的输出结果是(a+b=9)

#include

int a=5;

int b=7;

int plus(int x,int y)

{

int z;

z=x+y;

return(z);

}

void main()

{

int a=4,b=5,c;

c=plus(a,b);

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

}

4. 以下程序的输出结果是(1,2,0)

main()

{

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

while(a

printf(“%d,%d,%d”,a,b,c);

}

5. #include

main()

{ int i,j,sum;

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

{

sum=0;

for(j=1;j<=i;j++)sum+=i*j;

}

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

}

四、编程题

1. 编一个程序。求出200-300之间的某些数,这些数应满足条件:它们个位、十位、百位之积为42、之和为12。

#include “stdio.h”

main( )

{ int i,j,k;

i=2;

for(j=0;j<=9;j++)

{ k=0;

while(k<=9)

{ if (i*j*k==42&&i+j+k==12)

printf(“i=%d,j=%d,k=%d.\n”,i,j,k);

k++;

}

}

}

2. 编程判断输入的正整数是否既是5又是7的整倍数。若是,输出yes,否则输出no。

#include

main()

{

int x;

printf(“please input an integar:”);

scanf("%d",&x);

if(x%5==0&&x%7==0) printf("yes\n");

else printf("no\n");

}

3. 从键盘输入5 学生的成绩至数组中,将最低分的成绩输出。

#include “stdio.h”

main()

{int i;

float a[5],min;

printf(“Please input score:\n”);

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

scanf(“%f”,&a[i]);

min=a[0];

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

if(a[i]

printf(“The min score is%f”,min);

}

2.已知字母A的ASCII码为65。以下程序运行后的输出结果是__67 G__ . main()

{ char a, b;

a='A'+'5'-'3'; b=a+'6'-'2' ;

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