c语言程序设计循环结构程序设计.docx

上传人:b****3 文档编号:10695187 上传时间:2023-05-27 格式:DOCX 页数:40 大小:29.57KB
下载 相关 举报
c语言程序设计循环结构程序设计.docx_第1页
第1页 / 共40页
c语言程序设计循环结构程序设计.docx_第2页
第2页 / 共40页
c语言程序设计循环结构程序设计.docx_第3页
第3页 / 共40页
c语言程序设计循环结构程序设计.docx_第4页
第4页 / 共40页
c语言程序设计循环结构程序设计.docx_第5页
第5页 / 共40页
c语言程序设计循环结构程序设计.docx_第6页
第6页 / 共40页
c语言程序设计循环结构程序设计.docx_第7页
第7页 / 共40页
c语言程序设计循环结构程序设计.docx_第8页
第8页 / 共40页
c语言程序设计循环结构程序设计.docx_第9页
第9页 / 共40页
c语言程序设计循环结构程序设计.docx_第10页
第10页 / 共40页
c语言程序设计循环结构程序设计.docx_第11页
第11页 / 共40页
c语言程序设计循环结构程序设计.docx_第12页
第12页 / 共40页
c语言程序设计循环结构程序设计.docx_第13页
第13页 / 共40页
c语言程序设计循环结构程序设计.docx_第14页
第14页 / 共40页
c语言程序设计循环结构程序设计.docx_第15页
第15页 / 共40页
c语言程序设计循环结构程序设计.docx_第16页
第16页 / 共40页
c语言程序设计循环结构程序设计.docx_第17页
第17页 / 共40页
c语言程序设计循环结构程序设计.docx_第18页
第18页 / 共40页
c语言程序设计循环结构程序设计.docx_第19页
第19页 / 共40页
c语言程序设计循环结构程序设计.docx_第20页
第20页 / 共40页
亲,该文档总共40页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

c语言程序设计循环结构程序设计.docx

《c语言程序设计循环结构程序设计.docx》由会员分享,可在线阅读,更多相关《c语言程序设计循环结构程序设计.docx(40页珍藏版)》请在冰点文库上搜索。

c语言程序设计循环结构程序设计.docx

c语言程序设计循环结构程序设计

第一章CH5循环结构程序设计

5.1读程序

1.有如下程序

#include

main()

{intnum=0;

while(num<=2){num++;printf("%d\n",num);}

}

运行结果为:

1

2

3

详见教材循环结构

当循环条件num<=2成立的时候,执行循环体{num++;printf("%d\n",num);}中的语句。

循环初值num为0;

循环条件num<=2成立

第1次循环:

执行num++;即将num中的值加1,执行后num为1;

执行printf("%d\n",num);在屏幕上输出num中的值,即输出1,之后换行

此时num中的值为1,循环条件num<=2成立

第2此循环:

执行num++;即将num中的值加1,执行后num为2;

执行printf("%d\n",num);在屏幕上输出num中的值,即输出2,之后换行

此时num中的值为2,循环条件num<=2成立

第3此循环:

执行num++;即将num中的值加1,执行后num为3;

执行printf("%d\n",num);在屏幕上输出num中的值,即输出3,之后换行

此时num中的值为3,循环条件num<=2不成立,结束循环。

2.有如下程序

#include

main()

{intsum=10,n=1;

while(n<3){sum=sum-n;n++;}

printf(“%d,%d”,n,sum);

}

运行结果为:

3,7

当循环条件n<3成立的时候,执行循环体{sum=sum-n;n++;}中的语句。

循环初值sum为10,n为1;

循环条件n<3成立

第1次循环:

执行sum=sum-n=10-1=9;

执行n++,即将n中的值加1,执行后n为2;

此时n中的值为2,sum中的值为9,循环条件n<3成立,继续执行循环

第2次循环:

执行sum=sum-n=9-2=7;

执行n++,即将n中的值加1,执行后n为3;

输出此时n,sum中的值,即为3,7。

需要注意,在printf(“%d,%d”,n,sum);中要求输出的数据彼此间用逗号间隔,因此结果的两个数据间一定要有逗号

3.有如下程序

#include

main()

{intnum,c;

scanf("%d",&num);

do{c=num%10;printf("%d",c);}while((num/=10)>0);

printf("\n");

}

从键盘输入23,则运行结果为:

32

详见教材循环结构;复合的赋值运算符

do{}while(表达式);

先无条件执行循环体,再判断循环条件。

注意while(表达式)后有分号

定义整型变量num,c;

为num赋一个整型值;

执行{c=num%10;printf("%d",c);}直到循环条件(num/=10)>0不成立;

输出换行

已知为num赋值23

第1次执行循环体

执行c=num%10=23%10=3;

执行printf("%d",c);输出3

判断循环条件num/=10等价于num=num/10;因此num=23/10=2,2大于0,因此循环条件(num/=10)>0成立,继续执行循环体。

执行完第1次循环时,num为2,c为3

第2次执行循环体

执行c=2%10=2;

执行printf("%d",c);再输出2

判断循环条件num=2/10=0,0等于0,因此循环条件(num/=10)>0不成立。

结束循环

4.有如下程序

#include

main()

{ints=0,a=5,n;

scanf("%d",&n);

do{s+=1;a=a-2;}while(a!

=n);

printf("%d,%d\n",s,a);

}

若输入的值1,运行结果为:

2,1

详见教材循环结构;复合的赋值运算符

执行{s+=1;a=a-2;}直到循环条件a!

=n不成立;

已知为n赋值1,s为0,a为5

第1次执行循环体

执行s+=1;等价于s=s+1=0+1

执行a=a-2;a=5-2=3

判断循环条件,3不等于1,因此循环条件a!

=n成立,继续执行循环体。

执行完第1次循环时,s为1,a为3

第2次执行循环体

执行s+=1;等价于s=s+1=1+1=2

执行a=a-2;a=3-2=1

判断循环条件,1等于1,因此循环条件a!

=n不成立,结束循环。

执行完第2次循环时,s为2,a为1

输出此时s,a中的值,结果为2,1

5.有如下程序

#include

main()

{intx,y=0;

for(x=1;x<=10;x++)

{if(y>=10)

break;

y=y+x;

}

printf(“%d%d”,y,x);

}

运行结果为:

105

详见教材for语句

详见教材break,continue语句

for( 表达式1;表达式2;表达式3)

{

}

(1)先求解表达式1

(2)求解表达式2,若其值为真,执行循环体,然后执行(3).若为假,则结束循环,转到(5)

(3)求解表达式3

(4)转回上面

(2)继续执行

(5)循环结束,执行for语句下面的一个语句

break ,跳出循环体;continue,结束本次循环(第i次循环),继续执行下一次循环(第i+1次循环)

此题表达式1为x=1,表达式2(循环条件)为x<=10,表达式3为x++

初值x为1,y为0,循环条件(即表达式2)x<=10成立,进入循环体

第1次循环

执行if语句。

0小于10,if语句的条件表达式不成立,不执行break;

执行y=y+x;y=0+1=1

转向表达式3,执行x++,x=x+1=1+1=2。

循环条件x<=10成立,进入第2次循环

第2次循环

执行if语句。

1小于10,if语句的条件表达式不成立,不执行break;

执行y=y+x;y=1+2=3

转向表达式3,执行x++,x=x+1=2+1=3。

循环条件x<=10成立,进入第3次循环

第3次循环

执行if语句。

3小于10,if语句的条件表达式不成立,不执行break;

执行y=y+x;y=3+3=6

转向表达式3,执行x++,x=x+1=3+1=4。

循环条件x<=10成立,进入第4次循环

第4次循环

执行if语句。

6小于10,if语句的条件表达式不成立,不执行break;

执行y=y+x;y=6+4=10

转向表达式3,执行x++,x=x+1=4+1=5。

循环条件x<=10成立,进入第5次循环

第5次循环

执行if语句。

10等于10,if语句的条件表达式成立,执行break,跳出循环。

从break跳出至for语句的下一条语句。

执行printf(“%d%d”,y,x);

输出当前的y与x.结果为105

6.有如下程序

#include

main()

{inty=9;

for(;y>0;y--)

if(y%3==0)

{printf(%d”,--y);

}

}

运行结果为:

852

详见教材,自增自减符号

此题表达式1被省略,表达式2(循环条件)为y>0,表达式3为y--

初值y为9,循环条件(即表达式2)y>0成立,进入循环体

第1次循环

执行if语句。

9%3==0,if语句的条件表达式成立,执行printf(%d”,--y),即y先自减1变为8,然后在输出,因此屏幕上输出8

转向表达式3,执行y--,y=y-1=8-1=7。

循环条件y>0成立,进入第2次循环

第2次循环

执行if语句。

7%3不为0,if语句的条件表达式不成立,不执行printf(%d”,--y)

转向表达式3,执行y--,y=y-1=7-1=6。

循环条件y>0成立,进入第3次循环

第3次循环

执行if语句。

6%3==0,if语句的条件表达式成立,执行printf(%d”,--y),即y先自减1变为5,然后在输出,因此屏幕上输出5

转向表达式3,执行y--,y=y-1=5-1=4。

循环条件y>0成立,进入第4次循环

第4次循环

执行if语句。

4%3不为0,if语句的条件表达式不成立,不执行printf(%d”,--y)

转向表达式3,执行y--,y=4-1=3。

循环条件y>0成立,进入第5次循环

第5次循环

执行if语句。

3%3==0,if语句的条件表达式成立,执行printf(%d”,--y),即y先自减1变为2,然后在输出,因此屏幕上输出2

转向表达式3,执行y--,y=y-1=2-1=1。

循环条件y>0成立,进入第5次循环

第6次循环

执行if语句。

1%3不为0,if语句的条件表达式不成立,不执行printf(%d”,--y)

转向表达式3,执行y--,y=1-1=0。

循环条件y>0不成立,循环结束。

7.有如下程序

#include

main()

{inti,sum=0;i=1;

do{sum=sum+i;i++;}while(i<=10);

printf(“%d”,sum);

}

运行结果为:

55

8.有如下程序

#include

#defineN4

main()

{inti;

intx1=1,x2=2;

printf("\n");

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

{printf("%4d%4d",x1,x2);

if(i%2==0)

printf("\n");

x1=x1+x2;

x2=x2+x1;

}

}

运行结果为:

1235

8132134

此题首先为整型变量赋初值x1=1,x2=2

表达式1为i=1,表达式2(循环条件)为i<=N即i<=4,表达式3为i++

循环变量初值i为1,循环条件(即表达式2)i<=4成立,进入第1次循环

第1次循环

执行printf("%4d%4d",x1,x2);因此屏幕上输出12

执行if语句。

1%2不为0,if语句的条件表达式不成立,不执行printf("\n");

执行x1=x1+x2=1+2=3;此时x1中的值已变为3

执行x2=x2+x1=2+3=5。

转向表达式3,执行i++,i为2。

循环条件i<=4成立,进入第2次循环

第2次循环

执行printf("%4d%4d",x1,x2);因此屏幕上输出35

执行if语句。

2%2==0,if语句的条件表达式成立,执行printf("\n");换行

执行x1=x1+x2=3+5=8;此时x1中的值已变为8

执行x2=x2+x1=5+8=13。

转向表达式3,执行i++,i为3。

循环条件i<=4成立,进入第3次循环

第3次循环

执行printf("%4d%4d",x1,x2);因此屏幕上输出813

执行if语句。

3%2不为0,if语句的条件表达式不成立,不执行printf("\n");

执行x1=x1+x2=8+13=21;此时x1中的值已变为21

执行x2=x2+x1=21+13=34。

转向表达式3,执行i++,i为4。

循环条件i<=4成立,进入第4次循环

第2次循环

执行printf("%4d%4d",x1,x2);因此屏幕上输出2134

执行if语句。

4%2==0,if语句的条件表达式成立,执行printf("\n");换行

执行x1=x1+x2=21+34=55;此时x1中的值已变为55

执行x2=x2+x1=34+55=89。

转向表达式3,执行i++,i为5。

循环条件i<=4不成立,结束循环

9.有如下程序

#include

main()

{intx,y;

for(x=30,y=0;x>=10,y<10;x--,y++)

x/=2,y+=2;

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

}

运行结果为:

x=0,y=12

10.有如下程序

#include

#defineN4

main()

{inti,j;

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

{for(j=1;j

printf("");

printf("*");

printf("\n");

}}

运行结果为:

*

*

*

*

详见教材符号常量

用宏处理指令定义符号常量N为4,在编译过程中,遇到N即视为整数4。

外层for循环,表达式1为i=1,表达式2(循环条件)为i<=N,表达式3为i++

内层for循环,表达式1为j=1,表达式2(循环条件)为j

首先计算外层循环的表达式1,i为1,使得循环条件i<=4成立,进入外层for循环体

外层for循环第1次此时i为1

内层循环j=1,使得循环条件j

执行printf("*");

执行printf("\n");换行

至此外层循环体执行完,计算外层循环的表达式3,i++,此时i为2.使得循环条件i<=4

成立,再次进入外层for循环体

外层for循环第2次此时i为2

内层循环j=1,使得循环条件j

第1次执行内层循环体printf("");

执行内层循环表达式3,j++为2,j

执行printf("*");

执行printf("\n");换行

至此外层循环体执行完,计算外层循环的表达式3,i++,此时i为3.使得循环条件i<=4

成立,进入外层for循环体

外层for循环第3次此时i为3

内层循环j=1,使得循环条件j

第1次执行内层循环体printf("");

执行内层循环表达式3,j++为2,j

第2次执行内层循环体printf("");

执行内层循环表达式3,j++为3,j

执行printf("*");

执行printf("\n");换行

至此外层循环体执行完,计算外层循环的表达式3,i++,此时i为4.使得循环条件i<=4

成立,进入外层for循环体

外层for循环第4次此时i为4

内层循环j=1,使得循环条件j

第1次执行内层循环体printf("");

执行内层循环表达式3,j++为2,j

第2次执行内层循环体printf("");

执行内层循环表达式3,j++为3,j

第3次执行内层循环体printf("");

执行内层循环表达式3,j++为4,j

执行printf("*");

执行printf("\n");换行

至此外层循环体执行完,计算外层循环的表达式3,i++,此时i为5.使得循环条件i<=4

不成立,跳出外层for循环体

11.有如下程序

main()

{

inti;

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

{

if(i++%5==0)

if(++i%8==0)

printf("%d",i);

}

printf("\n");

}

执行后的输出结果是___C___。

A、5B、24C、32D、40

12.请读程序:

#include

#include

main()

{floatx,y,z;

scanf("%f%f",&x,&y);

z=x/y;

while(z)

{if(fabs(z)>1.0)

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

elsebreak;

}

printf("%f\n",y);

}

若运行时从键盘上输入3.62.4表示回车),则输出的结果是___B___。

A、1.500000B、1.600000C、2.000000D、2.400000

13.有以下程序

main()

{

intk=4,n=0;

for(;n

{

n++;

if(n%3!

=0)continue;

k--;

}

printf("%d,%d\n",k,n);

}

程序运行后的输出结果是___C___。

A、1,1B、2,2C、3,3D、4,4

14.有如下程序

main()

{

intx=23;

do

{

printf("%d",x--);

}

while(!

x);

}

该程序的执行结果是__B____。

A、321B、23C、不输出任何内容D、陷入死循环

15.有以下程序

main()

{ints=0,a=1,n;

scanf("%d",&n);

do

{

s+=1;

a=a-2;

}

while(a!

=n);

printf("%d\n",s);

}

若要使程序的输出值为2,则应该从健盘给n输入的值是___B___。

A、-1B、-3C、-5D、0

16.有以下程序段

intn,t=1,s=0;

scanf("%d",&n);

do

{

s=s+t;

t=t-2;

}

while(t!

=n);

为使此程序不陷入死循环,从键盘输入的数据应该是___D___。

A、任意正奇数B、任意负偶数C、任意正偶数D、任意负奇数

17.有以下程序

main()

{inti=0,s=0;

do

{

if(i%2){i++;continue;}

i++;

s+=i;

}

while(i<7);

printf("%d\n",s);

}

执行后输出结果是__A____。

A、16B、12C、28D、21

18.下面的程序的运行结果是___B___。

main()

{

intx=3;

do

{

printf("%d\n",x-=2);

}

while(!

(--x));

}

A、输出的是1B、输出的是1和-2C、输出的是3和0D、是死循环

19.以下叙述正确的是___D___。

A、do-while语句构成的循环不能用其它语句构成的循环来代替

B、do-while语句构成的循环只能用break语句退出

C、用do-while语句构成的循环,在while后的表达式为非零时结束循环

D、用do-while语句构成的循环,在while后的表达式为零时结束循环

20.以下程序的输出结果是___D___。

main()

{intx=10,y=10,i;

for(i=0;x>8;y=++i)

printf("%d%d",x--,y);

}

A、10192B、9876C、10990D、101091

21.以下程序的输出结果是___B___。

main()

{inti,k,a[10],p[3];

k=5;

for(i=0;i<10;i++)a[i]=i;

for(i=0;i<3;i++)p[i]=a[i*(i+1)];

for(i=0;i<3;i++)k+=p[i]*2;

printf("%d\n",k);

}

A、20B、21C、22D、23

22.设变量已正确定义,则以下能正确计算f=n!

的程序段是___D___。

A、f=0;for(i=1;i<=n;i++)f*i;

B、f=1;for(i=1;i

C、f=1;for(i=n;i>1;i++)f*i;

D、f=1;for(i=n;i>=2;i--)f*=i;

23.若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0)

s=a;

for(b=1;b<=c;b++)s=s+1;

则上述程序段功能等价的赋值语句是___B___。

A、s=a+b;B、s=a+c;C、s=s+c;D、s=b+c;

24.有以下程序

main()

{

inti,s=0;

for(i=1;i<10;i+=2)s+=i+1;

printf("%d\n",s);

}

程序执行后的输出结果是___D___。

A、自然数1~9的累加和B、自然数1~10的累加和

C、自然数1~9中奇数之和D、自然数1~10中偶数之和

25.有如下程序

main()

{inti,sum;

for(i=1;i<=3;sum++)sum+=i;

printf("%d\n",sum);

}

该程序的执行结果是___C___。

A、6B、3C、死循环D、0

26.若i,j已定义为int类型,则以下程序段中内循环体的总的执行次数是___A___。

for(i=5;i;i--)

for(j=0;j<4;j++){……}

A、20B、25C、24D、30

27.有以下程序

main()

{

intk=5;

while(--k)printf("%d",k-=3);

printf("\n");

}

执行后的输出结果是___A___。

A、1B、2C、4D、死循环

28.以下程序中,while循环的循环次数是___D___。

main()

{inti=0;

while(i<10)

{

if(i<1)continue;

if(i==5)break;

i++;

}

……

}

A、1B、10C、6D、死循环,不能确定次数

29.t为int类型,进入下面的循环之前,t的值为0

while(t=1)

{……}

则以下叙述中正确的是___B___。

A、循环控制表达式的值为0B、循环控制表达式的值为1

C、循环控制表达式不合法D、以上说法都不对

30.有如下程序

main()

{intn=9;

while(n>6)

{n--;

printf("%d",n);

}

}

该程序段的输出结果是___B___。

A、987B、876C、8765D、9876

31.有以下程序

main()

{intp[7]={11,13,14,15,16,17,18};inti=0,k=0;

while(i<7&&p[i]%2)

{

k=k+p[i];

i++;

}

printf("%d\n",k);

}

执行后输出结果是___D___。

A、58B、56C、45D、24

32.要求通过while循环不断读入字符,当读入字母N时结束循环。

若变量已正确定义,以下正确的程序段是___A___。

A、while((ch=getchar())!

='N'printf("%c",ch);

B、while(ch=getchar()!

='N'printf("%c",ch);

C、while(ch=getchar())=='N'printf("%c",ch);

D、while((ch=getchar())=='N'printf("%c",ch);

33.

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2