三种循环控制结构

1、while循环

结构:

while(循环条件){
     循环语句
    .......
    }

(1)、当满足条件时进入循环,不满足条件则直接跳过循环。

(2)、进入循环后,当条件不满足时,执行完循环体内全部语句后再跳出。

如下是用while写的一个整数分解的代码:

注:第一个while条件为x>9,如果是经常用的x>0就会无休止的进行下去,可以自己在编译器上写一写。

      需要先计算输入数据的位数,然后根据十的多少次方,用来相除或取余,得到新数据。

/*整数分解的循环*/
#include<stdio.h>
#include<math.h>
int main(){
	int x;
	int mask=1;
	int y,z,m;
	printf("请输入一个整数:");
	scanf("%d",&x);
	m=x;
	while(x>9)	{
		x/=10;
		mask++;
		
		
	}
	x=m;
	while(mask>=0){
		mask--;
		y=pow(10,mask);
		z=x/y;
		x=x%y;
		printf("%d ",z);
	}
	
} 

2、do-while循环

do-while循环

结构:

do{
 循环语句

......
}while(循环条件);

 do-while循环和while循环的区别在于进入循环的先后。

前者先进入循环一次,出来之后再看符不符合循环条件,如果符合继续循环。

#include<stdio.h>
#include<math.h>
int main(){
	int x;
	int mask=0;
	int y,z,m;
	printf("请输入一个数据:");
	scanf("%d",&x);
	m=x;
	do{
		x/=10;
		mask++;
	} while(x>0);
	x=m;
	do{
		y=pow(10,mask);
		mask--;
		z=x/y;
		x=x%y;
		printf(" %d ",z);		
	}while(mask>=0);

} 

3、for循环

for循环:

结构

for(单次表达式;条件表达式;末尾循环体)
    {中间循环体}

                其中,表示式皆可以省略,但分号不可省略,因为“;”可以代表一个空语句,省略了之后语句减少,即为语句格式发生变化,则编译器不能识别而无法进行编译。 

                for循环小括号里第一个“;”号前为一个为不参与循环的单次表达式,其可作为某一变量的初始化赋值语句, 用来给循环控制变量赋初值; 也可用来计算其它与for循环无关但先于循环部分处理的一个表达式。“;”号之间的条件表达式是一个关系表达式,其为循环的正式开端,当条件表达式成立时执行中间循环体。

                执行的中间循环体可以为一个语句,也可以为多个语句,当中间循环体只有一个语句时,其大括号{}可以省略,执行完中间循环体后接着执行末尾循环体。

                执行末尾循环体后将再次进行条件判断,若条件还成立,则继续重复上述循环,当条件不成立时则跳出当下for循环。

例题:捕鱼和分鱼
ABCDE五人在某天夜里合伙去捕鱼,到第二天凌晨时都疲惫不堪,
于是各自找地方睡觉。日上三竿,A第一个醒来,将鱼分为5份,
把多余的1条鱼扔掉,拿走自己的1份。B第二个醒来,也将鱼分5份,
把多余的1条鱼扔掉,拿走自己的1份。CDE依次醒来,也按同样的方法拿鱼。
问他们合伙至少捕了多少条鱼?

#include<stdio.h>
int main(){
	int x,y;
	int i;
	for(x=1;x>0;x++){
		y=x;
		for(i=1;i<=5;i++){
			if((y-1)%5==0){
				y=(y-1)/5*4;
			}else
			break;
		}
		if(i==6)
		break;
	}
	printf("Total number of fish catched=%d\n",x);
	getchar();
}

解题思路:

总计将鱼五次均分,每次分配的策略是相同的,
即每次扔掉一条鱼,都能被5整除,然后拿走一份,剩下四份,
假定鱼的总数是X,则X-1后可以被五整除,余下的鱼为
4*(x-1)/5.
所以X就是题目的解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值