C综合复习题

更新时间:2024-06-15 21:40:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

复习题

一、 单选题

1、一个C源程序至少应包括一个( C )。

A、功能函数 B、自定义函数 C、main函数 D、头文件 2、下面全不正确的字符常量是(C)。

A、A p_0 Do B、float la0 _A C、 b-a goto int D、_123 temp INT 3、执行以下语句后b的值是( B )A int a=5,b=6,w=1,x=2,y=3,z=4;

(a=w>x)&&(b=y>z); &&一边为0另一边不算,||一边为1另一边不算 A、6 B、0 C、1 D、4

4、若以下变量均是整型,且num=sum=7 ; 则计算表达式sum=num++,sum++,++num后sum的值为(B ) A、7 B、8 C、9 D、10

5、设a=10,b=4,执行以下赋值语句后,a的值为( A ) a%=b+1

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

6、当a=5,b=4,c=2时,表达式a>b !=c的值是( D ) A、5 B、4 C、2 D、1

7、条件“2

C、x<3||x>2&&x<-10 D、x<3&&x>2||x<-10 有交集用&&无交集用|| 8、以下程序的运行结果是( C ) main () {

int m=5 ;

if(m++>5)printf(“%d ”,m); else printf(“%d”,m--); }

A、4 B、5 C、6 D、7 9、以下程序的输出结果是( B ) A、main( ) {

int x=2,y=-1,z=2; if(x

printf(“%d”,z); }

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

10、以下对二维数组a的正确说明是( C ) A、int a[3][] B、float a(3,4) C、double a[1][3] D、float a(3)(4)

11、阅读以下程序,当输入数据的形式为:25,13,10,正确的输出结果为(main( )

{ int x,y,z;

scanf(“%d%d%d”,&x,&y,&z); printf(“x+y+z=%d\\n”,x+y+z); }

A、x+y+z=48 B、x+y+z=35 C、x+z=35 D、不确定值 12、以下错误的if语句是( B ) C

)。 CR=回车 D A) if(x>y); B) if (x==y) x+=y;

C) if (x!=y) scanf(“%d”,&x) ; else scanf(“%d”,&y) D) if (x

A) break语句不能用于循环语句和switch语句外的任何其它语句 B) 在switch语句中使用break语句或continue语句的作用相同

C) 在循环语句中使用continue语句是为了结束本次循环,而不是终止循环 D) 在循环语句中使用break语句是为了使流程跳出循环体,提前结束循环 14、执行”for(I=1;I++<4; ) ;”后,变量I的值为( A ) C

A)3 B) 4 C) 5 D) 不定

15、若int I=10; 执行下列程序后,变量I的正确结果是(B ) D 没有break,不跳出 switch(i) {case 9 : I+=1; case 10 : I+=1; case 11 : I+=1; default : I+=1; }

A) 10 B) 11 C) 12 D)13

16、C语言中while 与do-while语句的主要区别是( A ) A、do-while的循环体至少无条件执行一行; B、do-while允许从外部转到循环体内; C、do-while的循环体不能是复合语句;

D、while的循环控制条件比do-while的循环控制条件严格 17、下面程序运行的结果是( A )D main()

{int y=10;do{y--;}

while(--y);printf(“%d”,y--); }

A、-1 B、1 C、8 D、0

18、设j为int型变量,则下面for循环语句的执行结果是(B ) for(j=10;j>3;j--) {if(j%3)j--;

--j;--j;printf(“%d ”,j);}

A、6 3 B、7 4 C、6 2 D、7 3 19、以下建立函数的目的中,正确的说法是( B ) A、提高程序的执行效率 B、提高程序的可读性; C、减少程序的篇幅 D、减少程序文件所占内存

20、若调用一个函数,且此函数中没有return语句,则正确的说法是( A )D A、没有返回值 B、返回若干个系统默认值

C、能返回一个用户所希望的值 D、返回一个不确定的值 21.在C语言中,合法的字符常量是( D)

A)‘程序设计’ B)“程序设计” C) C D)‘\\\\’

22.表示图中坐标轴上阴影部分的正确表达式是( C ) -1 0 1 3 A) -1<=x && 1<=x||x<=3 B) (x<=-1)&&(1<=x||x<=3) C) x<=-1||x>=1&&x<=3 D) !(-13)

23.执行int x=2,y=3;后,表达式x=(y==3)的值是( A )B

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

x 24.在循环结构的循环体中执行break语句,其作用是( C ) A) 结束本次循环,进行下次循环

B) 继续执行break语句之后的循环体中各语句 C) 跳出该循环体,提前结束循环 D) 终止程序运行

25.以下程序运行结果是( B )A 有效长度,不加转义字符 main()

{char s[]=“\\’Address\\’” ; printf(%d\\n”, strlen(s)) ; }

A) 9 B) 10 C) 11 D) 12

26.以下程序运行结果是( A )C Y=Y+a[X+1] main()

{int a[]={2, 4, 6, 8, 10}, y=1, x; for(x=0;x<3;x++) y+=a[x+1]; printf(“%d\\n”, y); }

A) 17 B) 18 C) 19 D) 20

27.已定义char x[8]; int i;为了给x数组赋值,以下正确的语句是(A ) D不能给X赋值X【】也不能直接赋值

A) x[8]=”Turbo C”; B) x=”Turbo C”;

C) x[]=”Turbo C”; D) for(i=0;i<7;i++) x[i]=getchar(); 28.设int a[][4]={0, 0};则以下错误的描述是(. D ) A) 数组a的每个元素都可得到初值0 B) 二维数组a的第一维大小为1 C) 数组a的行数为1

D) 只有元素a[0][0]和a[0][1]可得到初值0,其余元素得不到初值0

29.以下程序运行结果是(. C ) fun3(int x)

{static int a=3; a+=x; return a; } main()

{int k=2, m=1, n; n=fun3(k); n=fun3(m);

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

A) 3 B) 4 C) 6 D) 9

30.设变量a是整型,f是单精度型,i是双精度型,则表达式10+′a′+i*f值的数据类型为(C ) A) int B) float C) double D) 不确定 31.以下不正确的描述是( D)

A) 在函数外部定义的变量是全局变量 B) 在函数内部定义的变量是局部变量 C) 函数的形参是局部变量

D) 局部变量不能与全局变量同名

32.为了避免在嵌套的条件语句 if --- else 中产生二义性,C语言规定:else子句总是与(.B )配对。 A) 缩排位置相同的if B) 其之前最近的if C) 其之后最近的if D) 同一行上的 if

33.以下程序段(C )

x = -1 ; do

{ x = x * x ; }

while ( !x ) ;

A)是死循环 B)循环执行两次 C)循环执行一次 D)有语法错误

34.下列各变量均为整型,选项中不正确的C语言赋值语句是( D )

A)i+=++i; B)i=j==k; C)i=j+=i; D)i=j+1=k; 35.以下正确的函数声明形式是(A )C

A)double fun (int x, int y ) B)double fun (int x ;int y) C)double fun (int x, int y); D)double fun (int x,y) ; 36.要使以下程序的输出结果为4,则a和b应满足的条件是( A )

main()

{int s,t,a,b;

scanf(“%d%d”,&a,&b); s=t=1;

if(a>0) s += 1; if(a>b) t= s + t;

else

if(a==b) t=5; else t=2*s;

printf(“%d\\n”,t); }

A)a>0并且a0并且a>b D)a<0并且a

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

if(i%5==0) continue; printf(“%d\\n”,i); break; } }

A)100 B)101 C)无限循环 D)无输出结果 38.下列程序段的运行结果是(B )

int i=1,a[]={1,5,10,9,13,7};

while(a[i]<=10) a[i++]+=2; a[i++]=a[i++]+2

for (i=0;i<6;i++) printf(“%d”,a[i]); A)2 7 12 11 13 9 B)1 7 12 11 13 7 C)1 7 12 11 13 9 D)1 7 12 9 13 7

39.以下语句把字符串“abcde”赋初值给字符数组,不正确的语句是( B )D

A)char s[]=“abcde”;

B)char s[]={’a’, ’b’,’c’,’d’,’e’,’\\0’};

C)char s[]={“abcde”}; D)char s[5]= “abcde”; 40.下面程序段的运行结果是( B )D

int a[2][3]={1,2,3},i,j; for(i=0;i<2;i++) for(j=0;j<3;j++)

{a[i][j]=a[i*j%2][j]+a[i][(i+j printf(“%d,”,a[i][j]); }

A) 2,4,6,2,0,8, B) 1,2,3,0,0,0, C) 1,2,3,2,0,6, D) 2,4,6,2,0,6,

41.下列哪项可以作为C语言中的用户定义字?( B ) A.@sina B.mean C.a+b D.int

42.C源程序的后缀名是?(A ) ~~编译后叫编译程序 A. .c B..obj C.exe D. .prj

43、表示图中坐标轴上阴影部分的正确表达式是( C )

A. -1<=x && 1<=x||x<=3 B.((x<=-1)&&x>=-4)&&(1<=x||x<=3) C.x<=-1&&x>=-4||x>=1&&x<=3 D.!(-13) 44.语言中用于结构化程序设计的三种基本结构是( A ) A 顺序结构、选择结构、循环结构 B if、switch、break C for、while、do-while D if、for、continue

45.下面程序段所表示的逻辑关系是(B ) if(a

A.当a=b且c!=d时,x=2 B.当a=b时,x=2 C. 当a

{ b=6;

printf(“%d”,b); }

printf(“a=%d”,a); }

运行结果为:____4__________________________________________________ 9.main( )

{ int i,max,a[10];

printf(\; for(i=0;i<10;i++) scanf(\; max=a[0];

for(i=1;i<10;i++) if (a[i]>max) max=a[i]; printf(\; }

该程序的功能是: 通过键盘输入10个数,求这10个数中的最大值

五、仔细阅读如下程序,按题意填写程序空缺

1、下面程序段是从键盘输入的字符中统计数字字符的个数,用换行符结束循环。

int n = 0 , c ; c = getchar ( ) ;

while ( )

{ if ( ) n + + ; c = getchar ( ) ; }

2、下面程序的功能是用do-while语句求1——1000之间满足“用3除余2,用5除余3,用7除余2”的数,且一行只打印5个数。 main()

{int i=1,j=0;

do{if( ){printf(“M”,i); j=j+1;

if( )printf(“\\n”);} i=i+1;}

while(i<1000);}

3、下面程序的功能是打印100以内个位数为6且能被3整除的所有数。 main() {int i,j;

for(i=0;( i<10 );i++) {j=i*10+6;

if( i%3!=0 )countinue; printf(“%d”,j);} }

4.以下程序的功能是:从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入,请填空。

main()

{ float x,amax,amin; scanf(“%f”,&x); amax=x; amin=x;

while(【1】X>0)

{ if (x>amax) amax=x; if(【2】x

scanf(“%f”,&x) 【3】 ; }

printf(“\\nmax=%f min=%f\\n”,amax,amin); }

5.Fibonacci数列中的头两个数是1和1,从第三个数开始,每个数等于前两个数之和。下述程序计算此数列的前20个数,且每行输出5个数,请填空。

#include void main()

{ int f,f1=1,f2=1; int i;

printf(“m,m”,f1,f2); for (i=3;i<=20;i++)

{ f= 【4】f1+f2 ; printf(“m”,f); if(【5】i%5==0)

printf(“\\n”);

f1=f2;

【6】f2=f ; } }

6.下面程序的功能是将两个字符串连接起来,请填空。

#include main()

{ char s1[80],s2[40]; int i=0,j=0;

printf(“\\nInput string1:”);

scanf(“%s”,s1);

printf(“Input string2:”); scanf(“%s”,s2); while(s1[i]!=‘\\0’)

i++;

while(s2[j]!=‘\\0’)

【7】s1[i++]=s2[i++] ; 【8】s1[i] =‘\\0’;

printf( 【9】”%s”,s1 ); }

7.计算1+1/2+1/4+?+1/50的值,并显示出来。 main()

{ int i=2;

float sum=1.0; while(i<=【10】50)

{ sum += 1.0/【11】i ;

i= 【12】i+2 ; }

printf(“sum=%f\\n”,sum); }

8.输入一个字符,如果它是一个大写字母,则把它变成小写字母;如果它是一个小写字母,则把它变成大写字母;其它字符不变。

main( )

{ char ch;

scanf (“ %c” , &ch );

if ( 【13】ch>’A’&&ch<=’Z’ )

ch = ch + 32 ; else

if ( ch > = ‘a’ && ch < = ‘ z ’)

【14】ch=ch-32 ;

printf ( “ %c” , ch );

}

9.以下程序是用来输入5个整数,并存放在数组中,找出最大数与最小数所在的下标位置,并把二者对调,然后输出调整后的5个数。

#include main()

{ int a[5],t,i,maxi,mini;

【15】for(i=0;i<5;i++) scanf(“%d”,&a[i]); mini=maxi= 【16】0 ; for(i=1;i<5;i++) {

if( 【17】a[i]a[maxi]) maxi=i;

}

printf(“最小数的位置是:%d\\n”,mini);

printf(“最大数的位置是:%d\\n”,maxi);

t=a[maxi];

【18】a[maxi]=a[mini] ; 【19】a[mini]=t ; printf(“调整后的数为:”); for(i=0;i<5;i++)

printf(“%d”,a[i]);

printf(“\\n”); }

10.下面程序将二维数组a的行和列元素互换后存到另一个二维数组b中,分别输出数组a、b。

main ( )

{ int a[2][3] = {{1,2,3},{4,5,6}}; int b[3][2] , i , j ; printf (“array a:\\n”);

for ( 【20】i=0;i<2;i++ )

{ for ( 【21】j=0;j<3;j++ ) { printf (“]” , a[i][j] ) ;

【22】b[j][i]=a[i][j] ; }

printf (“\\n”) ;

}

printf (“array b:\\n”) ;

for ( 【23】i=0;i<3;i++ )

{ for ( 【24】j=0;j<2;j++ ) printf (“]” ,b[i][j] ) ; 【25】 ; } }

六、编程题

1、从键盘输入一百分制成绩,要求输出成绩等级A、B、C、D、E。其中:90分以上为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E。

2.有三个整数a,b,c,由键盘录入它们的值,编写程序输出最大的数。

3.编程实现通过键盘输入6个整数存放到数组中,使用冒泡排序法对数组中这6个数按由小到大进行排序。 4.编程实现n的阶乘,n值由键盘输入。

5.编程实现1!+2!+??+10!,并输出结果。

1. main() 5.main()

{int a,I; { int sum,fac,i; printf(“input a number:”); sum=0; scanf(“%d”,&a); fac=1;

I=a/10; for(i=0;i<10;i++) switch(I) sum=sum+i; {case 9:printf(“A\\n”);break; fac=fac*i;

case 8:printf(“B\\n”);break; printf(“1!+2!+?.10!\\n”,fac); case 7:printf(“C\\n”);break; } case 6:printf(“D\\n”);break; default:printf(“E\\n”); }

2. main()

{ int a,b,c,max;

printf(“input three unmbers:”); scanf(“%d%d%d”,&a,&b,&c); if(a>b&&a>c)

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

本文来源:https://www.bwwdw.com/article/qr93.html

Top