概述
- 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,对循环的次数,循环结束后变量的值都有影响
for (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);
int 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元以下的金额呢?
#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
#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
#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项求和
#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;
}
正序分解整数
#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;
}
求最大公约数
/*如果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 for循环所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复