第六课 循环结构程序设计

更新时间:2023-09-15 01:40:01 阅读量: 资格考试认证 文档下载

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

第6课 循环结构程序设计

1. 循环:为完成特定任务,一组语句/函数反复被执行,C语言中主要有三种语句实现,且可通用。 2. do{ }while(表达式) 直到型语句结构:先执行,后判断表达式的条件是否成立。

如:用do…while语句求1~100的累加和 #include void main() {

int i=1,sum=0; do { sum += i; /*实现累加*/ i++; /*循环控制变量i增1*/ } while(i<=100 ); printf(\100=%d\\n\}

该程序运行结果如下:1+2+3+……+100=5050

语句 真(非0) 表达式 假(0) do…while语句的执行过程

3. while(表达式 ){ } 当型语句结构:先判断条件,再决定是否执行。

如:用while语句求1~100的累加和 #include void main() { int i=1,sum=0; while(i<=100 ) { sum += i; /*实现累加*/ i++; /*循环控制变量i增1*/ } printf(\\\n\}

该程序运行结果如下: 1+2+3+……+100=5050

4. for( 表达式1;表达式2 ;表达式3){ }

? 表达式1:循环的初值;表达式2:循环的条件;表达式3:循环增量 (1)求解“表达式1”。 (2)求解“表达式2”。如果其值为真(非0),执行(3);否则,转至(4)。 (3)执行循环体语句,并求解“表达式3”,然后转向(2)。 (4)执行for语句的下一条语句。 如:用for语句求1~100的累加和。

for(i=1; i<=100; i++) { sum=sum+i;}

? 表达式2必不可少,三个表达式可以是任意的表达式。如for( ;(c=getchar( ))!=?\\n? ;) 5. 循环的嵌套

计算机科学与技术学院 C培训讲义 钟良骥

表达式 假(0) 真(非0) 语句 while语句的执行过程

第6课 循环结构程序设计

? 双重循环 ? 多重循环

6. break语句和continue语句在循环中的使用 7. 习题

一、单选题。

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

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

D.for循环体语句中,可以包含多条语句,但要用花括号括起来 2. 对于for(表达式1;;表达式3)可理解为( )

A.for(表达式1;1;表达式3) B.for(表达式1:1;表达式3)

C.for(表达式1;表达式1;表达式3) D.for(表达式1;表达式3;表达式3) 3. 以下正确的描述是( ).

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

B.只能在循环体内和switch语句体内使用break语句 C.在循环体内使用break语句或continue语句的作用相同 D.从多层循环嵌套中退出时,只能使用goto语句 4. C语言中( )。

A.不能使用do-while语句构成的循环

B.do-while语句构成的循环必须用break语句才能退出

C.do—whiLe语句构成的循环,当while语句中的表达式值为非零时结束循环 D.do—while语句构成的循环,当while语句中的表达式值为零时结束循环 5. C语言中while和do-while循环的主要区别是( )。

A.do—while的循环体至少无条件执行一次

B.while的循环控制条件比do—while的循环控制条件严格 C.do—while允许从外部转到循环体内 D.do-while的循环体不能是复合语句 6. 下面程序段不是死循环的是( ).

A.int I=100;

while(1)

{ I=I0+1; if(I>100) break; }

B.for ( ; ; ); C.int k=0;

do{++k; } while(k>=0); D.int s=36;

计算机科学与技术学院 C培训讲义 钟良骥

第6课 循环结构程序设计

while(s); --s;

7. 以下能正确计算1*2*3*……*10的程序是( ).

A.do{i=1;s=1; B.do{i=1;s=0;

s=s*i; s=s*i; i++; i++;

}while(i<=10); }while(i<=10); C.i=1;s=1; D.i=1;s=0;

do{ s=s*i; do{ s=s*i;

i++; i++;

}while(i<=10); }while(i<=10);

8. 下面程序的运行结果是( )。

#include void main() { int y=10; do{y--;} while(--y);

printf(\

A.-1 B.1 C.8 D.0 9. 下面程序的运行结果是( )。

#include void main() { int num=0;

while(num<=2) { num++;

printf(\} } A.1 B.1 2 C.1 2 3 D.1 2 3 4

10.若运行以下程序时,从键盘输入3.6 2.4↙,则下面程序的运行结果是( #include #include void main() {

float x,y,z;

scanf(“%f%f”,&x,&y); z=x/y; while(1)

{ if(fabs(z)>1.0)

{ x=y;y=z;z=x/y;}

计算机科学与技术学院 C培训讲义 钟良骥

).

第6课 循环结构程序设计

else

break;

}

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

A.1.500000 B.1.600000 C.2.000000 D.2.400000 二、看程序,写运行结果。

1. 若运行以下程序时,从键盘输入2473↙,则下面程序的运行结果是( ).

#include void main() { int c;

while((c=getchar())!=?\\n?) switch(c-?2?) {case 0:

case1: putchar(c+4); case2: putchar(c+4);break

case3: putchar(c+3);

default: putchar(c+2);break; }

printf(“\\n”); }

2. 若运行以下程序时,从键盘输入ADescriptor↙,则下面程序的运行结果是( #include void main() {

char c;

Int v0=0,v1=0,v2=0; do{

switch(c=getchar()) {case?a?:case?A?: case?e?:case?E? case?i?:case?I?: case?o?:case?O?:

case?u?:case?U?:v+=1; default:v0+=1;v2+=1;} }while(c!=?n\\?);

printf(“v0=%d,v1=%d,v2=%d\\n”,v0,v1,v2); }

3. 下面程序的运行结果是( ).

#include void main() {

计算机科学与技术学院 C培训讲义 钟良骥

)。

第6课 循环结构程序设计

int i,b,k=0;

for(i=1;i<=5;i++) { b=i%2;

while(b- ->=0) k++; }

printf(“%d,%d”,k,b); }

4. 下面程序的运行结果是( ).

#include void main() {

int a,b;

for (a=1,b=1;a<=100;a++) { if(b>=20) break;

if(b%3==1) {b+=3; continue;} b-=5; }

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

5. 下面程序的运行结果是( ).

#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); }

6. 下面程序的运行结果是( ).

#include void main() { int i;

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

{ if(i%2) printf(“*”); else continue; printf(“#”);

计算机科学与技术学院 C培训讲义 钟良骥

第6课 循环结构程序设计

}

printf(“$\\n”); }

7. 下面程序的运行结果是( ).

#include void main() {

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); }

8. 下列程序运行后的输出结果是( )

#include void main() {

int i,j,k;

for(i=1;i<=4;i++) {

for(j=1;j<=20-3*i;j++) printf(\

for(k=1;k<=2*i-1;k++) printf(\printf(\}

for(i=3;i>0;i--) {

for(j=1;j<=20-3*i;j++) printf(\

for(K=1;k<=2*i-1;k++) printf(\printf(\} }

9. 下列程序运行后的输出结果是( )

#include void main() {

计算机科学与技术学院 C培训讲义 钟良骥

第6课 循环结构程序设计

int i,j,k;

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

for(j=1;j<=20-3*j;j++)

printf(\for(k=i-1;k>0;k--)

printf(\printf(\}

}

三、程序填空。

1. 下面程序的功能是将小写字母变成对应的大写字母后的第二个字母,其中y变成A,z变成B,请选

择填空。

#include void main() {

char c;

while((c=getchar())!=?\\n?) { if(c>=?a?&&c<=?z?) { for(c>?Z”&&c<=”Z”+2) }

printf(“%c”,c); } }

2. 下面程序的功能是将从键盘输入的一组字符中统计出大写字母的个数m和小写字母的个数 n,并输入

m,n中的较大数,请选择填空。 #include void main() {

int m=0,n=0; char c;

while(( )!=?\\n?) { if(c>=?A?&&c<=?Z?) m++; if(c>=?a?&&c<=?z?) n++; }

printf(“%d\\n”,m

3. 下面程序的功能是把316表示为两个加数分别能被13和11整除。请选择填空。

#include void main() {

计算机科学与技术学院 C培训讲义 钟良骥

第6课 循环结构程序设计

int i=0,j,k;

do{i++;k=316-13*i;} while( ); j=k/11;

printf(“316=13*%d+11*%d”,i,j);

}

4. 从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束。

#include void main() {

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

while( ) {

if(x>amax) amax=x;

if( )

amin=x;

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

printf(\}

5. 求算式xyz+yzz=532中x, y, z的值(其中xyz和yzz分别表示一个三位数)。

#include void main() {

int x,y,z,i,result=532; for(x=1; ;x++) for(y=1;y<10;y++) for(z=0; ;z++) {

i=100*x+10*y+z+100*y+10*z+z;

if( )

printf(\

} }

6. 根据公式e=1+1/1!+1/2!+1/3!+…求e的近似值,精度要求为10-6。

#include void main() {

int i;double e,new;

计算机科学与技术学院 C培训讲义 钟良骥

第6课 循环结构程序设计

e=1.0;new=1.0;

for(i=1; ;i++) {

}

printf(\}

7. 完成用一元人民币换成一分、两分、五分的所有兑换方案。

#include void main() {

int i,j,k,l=1;

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

for(j=0; ;j++) { if(k>=0)

{ printf(\ \ if(l%5==0) printf(\} }

}

8. 统计正整数的各位数字中零的个数,并求各位数字中的最大者。

#include void main() {

int n,count,max,t; count=max=0; scanf(“%d”,&n); do {

if( )

++count;

else if( )

max=t;

} while(n);

printf(“count=%d,max=%d”,count,max); }

四、编程题。

1. 根据公式Π2/6≈1/12+1/22+1/32+…+1/n2,求Π的近似值,直到最后一项的值小于10的负六次为止。

计算机科学与技术学院 C培训讲义 钟良骥

第6课 循环结构程序设计

2. 有1020个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,问几天后可以卖完,请编程

计算。

3. 编程实现用“辗转相除发”求两个正整数的最大公约数。

4. 等差数列的第一项a=2,公差d=3,编程实现在前n项和中,输出能被4 整除的所有的和。 5. 求出用数字0至9可以组成多少个没有重复的三位偶数。 6. 输出1至100之间每位数的乘积大于每位数的和的数。 7. 下面程序的功能是求1000以内的所有完全数。(说明:一个数如果恰好等于它的因子之和(除自身外),

则称该数为完全数,例如:6=1+2+3,6为完全数) 8. 有一堆零件(100到200之间),如果分成4个零件一组的若干组,则多2个零件;若分成7个零件一

组,则多3个零件;若分成9个零件一组,则多5个零件。求这堆零件总数

计算机科学与技术学院 C培训讲义 钟良骥

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

Top