C语言ch学习教程.pptx
while循环结构While 结构语句 格 式:while(条件表达式)语句集;main()int num=0;while(num=1)num+;printf(“%dn”,num);定 义:每次判断条件表达式是否为1,为1进入循环体,开始执行“语句集”,而后再进行判断,直到条件表达式的值为 0 时结束循环1 12 2第1页/共22页循环结构语句While 结构语句 main()int n=0;while(n+=1)printf(“*%dn”,n);printf(“*%dn”,n);*1*1*2*2*3*3第2页/共22页循环结构语句While 结构语句 main()int n=0;while(+n=1)printf(“*%dn”,n);printf(“*%dn”,n);*1*1*2*2main()int n=0;while(+n)=1)printf(“*%dn”,n);printf(“*%dn”,n);第3页/共22页循环结构语句While 结构语句#includemain()char ch;while(ch=getchar()!=EOF)putchar(ch);输入的字符不是结束字符则输出注:EOF表示结束数据的输入,键盘输入时用ctrl+z代表EOF,即表示数据的输入结束。第4页/共22页循环结构语句While 结构语句 分 析:1.男人搬36块砖需9人,取值范围:082.女人搬36块砖需12人,取值范围:0113.小孩搬36块砖需72人,取值范围:03601280 12110 1236manwomanchildren排列组合分析36块砖36人搬,男搬4,女搬3,小孩一次半块砖第5页/共22页循环结构语句While 结构语句 main()int m,w,c;while(m=8)w=0;while(w=11)c=36-m-w;if(4.0*m+3.0*w+c/2=36)printf(“men:%dt women%dt”,m,w);printf(“children%d”,c);w+;men+;1.男人:08个2.女人:011个3.小孩:036个第6页/共22页循环结构语句While 结构语句 int gcd(int x,int y)int r;while(y!=0)r=x%y;x=y;y=r;return(x);求两个数的最大公约数 第7页/共22页dowhile循环doWhile 结构语句 格 式:do 语句集;while(条件表达式)#includemain()char ch;do ch=getchar();putchar(ch);While(ch!=EOF);定 义:先执行一次“语句集”,而后判断条件表达式是否为1,为1进入继续循环执行,直到条件表达式的值为 0 时结束循环第8页/共22页for循环结构语句for 结构语句 格式:for(循环变量赋值语句;循环条件;循环变量增值)循环体语句;int Sum_all(int n)int sum=0,i;for(i=1;i=n;i+)sum+=i;for(sum=0,i=1;i=n;sum+=i,i+);int Sum_all(int n)int sum=0,i=1;while(i=n)sum+=i;i+;第9页/共22页循环结构语句for 结构语句 1.“循环变量赋值语句”可以省略,但是后面的分号不能省略,保证for(;)语句内有两个分号int Sum_all(int n)int sum=0,i;i=1;for(;i=n;i+)sum+=i;int Sum_all(int n)int sum=0,i;for(i=1;i=n;i+)sum+=i;第10页/共22页循环结构语句for 结构语句 2.“循环变量增值”语句可以省略,但是前面的分号不能省略,保证for(;)语句内有两个分号int Sum_all(int n)int sum=0,i;for(i=1;i=n;i+)sum+=i;for(i=1;i+=n;)sum+=i;for(i=1;+i=n;)sum+=i;区 别:for(i=1;i=n;)sum+=i;i+;第11页/共22页循环结构语句for 结构语句 3.“循环条件”语句决不 可以省略,否则循环无终止进行下去int Sum_all(int n)int sum=0,i;for(i=1;i+)sum+=i;4.“循环变量赋值”语句以及“循环变量增值语句”可以同时省略,但是for(;)语句内的两个分号 决不能省略 int sum=0,i=1;for(;i=100;)sum+=i;i+;第12页/共22页循环结构语句for 结构语句 int sum,i;for(sum=0,i=1;i=100;i+)sum+=i;for(;)语句的多种编写格式int m,n,sum;for(m=100,n=1;n=m;m-,n+)sum+=m+n;for(m=100,n=2;n=m;m-=2,n+=2)sum+=m+n;第13页/共22页循环结构语句for 结构语句 for(i=0;(t=getchar()!=n;i+=t,putchar(t)for(;)语句的多种编写格式for(i=0;(t=getchar()!=n;i+=t,printf(“%c”,t)i=0;While(t=getchar()!=n)i+=t;printf(“%c”,t);第14页/共22页循环结构语句for(;)语句嵌套使用求100200之间的全部素数:main()int m,k,i,n=0;for(m=101;m=200;m+=2)k=sqrt(m);for(i=2;i=k+1)printf(“%d”,m);n+;if(n%10=0)printf(“n”);printf(“已经全部找到n”);第15页/共22页break、continue语句Break和continue语句 break语句:在循环体结构语句内用来提前结束整个循环for(r=1;r100)break;printf(“%f”,area);continue语句:在循环体结构语句内用来结束本次循环,但继续执行下次循环for(n=100;n=100;n+)if(n%3=0)continue;printf(“%d”,n);if(n%3!=0)printf(“%d”,n);第16页/共22页for循环举例for 结构语句 int prime(int n)int m;for(m=2;m=n/2;m+)if(n%m=0)return(0);return(1);验证一个正数是否为素数思 路:在 2 ,n/2 区间内能否找到一个整数m能将n整除改 进:2 ,n/2 区间缩小为 2,第17页/共22页for循环举例for 结构语句 main()int n=10,sum=0,m;for(m=0;m=5;m+)switch(m)case 0:n-;case 1:n+;case 2:n+;case 3:n+;default:sum+=n;printf(“sum=%d”,sum);for 与switch case的嵌套m=3n=18sum=52m=4n=18sum=70m=5n=18sum=88m=0n=12sum=12m=1n=15sum=27m=2n=17sum=34第18页/共22页兔子繁殖循环实现for 结构语句 兔子繁殖的迭代算法1,1,2,3,5,8,13,21,34 第1次:F1 F2 F第2次:F1 F2 F第3次:F1 F2 F第4次:F1 F2 F第5次:F1 F2 F第6次:F1 F2 F第一月第二月第三月第四月第五月第六月第七月第八月第九月 第19页/共22页兔子繁殖循环实现for 结构语句 void sum(int n)int m;long F,F1=1,F2=1;for(m=3;m=n;m+)F=F1+F2;F1=F2;F2=F;printf(“%ldt”,F);return;兔子繁殖的迭代算法M:第m个月N:待输出兔子数量的总月数第20页/共22页循环结构语句比较各种循环结构比较 1.四种循环可以相互替换,但绝对不提倡用goto语句2.while以及do while语句循环变量要在循环前完成赋值,for语句可以在第一个表达式中完成3.for语句功能最强,可以代替其他几个循环语句4.while、dowhile以及for循环都可以用break语句中断整个循环,用 continue 语句仅仅结束本次循环,但是对于if以及goto语句不能用break和continue语句第21页/共22页感谢您的观看!第22页/共22页