循环结构new教学教材_第1页
循环结构new教学教材_第2页
循环结构new教学教材_第3页
循环结构new教学教材_第4页
循环结构new教学教材_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第六章循环结构程序设计第1节循环程序的设计步骤如:a=123则输出顺序为:printf("%d",a%10);a=a/10;printf("%d",a%10);a=a/10;printf("%d",a%10);a=a/10;例:逆序输出一个不超过4位的正整数。Inputaa<10bit=1a<100bit=2a<1000bit=3bit=4main(){ inta,bit; scanf("%d",&a); if(a<10) bit=1; else if(a<100) bit=2; else if(a<1000) bit=3; else bit=4;;/*按题目要求输出结果*/}switch(bit) { case4:printf("%d",a%10);a=a/10; case3:printf("%d",a%10);a=a/10; case2:printf("%d",a%10);a=a/10; case1:printf("%d",a%10);a=a/10; default:; }1.while语句一般形式:while(表达式)

循环体语句执行流程:pa假(0)真(非0)whilepAP,用逻辑量表示while(x=1)x=10;单条语句s=0;i=1;while(i<=100)s+=i++;/*i=0;while(i++<100)s+=i;*//*i=0;while(++i<=100)s+=i;*/x=10;while(x-->0);第2节实现循环的三条语句main(){ intx,i; i=0;while(i<10) { scanf("%d",&x); if(x<0)x=-x; printf("%8d",x); i++; }printf("\n");}2.do~while语句一般形式:do

循环体语句

while(表达式);执行流程:doAp假(0)真(非0)whileAp;必比可少do{循环体语句}while(表达式);s=0;i=1;do{s+=i++;}while(i<=100);/*i=1;do{s+=i;}while(i++<100);*//*i=1;do{s+=i;}while(++i<=100);*/main(){ intx,i; i=0;do { scanf("%d",&x); if(x<0)x=-x; printf("%8d",x); i++; }while(i<10);printf("\n");}x=10;do{;}while(x-->0);3.for语句一般应用形式:for(expr1;expr2;expr3)

循环体语句expr2A假(0)真(非0)expr1expr3Aexpr1;expr2;expr3循环变量赋初值循环条件循环趋于结束部分例用for循环求

main(){inti,sum=0;for(i=1;i<=100;i++)sum+=i;printf("%d",sum);}main(){ intx,i; for(i=0;i<10;i++) { scanf("%d",&x); if(x<0)x=-x; printf("%8d",x); }printf("\n");}说明:for语句中expr1,expr2,expr3类型任意,都可省略,但分号;不可省无限循环:for(;;)for语句可以转换成while结构关键是体现三要素expr1;while(expr2){

循环体语句

expr3;}for(s=0,i=100;i;s+=i--);i=1;for(;i<=100;i++)s+=i;i=1;for(;i<=100;)s+=i++;while(i<=100)s+=i++;

main(){intm,n,r;scanf("%d,%d",&m,&n);if(m<n)r=m,m=n,n=r;r=m%n;while(r!=0){m=n;n=r;r=m%n;}printf("%d\n",n);}

main(){intm,n,r;scanf("%d,%d",&m,&n);if(m<n)r=m,m=n,n=r;do{r=m%n;m=n;n=r;}while(r!=0);printf("%d\n",m);}

for(r=m%n;r!=0;r=m%n)/*for(;(r=m%n);){m=n;n=r;}printf("%d\n",n);

例:求最大公约数?main(){floatfac;inti,n;fac=1;i=2;scanf("%d",&n);while(i<=n)/*i++<=n*/{fac=fac*i;i++;

}printf("n!=%.0f\n",fac);}main(){floatfac;inti,n;i=1;fac=1;scanf("%d",&n);do{fac=fac*i;i++;}while(i<=n);printf("n!=%.0f\n",fac);}for(fac=1,i=1;i<=n;i++)fac=fac*i;printf("n!=%.0f\n",fac);例:求n!

#include"stdio.h"main(){inta=0;charc;for(c=getchar();c!='\n';c=getchar())/*while((c=getchar())!='\n\')*/ a=10*a+c-'0';printf("%d\n",a);}例:构造整数?main(){intm;scanf("%d",&m);while(m){printf("%d",m%10);m=m/10;}printf("\n");}例梯形法求数值积分0yaxa+hxx+hbf(x)s=(sqrt(4-x*x)+sqrt(4-(x+h)*(x+h)))*h/2;#include"math.h"main(){ floata,b,s=0,sum=0,h,x; scanf("%f,%f,%f",/&a,&b,&h); for(x=a;x<b;x+=h) { s=(sqrt(4-x*x)+sqrt/(4-(x+h)*(x+h)))*h/2;sum+=s; } printf("%f\n",sum);}

1.break语句功能:在循环语句和switch语句中,终止并跳出循环体或开关体7.3辅助控制语句while(p){Abreak;B}if(q)while(p){Abreak;B}if(q)else增加了循环结束的出口。!p和q都是循环结束的条件。可以去掉breakfor(i=m<n?m:(t=n,n=m,m=t);i>0;i--)if(m%i==0&&n%i==0)break;for(i=m>n?n:m;m%i!=0||n%i!=0;i--);flag=0;/*没找到最大公约数*/for(i=m>n?n:m;!flag&&i;i--)if(m%i==0&&n%i==0){flag=i;break;}main(){

ints,n;floatpi,f;

s=1;f=1;n=1;pi=0;

while(1){pi=pi+s*f;n=n+2;s=-s;f=1./n;if(f<1e-6)break;}

printf("%f\n”,(pi=4*pi));}f=1,pi=0,n=1,s=11pi=pi+f*sn=n+2s=-sf=1/n输出pi=pi*4f<1e-6break

while(f>1e-6){pi=pi+s*f;n=n+2;s=-s;f=1./n;}考虑每一项的绝对值!

2.continue语句功能:结束本次循环,跳过循环体中尚未执行的语句,进行下一次仅用于循环语句中while(p){Acontinue;B}if(q)while(p){AB}if(!q)

例求输入的十个整数中正数的个数及其平均值#include<stdio.h>main(){inti,num=0,a;floatsum=0;for(i=0;i<10;i++){scanf("%d",&a); if(a<=0)continue; num++; sum+=a;}printf("%dplusinteger'ssum:%6.0f\n",num,sum);printf("Meanvalue:%6.2f\n",sum/num);}for(i=0;i<10;i++){scanf("%d",&a); if(a>0){num++; sum+=a;}}7.4循环的嵌套循环题语句中又包含另一循环的结构

三种循环可互相嵌套,层数不限(1)while(){……while(){……}…...}(2)do{……do{……}while();…...}while();(3)while(){……do{……}while();…….}(4)for(;;){……do{……}while();……while(){……}…...}内循环外循环内循环读入ak=ai=2当i

ka被i整除真假用break结束循环i=i+1i

k+1真假输出:a”是素数”输出:a”不是素数”【例】输出所有两位素数。要求:一行输出15个素数。判断a是否为素数a=10;a<100;a++#include<math.h>main(){inti,a,end,n=0;

}

end=sqrt(a);flag=1;for(i=2;i<=end;i++)if(a%i==0){flag=0;break;}if(flag){printf("%4d",a);n++;if(n%15==0)printf("\n");}for(a=10;a<=99;a++){

}能改成for(a=11;a<=99;a=a+2)

?判断a是否素数a在10~99时例循环嵌套,输出九九表#include<stdio.h>main(){inti,j;for(i=1;i<10;i++)printf("%4d",i);printf("\n");for(i=1;i<10;i++){for(j=1;j<10;j++)printf("%4d",i*j);printf(“\n”);}}for(i=1;i<10;i++){for(j=1;j<10;j++)printf("%4d",i*j);printf(“\n”);}结论2:可以表示各种可能的组合可用于解有多组解的问题!穷举法1234567891234567892468101214161836912151821242791827364554637281……………..ji结论1:内层循环的变化频率快。【例】编程求三个数字x、y、z(0~9)满足:xyz+zyx=1231。#include"stdio.h"main(){intx,y,k;for(x=1;x<=9;x++)for(y=0;y<=9;y++)for(z=1;z<=9;z++)if(101*x+20*y+101*z==1231)

printf("x=%d,y=%d,z=%d\n",x,y,z);}求解过程+abnext第5项++abnext第3项abnext第4项abnext第6项+……112

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论