溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何使用C語言實現(xiàn)“百馬百擔(dān)”問題

發(fā)布時間:2021-06-25 12:22:28 來源:億速云 閱讀:2957 作者:小新 欄目:編程語言

這篇文章主要為大家展示了“如何使用C語言實現(xiàn)“百馬百擔(dān)”問題”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“如何使用C語言實現(xiàn)“百馬百擔(dān)”問題”這篇文章吧。

前言

百馬百擔(dān)問題,有100匹馬,馱100擔(dān)貨,大馬馱3擔(dān),中馬馱2擔(dān),兩匹小馬馱1擔(dān),問共有多少種馱法?且各種馱法中大、中、小馬各多少匹?

【分析】

1、定義整型變量m、n、k分別存放大馬匹數(shù)、中馬匹數(shù)、小馬匹數(shù);

2、定義整型變量sum存放共有幾種馱法,且sum賦初值為0;

3、根據(jù)題意,大馬、中馬、小馬共100匹;大馬、中馬、小馬馱100擔(dān)貨滿足如下關(guān)系:

m+n+k=100(匹)

3*m+2*n+1/2*k=100(擔(dān))

4、三個未知數(shù),兩個方程,此題有若干組解;

5、計算機求解此類問題,采用試湊法(也稱窮舉法)來實現(xiàn),即將可能出現(xiàn)的各種情況一一羅列測試,判斷是否是問題真正的解。此題可以采用兩重循環(huán),列舉出該問題所有可能的解進行篩選。

【源程序】

#include
int main( void )
{
int m,n,k;
int sum=0;
printf("各種馱法如下: ");
for(m=1;m<=100/3;m++ )
for(n=1;n<100/2;n++)
{
k=100-m-n;
if((2*3*m+2*2*n+k)==2*100)
{
printf("大馬%3d匹; 中馬%3d匹; 小馬%3d匹. ",m,n,k);
sum++;
}
}
printf("共有%d種馱法. ",sum);
return 0;
}

【運行結(jié)果】

如何使用C語言實現(xiàn)“百馬百擔(dān)”問題

本算法中主要用到了c語言的for循環(huán),下面簡單介紹下for循環(huán)。

for循環(huán)

c語言中的for循環(huán)語句使用最為靈活,不僅可以用于循環(huán)次數(shù)已經(jīng)確定的情況,而且可以用于循環(huán)次數(shù)不確定而只給出循環(huán)結(jié)束條件的情況,它完全可以代替while語句.

for(表達式 1;表達式 2;表達式 3)語句

它的執(zhí)行過程如下:

(1)先求表達式 1.

(2)求表達式2,若其值為真(值為非0),則執(zhí)行for語句中指定的內(nèi)嵌語句,然后執(zhí)行下面第三步 做若為假(值為0),則結(jié)束循環(huán),轉(zhuǎn)到第5步.

(3)求解表達式3

(4)轉(zhuǎn)回上面第(2)步驟繼續(xù)執(zhí)行;

(5)結(jié)束循環(huán),執(zhí)行for語句下面的一個語句;

以上是“如何使用C語言實現(xiàn)“百馬百擔(dān)”問題”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI