一般用for
一、用while语言循环做数学运算
方法
例一 求2+4+6+···+100
#include<stdio.h>
int main()
{
int n=1, sum=0, a=2;//a=第一项的值
while(n<=50)//一共有50项
{
n=n+1;
sum=sum+a;
a=a+2;//前一项比后一项多2
}
printf("%d\n", sum);
return 0;
}
例二 求阶乘的和 (1!+2!+···+20!)
#include<stdio.h>
int main(void)
{
int n=1, sum=0, a=1;
while(n<=20)//共20项
{
n=n+1;
sum=sum+a;
a=a*n;//前一项和后一项的关系
}
printf("%d",sum);
return 0;
}
二、用while语句循环
例一 猴博士纳妃,一堆母猴排队一个接一个表演,猴博士共看300分钟,请统计猴博士看了多少只母猴
1.先写框架,一定会用到while循环,并且要输出母猴的数量
#include<stdio.h>
int main(void)
{
while()
{
}
printf("猴博士看了%d只母猴\n",n);
return 0;
}
2.确定条件,300分钟
可以定义一个变量为总时间,循环条件为<=300分钟
#include<stdio.h>
int main(void)
{
float alltime;//时间不一定是整数
while(alltime<=300)
{
}
printf("猴博士看了%d只母猴\n",n);
return 0;
}
3.还需要定义一个变量为每只母猴表演的时间time,刚开始总时间为0
#include<stdio.h>
int main(void)
{
float alltime=0;
float t;
int n=0;//要求母猴的数量
while(alltime<=300)
{
// printf("Input\n");
scanf("%f",&t);
alltime=alltime+t;
n=n+1;//每看一次母猴的数量加一
}
printf("猴博士看了%d只母猴\n",n);
return 0;
}
4.检查开头结尾
结尾有问题,如果有一只猴子表演完总时间为300分钟,符合<=300,还会进行下一次循环,但其实表演到300时就停止了。条件应该改为alltime<300
注:我们是先读入时间,然后再加到总时间里的
最终代码
#include<stdio.h>
int main(void)
{
float alltime=0;
float t;
int n=0;
while(alltime<300)
{
printf("请输入第%d只母猴的表演时间\n",n+1);
scanf("%f",&t);
alltime=alltime+t;
n=n+1;
}
printf("猴博士看了%d只母猴\n",n);
return 0;
}
例二、请编程输出100~300之间(包括100与300)的整数
#include<stdio.h>
int main(void)
{
int n=100;
while(n<=300)
{
printf("%d\n", n);
n=n+1;
}
return 0;
}
也可以是n=99;这样把n=n+1放在printf前面,并且让n<99 也可以保证输出的第一个值为100,
三、用break语言提前终止循环
(有多个限制条件时会用到)
例一、**例一 猴博士纳妃,一堆母猴排队一个接一个表演,猴博士共看300分钟,并且猴博士只愿意看100只母猴,请统计猴博士看了多少只母猴
加了if(n>=100)这个条件,这样只有同时满足两个条件时才会继续循环
#include<stdio.h>
int main(void)
{
float alltime=0;
float t;
int n=0;
while(alltime<300)
{
printf("请输入第%d只母猴的表演时间\n",n+1);
scanf("%f",&t);
alltime=alltime+t;
n=n+1;
if(n>=100)
{
break;
}
}
printf("猴博士看了%d只母猴\n",n);
return 0;
}
法二
while(alltime<300&&n<100)
{
n=n+1;//这里n先+1后面就输出第n只即可
printf("请输入第%d只母猴的表演时间\n",n);
}
四、用continue语句提前结束本次循环
continue只是结束本次循环,并不跳出整个循环
例一、请编程输出100~300之间(包括100与300)不能被4整除的整数
#include<stdio.h>
int main(void)
{
int n=99;
while(n<300)
{
n=n+1;
if(n%4==0)//如果可以被4整除这个数就不输出了,然后进行下一次循环再判断
{
continue;
}
printf("%d\t",n);
}
return 0;
}
五、do…while
六、for