c语言第六章 循环结构程序设计(习题册答案) 下载本文

内容发布更新时间 : 2024/11/15 21:25:26星期一 下面是文章的全部内容请认真阅读。

}

(1) A)n B)(n)*(n) C)n/10 D)(n/10)*(n/10) (2) A)n/1000 B)n/100 C)n/10 D)n 二、读懂程序,并按照程序的功能将程序补充完整

1、下面程序的功能是用“辗转想除法”求两个正整数的最大公约数。请填空。 #include main() { int r,m,n; scanf(“%d %d”,&m,&n); if(m

2、下面程序的功能是用do-while语句求1至1000之间满足“用3除余2;用5除余3;

用7除余2”的数,且一行只打印五个数。请填空。 #include main() { int i=1,j=0; do{ if( i%3==2&&i%5==3&&i%7==2 ) { printf(“M”,i); j=j+1; if( j%5==0 ) printf(“\\n”); } i=i+1; }while(i<1000); }

3、等差数列的第一项a=2,公差d=3,下面程序的功能是在前n项和中,输出能被4整除

的所有的和。请填空。 #include main() { int a,d,sum; a=2; d=3; sum=0; do{ sum+=a; a+=d ; if( sum%4==0 ) printf(“%d\\n”,sum); }while(sum<200); }

第2讲

基础练习(A)

一、 选择题

1、下面有关for循环的正确描述是 (D )。

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

D) for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来 2、对for(表达式1;;表达式3)可理解为( B )。

A) for(表达式1;0;表达式3) B) for(表达式1;1;表达式3) C)for(表达式1; 表达式1;表达式3) D)for(表达式1; 表达式3;表达式3) 3、下列说法中正确的是(C )。

A) break 用在switch语句中,而continue 用在循环语句中。

B) break 用在循环语句中,而continue用在switch语句中。 C) break 能结束循环,而continue只能结束本次循环。 D) continue能结束循环,而break只能结束本次循环。 4、以下正确的描述是(B )。

A) continue语句的作用是结束整个循环的执行

B) 只能在循环体内和switch语句体内使用break语句 C) 在循环体内使用break语句或continue语句的作用相同 D) 从多层循环嵌套中退出时,只能使用goto语句 5、若i为整型变量,则以下循环执行次数是(B )。

for(i=2;i==0;) printf(“%d”,i--); A)无限次 B)0次 C)1次 D)2次 6、以下for循环的执行次数是( C )。

for(x=0,y=0;(y=123)&&(x<4);x++) A)是无限循环 B)循环次数不定 C)执行4次 D)执行3次 7、以下不是无限循环的语句为( 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;

8、执行语句for(i=1;i++<4;);后变量i的值是( C )。 A)3 B)4 C)5 D)不定 9、下面程序段( 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个非负整数 10、下面程序段( C )。 x=3; do{ y=x--; if(!y) { printf(“x”); continue; } printf(“#”); }while(1<=x<=2); A)将输出## B)将输出##* C)是死循环 D)含有不合法的控制表达式 二、写出下列程序的运行结果

1、 #include *#*#*#$ main() { int i; for(i=1;i<=5;i++) { if(i%2) printf(“*”);

else continue; printf(“#”); } printf(“$\\n”); }

2、 #include ####

###* ##** #*** main() { int i,j; for(i=4;i>=1;i--) { for(j=1;j<=i;j++) putchar(?#?); for(j=1;j<=4-i;j++) putchar(?*?); putchar(?\\n?); } }

3、 #include 2,3 main() { int i,k=0; for(i=1;;i++) { k++; while(k

loop: printf(“%d,%d”,i,k); } 三、编程:

1、求1-3+5-7+ ?? -99+101的值。 解:main() { int i,t=1,s=0;

for(i=1;i<=101;i+=2) { t=t*i; s=s+t; t=t>0?-1:1; }

printf(\; }

能力提高(B)

一、写出下列程序的运行结果

1、 #include x=8 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); }

2、 #include i=6,k=4 main() { int i,j,k=19; while(i=k-1) { k-=3; if(k%5==0) { i++; continue; } else if(k<5) break; i++; } printf(“i=%d,k=%d\\n”,i,k); }

二、根据程序的功能将程序补充完整

下面程序的功能是求1至1000之间满足“用3除余2;用5除余3;用7除余2”的数,且一行只打印5个数。 #include main() { int i,j=0; for ( i=1;i<1000;i++ ) if(i%3==2 && i%5==3 && i%7= =2) { printf(“M”,i); j=j+1; if( j%5= =0 ) printf(“\\n”); } } 三、编程:

1、有一分数序列 2/1,3/2,5/3,8/5,13/8,21/13,…求出这个数列的前20项之和

2、输入n值,输出如图所示高为n的等腰三角形。 * *** ***** ******* ********* *********** 1、参考答案: main()

{int n,t,number=20; float a=2,b=1,s=0;

for(n=1;n

}

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

2、参考答案: #include main() {

int i,a;

for(i=1;i<=10;i++) { scanf(“%d”,&a); if(a%7==0) { printf(“%d”,a); break ; } } if( i==11 ) printf(“not exist\\n”); }