C语言全部章节习题集及答案 联系客服

发布时间 : 星期二 文章C语言全部章节习题集及答案更新完毕开始阅读2b905885bed5b9f3f80f1c0a

} 1

四、选做题

1、输入 3 个整数,按从大到小的顺序输出。

1. main()

{ int a,b,c,t;

scanf(“%d%d%d”,&a,&b,&c); if(a

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

2、请将以下语句改写成switch语句。 if((s>0)&&(s<=10))

if((s>=3)&&(s<=6)) x=2; else if((s>1)||(s>8)) x=3; else x=1; else x=0;

2. switch((s>0)&&(s<=10))

{case 1: switch ((s>=3)&&(s<=6)) { case 1: x=2; break;

case 0: switch (s>1)||(s>8)) { case 1: x=3; break; case 0: x=1; break; } } break; case 0: x=0; break; }

6 循环控制一、单项选择题

1、for(i=1;i<9;i+=1);该循环共执行了( B )次。 A. 7 B. 8 C. 9 D. 10

- 9 -

2、int a=2;while(a=0) a--;该循环共执行了( A )次。 A. 0 B. 1 C. 2 D. 3

3、执行完循环 for(i=1;i<100;i++);后,i 的值为( A )。 A. 99 B. 100 C. 101 D. 102 4、以下 for语句中,书写错误的是 C 。

A. for(i=1;i<5;i++) B. i=1;for(;i<5;i++) C. for(i=1;i<5;i++); D. for(i=1;i<5;) i++; 5、( A )语句,在循环条件初次判断为假,还会执行一次循环体。 A. for B. while C. do-while D. 以上都不是

6、有以下程序段 int i=5; do{ if(i%3==1) if(i%5==2) {printf(\break; } i++; }while(i!=0); 其运行结果是( B ) A.*2*6 B. *7 C.*5 D. *3*5

7、i、j已定义为 int 类型,则以下程序段中内循环体的执行次数是( A ) 。 for(i=5;i;i--) for(j=0;j<4;j++){?} A. 20 B. 24 C. 25 D. 30

8、以下不构成无限循环的语句或语句组是( C )。

A.n=10; while(n);{n--;} B.n=0; while(1){n++;} C.n=0; do{++n;}while(n<=0); D.for(n=0,i=1;;i++)n+=i;

9、有以下程序段int y=9; for(y>0;y--) if(y%3==0) printf(\其运行结果是( D )。

A. 875421 B.963 C.852 D. 741 10、有以下程序段int i,j;for(i=3;i>=1;i--){for(j=1;j<=2;j++) printf(\其运行结果是( D )。

A.2 3 4 B.4 3 2 C.2 3 D.4 5 3 4 5 5 4 3 3 4 3 4 4 5 2 3

二、判断题

( ? )1、do {??} while(0); 程序块至少会执行一次 ( ? )2、语句 for(i=0;i=10;i++) {??}; 至多循环10次 ( ? )3、for( ; ; )表示无限循环。

( ? )4、下面的循环不能正常结束: for (s=0,i=1; i<=10; ) { s=s+i; i++; } ( ? )5、continue语句是终止整个循环的执行。

( ? )6、对for(表达式1;;表达式3;)可理解为for(表达式1;1;表达式3;)。 ( ? )7、下列程序段执行循环二次 x=-1; do {x=x*x;}while(!x); ( ? )8、下列程序段能计算s=10!的值 i=1;s=1; do {s=s*i;i++;} while(i<=10); ( ? )9、下列程序段将输出3和0 , int x=3; do{printf(“%d\\n”,x-=2);}while(!--x));

- 10 -

三、程序填空题

1.有1020个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,问几天后卖完? main( )

{ int day,x1,x2; day=0; x1=1020;

while( x1!=0 )

{ x2= x1/2+2 ; x1= x1-x2 ; day++; } printf(\}

2.输入若干个字符,分别统计数字字符的个数、英文字母的个数,当输入换行符时输出统计结果,运行结束。 #include void main( ) { int s1=0,s2=0;

char ch;

while(( ch=getchar() )!='\\n') { if(ch>='0'&&ch<='9') s1++;

if(ch>='a'&&ch<='z' || ch>=’A’&&ch<=’Z ) s2++; } printf(“%d,%d”,s1,s2); }

3.下面程序的功能是计算1-3+5-7+??-99+101的值,请填空。 #include main( )

{ int i=1,t=1,s=0;

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

{ s=s+t*i ; t=-t ;} printf(“%d\\n”,s); }

四、阅读下列程序,写出程序运行的输出结果

1.void main( ) { int y=9;

for( ;y>0; y--)

if(y%3==0) { printf(\

- 11 -

}

程序运行后输出结果为 852 2. main( ) { int n1,n2; scanf(\while(n2!=0)

{ n1=n2; n2=n2/10; printf(\}

程序运行后,如果从键盘上输入1298;则输出结果为 8921 3. main ( ) {int s,i;

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

程序运行后输出结果为 5 4. #include void main( )

{ int s=1,t=1,a,n;

scanf(\ for(int i=1;i

s*=a; printf(\}

程序运行后,如果从键盘上输入2,4;则输出结果为 SUM=2468

五、程序改错

1、以下程序是显示[200,300]所有能被7整除的数,每行显示5个数,此程序有 5处错。 1.main()

{ int i=200,n=0; /*n用来记录每行已打印数的个数*/ while(i<=300) {if(i%7==0) { //break;

printf(\

if(n==5) /*满5个换行*/ { printf(\ }

i++; } }

2、以下程序是求 1!+2!+3!+4!+5!+6!+7!的值,其中有 3 处错误。

- 12 -