重庆理工大学-C语言程序设计基础教程 - 习题答案(纪纲 - 金艳) 下载本文

B) for循环中设置if (条件)continue,当条件成立时中止本层循环。 C) for循环中设置if (条件)break,当条件成立时中止本层循环。 D) for循环中设置if (条件) continue,当条件成立时暂停程序执行。 5.2.22 下面关于for循环的正确描述是(D )。

A) for循环只能用于循环次数已经确定的情况。 B) for循环是先执行循环体语句,后判断表达式。 C) 在for循环中,不能用break语句跳出循环体。 D) for循环的循环体语句中,可以包含多条语句。

5.2.23 循环语句for(i=0,x=0; !x&&i<=5; i++);的执行次数为(B)。

A) 5次 B) 6次 C) 1次 D) 无限 5.2.24 以下程序段的输出结果是( D )。

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); } A) 39 81 B) 42 84 C) 26 68 D) 28 70 5.2.25 以下描述正确的是( C )。

A) goto语句只能用于退出多层循环 B) switch语句不能出现continue语句 C) 只能用continue语句来终止本次循环 D) 在循环中break语句不能独立出现 5.2.26 以下不是无限循环的语句是( A )

A) for(y=0,x=1;x>++y; x=i++) i=x; B) for(; ; x++=i);

C) while(1) { x++; }

D) for(i=10; ; i- -) sum+=i;

5.2.27 下面程序段的输出结果是( D )。

int i,sum;

for(i=1;i<=10;i++) sum+=sum printf(“%d\\n”, i);

A) 10 B) 9 C) 15 D) 11 5.2.28 下面程序段的运行结果是(D )。

for(x=3; x<6; x++) printf((x%2)?(“**%d”):(“##%d\\n”),x);

A) **3 B)##3 C) ##3 D) **3##4 ##4 **4 **4##5 **5 **5 ##5

5.2.29 执行语句for(i=1; i++<4; );后变量i的值是( C )。

A) 3 B) 4 C) 5 D) 不定 5.2.30 下面程序段运行结果是(C)。

int i,j,k;

for(i=2;i<6;i++,i++) { k=1;

for(j=i; j<6; j++) k+=j; } printf(“%d\\n”,k);

A) 4 B) 5 C) 10 D) 7 5.2.31 下面程序段( D )。

for( t=1; t<=100; t++) { scanf(“%d”, &x); If(x<0) continue; printf(”=”,t); }

A) 当x<0时整个循环结束 B) x>=0时什么也不执行

C) printf函数永远也不执行 D) 最多允许输出100个非负数 5.2.32 下面程序段运行结果是( A)。

int i,j,a=0;

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

{ for(j=0; j<4; j++) {if(j%2) break; a++;} a++; } printf(“%d\\n”,a);

A) 4 B) 5 C) 6 D) 7 5.2.33 下面程序的运行结果是( B)。

#include void main() { int i,j,x=0;

for(i=0;i<2;i++) { x++;

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

{ if(j%2) continue; x++; } x++; }

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

A) x=4 B) x=8 C) x=6 D) x=12 5.2.34 下面程序段运行结果是( A)。

#include void main() { int i;

for(i=1; i<=5; i++) { if(i%2) printf(”*”); else continue; printf(“#”); }

printf(“$\\n”);

}

A) *#*#*#$ B) #*#*#*$ C) *#*#$ D) #*#*$

5.2.35 有一堆零件(100~200之间),如果分成4个零件一组的若干组,则多2

个零件;若分成7个零件一组,则多3个零件;若分9个零件一组,则多5个零件。下面程序是求这堆零件的总数,请选择填空。 #include void main( ) { int i;

for(i=100; i<201; i++) if((i-2)%4==0)

if(!(i-3)%7) if( D )

printf(”%d”, i); }

A) i%9=5 B) i%9!=5 C) (i-5)%9!=0 D) i%9==5

5.3编程题

5.3.1 输入一行字符,分别统计出其中字母、数字和其它字符的个数。 #include void main() { char ch; int i,j,k; i=j=k=0;

while( (ch=getchar() )!=‘\\0’)

{ if(ch>’a’&&ch<‘z’||ch>’A’&&ch<‘Z’ ) i++; //统计字母

else if(ch>’0’&&ch<‘9’) j++; //统计数字

else k++; //统计其它 }

printf(“字母个数:%d,数字个数:%d,其他字符:%d”,i, j, k);

5.3.2 求100~200之间不能被3整除也不能被7整除的数。 #include void mian() { int i;

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

if (i%3==0&&i%7==0) printf(“]”,i); } } 5.3.3 求 1?11111??????23499100。

#include

main() {

int i; float s=0,k=1; for (i=1;i<=100;i++) { s=s+ k / i ; k = -k ; }

printf(\ } 5.3.4 求

111????1?22?3n?(n?1),直到某一项小于0.001时为止。

void main()

{

int i ;

float t=0.5,s=0,i=1; while (t>=0.001) { s=s+t; i++;

t=1/(i*(i+1)); }

printf(\ }

5.3.5 用迭代法求

X?a。迭代公式为:

Xn?1?1?a?Xn??2?Xn????,要求迭代精度满足

。|Xn?1?Xn|?0.00001提示:a

#include

Void main( ) {

由键盘输入,x1=a/2.

float x1,x2,a,k; scanf(\

x1=a/2; x2=(x1+a/x1)/2; while(fabs(x1-x2)>=0.00001) { x1=x2;

x2=(x1+a/x1)/2; } printf(\ %f\}

5.3.6 假设x,y是整数,编写程序求xy的最后3位数,要求x,y从键盘输入。 #include void main()

{ int x. y, i, b, s, g, san; long m=1;

scanf(“%d,%d”,&x, &y); for(i=1; i<=y; i++) m=m*x

san=m00; //求出最后3位数

b=san/100; //求出最后3位数的百位 s=san0/10; //求出最后3位数的十位 g=san; //求出最后3位数的个位 printf(“%d,%d,%d”,b,s,g); }

5.3.7 从键盘上输入10个整数,求其中的最大值和最小值。 #include void main()

{ int x,i,max,min; scanf(“%d”,&x); min=max=x;

for (i=2;i<=10;i=i++) {

scanf(“%d”,&x);

if(xmax) max=x; }

printf(“%d,%d”,max,min); }

5.3.8 (1)判断一个数是否为素数。(2)输出3-100之间的所有素数。 (1)判断m素数 #include void main() {int i,k,m;

scanf(“%d”,&m); k=sqrt(m);