累加运算的规律 | |
{ sum+=s; //先加一项 s=***; //计算下一项 } 关键:后项与前项的规律,如何用前项计算出后一项 | 例:2+4+6+…+n #include <stdio.h> int main() { int sum,s,n; scanf("%d",&n); sum=0,s=1; while(s<=n) { sum+=s; s+=2; } printf("sum=%d",sum); return 0; } |
控制循环次数n次的总结
while | do...while | for | |
1 | i=1; while(i<=n) { ... i++; } | i=1; do { ... i++; }while(i<=n); | for(i=1;i<=n;i++) { ... } |
2 | i=0; while(i<n) { ... i++; } | i=0; do { ... i++; }while(i<n); | for(i=0;i<n;i++) { ... } |
3 | i=n; while(i>0) { ... i--; } | i=n; do { ... i--; }while(i>0) | for(i=n;i>0;i--) { ... } |
例题:有一个分数序列:2/1,3/2,5/3,8/5,...,从键盘上输入n,计算其前n项之和。
输出时保留2位小数。
实现方法 | 程序 | 流程图 |
while | #include<stdio.h> int main() { float ,t,sum,p,q; int n,i; scanf("%d",&n); i=1,sum=0.0,p=2.0,q=1.0; while(i<=n) { sum+=p/q; t=p; p+=q; q=t; I++; } printf("%.2f",sum); return 0; } | |
do{…}while | #include<stdio.h> int main() { float ,t,sum,p,q; int n,i; scanf("%d",&n); i=1,sum=0.0,p=2.0,q=1.0; do { sum+=p/q; t=p; p+=q; q=t; I++; }while(i<=n); printf("%.2f",sum); return 0; } | |
for(; ; ) | #include<stdio.h> int main() { float t,sum,p,q; int n,i; scanf("%d",&n); sum=0.0,p=2.0,q=1.0; for(i=1;i<=n;i++) { sum+=p/q; t=p; p+=q; q=t; } printf("%.2f",sum); return 0; } |
三种语句的特点
- while循环:先判断条件是否成立,如果成立则执行循环体,执行完循环体后再次判断条件是否成立,如果成立则继续执行循环体,直到条件不成立为止。如果条件一开始就不成立,则不会执行循环体。
- do while循环:先执行一次循环体,然后再判断条件是否成立,如果成立则继续执行循环体,直到条件不成立为止。即使条件一开始就不成立,也会执行一次循环体。
- for循环:在循环开始前先执行一次初始化语句,然后判断条件是否成立,如果成立则执行循环体,执行完循环体后再执行一次更新语句,再次判断条件是否成立,如果成立则继续执行循环体,直到条件不成立为止。
总结:while循环适用于不知道具体循环次数的情况;do while循环适用于至少需要执行一次循环体的情况;for循环适用于已知具体循环次数的情况。