C——mooc笔记之三种循环加习题篇(5)

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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值