1.while循环
框架
while(x>0){
x/=10;
n++;
}
注意:
循环有可能一次都没有被执行
2.do while 循环
框架
do
{
<循环体语句>
}while(<循环条件>);
循环一定会执行一次
3.for 循环
框架
for(初始动作;条件;每轮的动作){
}
for 中的每个表达式都是可以省略的
4.三种循环的使用建议
- 如果有固定次数,用for
- 如果必须执行一次,用do while
- 其他情况用while
5.break vs continue vs goto
- break:跳出循环
- continue:跳过循环这一轮剩下的语句进入下一轮
- goto out;
out:
1.作业1统计素数求和(2020.4.21)
while
#include<stdio.h>
int main ()
{
int m,n;
printf("输入的给定整数M和N分别为:");
scanf("%d %d",&m,&n);
int cnt=0; //计数变量
int sum=0; //求和变量
if (m==1) {
m=2;
}
int i=m; //令i从m依次增大到n
while (i<=n) {
int isPrime=1;
int t=2; //判断素数
while (t<=i-1) {
if (i%t==0) {
isPrime=0;
break;
}
t++;
}
if (isPrime==1) {
cnt++;
sum+=i;
}
i++;
}
printf ("M和N之间的素数的个数及它们的和为:%d %d",cnt,sum);
return 0;
}
do while
#include<stdio.h>
int main ()
{
int m,n;
printf("输入的给定整数M和N分别为:");
scanf("%d %d",&m,&n);
int cnt=0; //计数变量
int sum=0; //求和变量
int isPrime=1;
if (m==1) {
m=2;
}
int i=m; //令i从m依次增大到n
if (m==2) {
goto out;
}
do{
int t=2; //判断素数
do{
if (i%t==0) {
isPrime=0;
break;
}
t++;
} while (t<=i-1) ;
out:
if (isPrime==1) {
cnt++;
sum+=i;
}
i++;
} while (i<=n) ;
printf ("M和N之间的素数的个数及它们的和为:%d %d",cnt,sum);
return 0;
}
for
#include<stdio.h>
int main ()
{
int m,n;
printf("输入的给定整数M和N分别为:");
scanf("%d %d",&m,&n);
int cnt=0; //计数变量
int sum=0; //求和变量
int i;
if (m==1) {
m=2;
}
for (i=m;i<=n;i++) { //令i从m依次增大到n
int t;
int isPrime=1;
for (t=2;t<=i-1;t++) {
if (i%t==0) {
isPrime=0;
break;
}
} //判断素数
if (isPrime==1) {
cnt++;
sum+=i;
}
}
printf ("M和N之间的素数的个数及它们的和为:%d %d",cnt,sum);
return 0;
}
2.作业2 n 项求和
while
#include<stdio.h>
int main()
{
int n;
printf("请输入N的数值:");
scanf("%d",&n);
double dividend=2;
double divisor=1;
double sum=0;
double t;
int i=1;
while (i<=n) {
sum+=dividend/divisor;
t=dividend;
dividend++;
divisor=t;
i++;
}
printf("前N项求和的结果为:%f",sum);
return 0;
}
do while
#include<stdio.h>
int main()
{
int n;
printf("请输入N的数值:");
scanf("%d",&n);
double dividend=2;
double divisor=1;
double sum=0;
double t;
int i=1;
if (n==0) {
goto out;
}
do {
sum+=dividend/divisor;
t=dividend;
dividend++;
divisor=t;
i++;
} while (i<=n);
out:
printf("前N项求和的结果为:%f",sum);
return 0;
}
for
#include<stdio.h>
int main()
{
int n;
printf("请输入N的数值:");
scanf("%d",&n);
double dividend=2;
double divisor=1;
double sum=0;
double t;
int i;
for (i=1;i<=n;i++) {
sum+=dividend/divisor;
t=dividend;
dividend++;
divisor=t;
}
printf("前N项求和的结果为:%f",sum);
return 0;
}