官术网_书友最值得收藏!

1 解決“牛吃草”問題

1.1 學習目標

1. 理解計算機是用來計算的機器。

2. 利用C++語言編程解決簡單問題。

1.2 情境導入

數學課上,老師布置了“牛吃草”問題:有一個牧場,牧場上的牧草每天都在勻速生長。這片牧場可以供21頭牛吃8天或24頭牛吃6天,那么可以供18頭牛吃幾天?

艾羅:小明,你知道如何計算嗎?

小明:這還不簡單,用總草量除以18頭牛每天吃的草量就可以了。

艾羅:這樣算可不對哦,因為草每天都在生長呀!

小明:那應該怎么計算呢?

艾羅:下面我們就來看看如何求解“牛吃草”問題。

這道數學題,我們可以人工計算求出結果。但如果題目中所給條件改變了,我們還要按照人工計算的方法重新計算,那么有沒有其他可以解決此類問題的方法呢?

1.3 知識講解

求解過程實際上就是計算。計算是生活中非常重要的事情,如果我們沒有計算能力,買東西就不知道價錢,做事情也不知道需要多少時間,生活就會變得混亂。更重要的是,如果離開了計算,我們無法建造房屋、制造機器,人類社會就不能如此快速地發展。

很早以前,人們使用手指進行計算,但手指能夠表示的數有限,于是人們發明了算籌、算盤等輔助計算的工具,但這些工具存在運算速度慢、運算位數少等缺陷。直到計算機出現才徹底改變了人們的計算方式。那么計算機如何理解我們的需求,又如何將計算的結果反饋給我們呢?這就是今天我們要學習的編程。

編程是指模擬計算機的思考方式,用計算機可以理解的語言(編程語言)給出指令,從而完成程序設計。但是,在教會計算機思考之前,我們首先要理解計算機是如何思考的,才能用計算機可以聽懂的語言進行溝通。

1.4 實踐任務

“牛吃草問題”的難點在于草每天都在生長,草的數量在不斷變化。解決這類問題的關鍵是抓住“一變”和“兩不變”,即草的總量發生變化,而每天草的新增數量和原有草的數量不變。

在“牛吃草問題”中,我們通常假設“草每天勻速生長,1頭牛每天吃1份草”。同時,我們要清楚:每個單位時間內,“每天草的新增數量”是多少、“原有的草量”是多少。如果求時間,則把“牛”的數量分成兩份,一份吃“原有的草量”,另一份吃“每天勻速生長出的草”。

【問題描述】有一個牧場,牧場上的牧草每天都在均勻生長。這片牧場可以供21頭牛吃8天或24頭牛吃6天,那么在牧場上放18頭牛可以供它們吃多少天?

【輸出】可供18頭牛吃草的天數t

“牛吃草問題”的參考程序如下。

#include <iostream>

using namespace std;

int main ()

{

int s1,s2,s3,s4,t;

s1=21*8;

s2=24*6;

s3=(s1-s2)/(8-6); //每天新增的草量可供多少頭牛吃

s4=21*8-s3*8; //原有的草量

t=s4/(18-s3); //可供牛吃的天數

cout<<"t:"<<t<<endl;

system("pause");

return 0;

}

程序的運行結果如圖1-1所示。

圖1-1 “牛吃草問題”程序的運行結果

1.5 思維拓展

【問題描述】這片牧場可以供cow1頭牛吃day1天或cow2頭牛吃day2天,求這片牧場可以供cow3頭牛吃的天數day3。修改“實踐任務”中的程序,實現用鍵盤輸入條件求解“牛吃草”問題。

【輸入】牛數cow1和天數day1、牛數cow2和天數day2以及需要求解的牛數cow3。

【輸出】牛吃草的天數day3。

輸入條件解決“牛吃草”問題的參考程序如下。

#include <iostream>

using namespace std;

int main ()

{

int cow1,cow2,cow3,day1,day2,day3;

long s1,s2,s3,s4,t;

cout<<"cow1:";

cin>>cow1;

cout<<"day1:";

cin>>day1;

cout<<"cow2:";

cin>>cow2;

cout<<"day2:";

cin>>day2;

cout<<"cow3:";

cin>>cow3;

s1=cow1*day1;

s2=cow2*day2;

s3=(s1-s2)/(day1-day2); //每天新增草量可供多少頭牛吃

s4=cow1*day1-s3*day1; //原有草量

day3=s4/(cow3-s3);

cout<<"day3:"<<day3<<endl;

return 0;

}

按照原來的題目輸入cow1、day1、cow2、day2、cow3,程序運行結果如圖1-2所示。

圖1-2 輸入條件解決“牛吃草”問題程序的運行結果

1.6 鞏固練習

1. 運行下列程序后,變量s的值是( )。

#include<iostream>

using namespace std;

int main()

{

int s,i,m,n;

i=1;

m=1;

n=1;

while(i<=5)

{

s=m+n;

m=n;

n=s;

i=i+1;

}

cout<<"s:"<<s<<endl;

system("pause");

return 0;

}

A.2

B.8

C.13

D.21

2. 某游樂場在營業前有400名游客排隊。營業后,每分鐘來的人數是固定的。一個入口每分鐘可以進10名游客,開4個入口,20分鐘后所有游客就可以全部入場。如果現在開6個入口,所有游客入場完畢需要多長時間?請編程實現。

1.7 自我評價

主站蜘蛛池模板: 麻城市| 华安县| 黎城县| 利辛县| 凤庆县| 珠海市| 汽车| 克东县| 双江| 台安县| 惠东县| 南涧| 长兴县| 邵阳市| 大新县| 凤山市| 柞水县| 永顺县| 普宁市| 五华县| 凤阳县| 凌海市| 左贡县| 宣威市| 庄浪县| 湟中县| 西畴县| 集安市| 云龙县| 东源县| 婺源县| 双江| 孟连| 阿城市| 连山| 蒙山县| 泽州县| 富顺县| 饶河县| 新邵县| 贵州省|