用Scratch、C/C++和Python解决鸡兔同笼问题

文章目录:

一:问题

二:解决办法 

1.通过Scratch解决

2.通过C/C++解决

3.通过Python解决


一:问题


该问题大约在1500年前的《孙子算经》中就有记载:“今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?”
解释:鸡兔一个笼子35个头,一共有94只脚,问鸡和兔有多少?

传统方法
	1.全鸡:35只	兔:0只
	2.全兔:35只	鸡:0只
	3.  鸡x		兔35-x	(兔x		鸡35-x)
	x*2+(35-x)*4=94
	x=23		35-23=12

《孙子算经》方法:脚多的
	脚数/2-头数=兔数			头数-兔数=鸡数
	94/2-35=12			35-12=23
------------------------------------------------------------------------------------
有鸡兔共20只,脚44只,鸡兔各几只?
	44/2-20=2			20-2=18

二:解决办法 

1.通过Scratch解决

 效果图◕‿◕✌✌✌

Scratch鸡兔同笼问题


 

2.通过C/C++解决

#include <iostream> // 包含iostream头文件以使用cout
using namespace std; // 使用std命名空间,这样可以直接写cout而不是std::cout


void test1(int tousum,int zhisum){
	int rabbit = 0, chicken = 0;

    // 检查是否有解,并且解是合理的(即非负整数)
    if (zhisum % 2 == 0 && zhisum / 2 >= tousum) {
        rabbit = zhisum / 2 - tousum;
        chicken = tousum - rabbit;
        if (rabbit >= 0 && chicken >= 0) {
            cout << "鸡的数量:" << chicken << ",兔的数量:" << rabbit << endl;
        } else {
            cout << "无解或解不是非负整数。" << endl;
        }
    } else {
        cout << "无解,因为总腿数必须是偶数,且至少和总头数一样多。" << endl;
    }
}


void test2(int tousum,int zhisum){
	int chicken;
    int rabbit;

    for (chicken = 1; chicken <= tousum; chicken = chicken + 1) {
        for (rabbit = 1; rabbit <= tousum; rabbit = rabbit + 1) {
            if (chicken * 1 + rabbit * 1 == tousum) {
                if (chicken * 2 + rabbit * 4 == zhisum) {
                    cout << "鸡的数量:" << chicken << ",兔的数量:" << rabbit << endl; // 添加endl以换行
                }
            }
        }
    }
}


int main() { // main函数声明返回int类型
	test1(20,44);
	test2(20,44);


	system("pause");
    return 0; // main函数返回0,表示程序正常退出
}

运行结果 

3.通过Python解决

def test1(tousum, zhisum):
    # 检查是否有解,并且解是合理的(即非负整数)
    if zhisum % 2 == 0 and zhisum // 2 >= tousum:
        rabbit = zhisum // 2 - tousum
        chicken = tousum - rabbit
        if rabbit >= 0 and chicken >= 0:
            print("鸡的数量:", chicken, ",兔的数量:", rabbit)
        else:
            print("无解或解不是非负整数。")
    else:
        print("无解,因为总腿数必须是偶数,且至少和总头数一样多。")



def test2(tousum, zhisum):
    for chicken in range(1, tousum + 1):
        for rabbit in range(1, tousum + 1):
            if chicken + rabbit == tousum:
                if chicken * 2 + rabbit * 4 == zhisum:
                    print("鸡的数量:", chicken, ",兔的数量:", rabbit)



# 调用函数进行测试
tousum = 20  # 总头数
zhisum = 44  # 总腿数
test1(tousum, zhisum)
test2(tousum, zhisum)

运行结果  

作者:刘鑫磊up

物联沃分享整理
物联沃-IOTWORD物联网 » 用Scratch、C/C++和Python解决鸡兔同笼问题

发表回复