栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

初学者之循环

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

初学者之循环

一:穷举法 例题:我国古代数学家张丘建在《算经》一书中曾提出过著名的“百钱买百鸡”问题,该问题叙述如下:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,则翁、母、雏各几何?(

 意思是公鸡一个五块钱,母鸡一个三块钱,小鸡三个一块钱,现在要用一百块钱买一百只鸡,问公鸡、母鸡、小鸡各多少只)

计算机的计算速度是非常快的,我们可以让他暴力的计算出所有的可能并从中找到正确的可能。

我们可以先确定大概的框架—-

​
#include 
int main()
{
	
	return 0;
}

​

 首先可以确定的是,公鸡最多22只,母鸡33只,小鸡仔叁佰只;

而从这里我们可以得到大概的框架:

​
	int cocks,hens,chicks;
	for(cocks=0;cocks<=20;cocks++){
		for(hens=0;hens<=33;hens++){
			for(chicks=0;chicks<=300;chicks++){
				
			}
		}
	}

​

而其中相对应的单词所代表的数字代表的是所对应种类个数,最后的小鸡仔的个数就是100减去前面两种种类的个数;

然后我们确定我们所需要的——即百钱买百鸡

if(5*cocks+3*hens+chicks/3.0==100)
			printf("cocks=%d,hens=%d,chicks=%dn",cocks,hens,chicks);

运行结果如下:

 对于结果较多的穷举法,我们以可以在其中计入计数器:

#include 
int main()
{
	int one,two,five;
	int x;
	printf("请输入x元");
	scanf("%d",&x);
	int cnt=0;
	for(one=0;one<=100;one++){
		for(two=0;two<=50;two++){
			for(five=0;five<=20;five++){
				if(one*1+two*2+five*5==100*x){
					printf("%d个一分%d个两分和%d个五分组成%d元n",one,two,five,x);
					cnt+=1;
				}
			}
		}
	}
	printf("%d",cnt);
	return 0;
	
}
 二:辗转相除法求最大公约数

(辗转相除法求最大公约数大家可以借鉴数学,不在c语言范畴内了^-^)

方法如下:

​
#include 
int main()
{
	int a,b;
	scanf("%d%d",&a,&b);
	int c=0;
	while(b!=0){
		c=a%b;
		a=b;
		b=c;
	}
	printf("%d",a); 
}

​

当然也可以使用枚举法,更好理解但是复杂,不推荐使用

(从我看的网课截下来的)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/395884.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号