意思是公鸡一个五块钱,母鸡一个三块钱,小鸡三个一块钱,现在要用一百块钱买一百只鸡,问公鸡、母鸡、小鸡各多少只)
计算机的计算速度是非常快的,我们可以让他暴力的计算出所有的可能并从中找到正确的可能。
我们可以先确定大概的框架—-
#includeint 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语言范畴内了^-^)
方法如下:
#includeint 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); }
当然也可以使用枚举法,更好理解但是复杂,不推荐使用
(从我看的网课截下来的)



