- for循环像一个计数循环:设定一个计算器,初始化它,然后在计数器到达某值之前,重复执行循环体,而每执行一轮循环,计数器值以一定步进进行调整,比如加1或者减1
for(i=0;i<5;i=i+1){ printf("%d",i); }
- for(初始动作;条件;每轮的动作){
} - for中的每一个表达式都是可以省略的
for (;条件;) == while (条件)
for=对于
- for(count=10;count>0;count--)
- 就读成:“对于一开始的count=10.当count>0时,重复做循环体,每一轮循环在昨晚循环体内语句后,使得count--。
c int n; scanf("%d",&n); int fact = 1; for ( int i=1; i<=n;i++){ fact *= i; } printf("%d!=%dn",n,fact)
- 循环控制变量i只在循环里被使用了,在循环外面它没有任何用处。因此,我们可以把变量i的定义写到for语句里面去
- 只有C99能使用
循环次数
- for(i=0;i<n;i++)
- 则循环的次数是n。而循环结束以后,i的值是n。循环的控制变量i,是选择从0开始还是从1开始,是判断i<n还是判断i<=n,对循环的次数,循环结束后变量的值都有影响
复制代码
1
2
3
4
5
6
7
8for (int i=1;i<=n;i++){ fact *=i; } int i=1; while (i<=n){ fact *= i; i++; }
Tips for loops
- 如果有固定次数,用for
- 如果必须执行一次,用do-while
- 其他情况用while
素数
- 只能被1和自己整除的数,不包括1
- 2,3,5,7,11,13,17,19.......
```c #include int main(){ int x; scanf("%d",&x);
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13int i; int isPrime = 1; for (i=2;i<x;i++){ if (x % i == 0){ isPrime = 0; } } if (isPrime == 1){ printf("是素数n"); }else{ printf("不是素数n") } return 0;
}
```
#### break vs continue
- break:跳出循环
- continue:跳过循环这一轮剩下的语句进入下一轮
- 只能对它所在的那层循环做
凑硬币
- 如何用1角、2角和5角的硬币凑出10元以下的金额呢?
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17#include <stdio.h> int main(){ int x; int one,two,five; // scanf("%d",&x); x = 2; for (one = 1;one< x*10;one++){ for(two = 2;two< x*10/2;two++){ for(five = 5;five< x*10/5;five++){ if (one + two*2 +five*5 == x*10){ printf("可以用%d个1角加%d个2角加%d个5角得到%d元n",one,two,five,x); } } } } return 0; }
跳出多重循环
接力break
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22#include <stdio.h> int main(){ int x; int one,two,five; exit = 0; // scanf("%d",&x); x = 2; for (one = 1;one< x*10;one++){ for(two = 2;two< x*10/2;two++){ for(five = 5;five< x*10/5;five++){ if (one + two*2 +five*5 == x*10){ printf("可以用%d个1角加%d个2角加%d个5角得到%d元n",one,two,five,x); exit =1; break; } } if(exit==1) break; } if(exit==1) break; } return 0; }
goto
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19#include <stdio.h> int main(){ int x; int one,two,five; // scanf("%d",&x); x = 2; for (one = 1;one< x*10;one++){ for(two = 2;two< x*10/2;two++){ for(five = 5;five< x*10/5;five++){ if (one + two*2 +five*5 == x*10){ printf("可以用%d个1角加%d个2角加%d个5角得到%d元n",one,two,five,x); goto out; } } } } out: return 0; }
循环应用:求前n项求和
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30#include <stdio.h> int main() { int n; int i; double sum = 0.0; scanf ("%d",&n); for ( i=1;i<=n;i++) { sum += 1.0/i; } printf{"f(%d)=%fn",n,sum}; return 0; } #include <stdio.h> int main() { int n; int i; double sum = 0.0; int sign =1; scanf ("%d",&n); for ( i=1;i<=n;i++) { sum += 1.0/i; sign = -sign; } printf{"f(%d)=%fn",n,sum}; return 0; }
正序分解整数
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24#include <stdio.h> int main() { int x; scanf("%d",&x); int t= x; int mask =1; while (t>9) { t/=10; mask *=10; } printf("x=%d,mask=%dn",x,mask); do { int d = x /mask; printf("%d",d); if (mask>0) { printf(" "); } x %= mask; mask /= 10; }while (mask>0); printf("n"); return 0; }
求最大公约数
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29/*如果b等于0,计算结束,a就是最大公约数; 否则,计算a除以b的余数,让a等于b,而b等于那个余数; 回到第一步。 a b t 12 18 12 18 12 6 12 6 0 6 0 */ #include <stdio.h> int main() { int a,b; int t; scanf("%d %d",&a,&b); while (b !=0){ t= a%b; a=b; b=t; } printf("gcd=%dn",a); return 0; }
最后
以上就是想人陪红牛最近收集整理的关于while循环里面scanf_5.1 for循环的全部内容,更多相关while循环里面scanf_5.1内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复