前言
百馬百擔問題,有100匹馬,馱100擔貨,大馬馱3擔,中馬馱2擔,兩匹小馬馱1擔,問共有多少種馱法?且各種馱法中大、中、小馬各多少匹?
【分析】
1、定義整型變量m、n、k分別存放大馬匹數、中馬匹數、小馬匹數;
2、定義整型變量sum存放共有幾種馱法,且sum賦初值為0;
3、根據題意,大馬、中馬、小馬共100匹;大馬、中馬、小馬馱100擔貨滿足如下關系:
m+n+k=100(匹)
3*m+2*n+1/2*k=100(擔)
4、三個未知數,兩個方程,此題有若干組解;
5、計算機求解此類問題,采用試湊法(也稱窮舉法)來實現,即將可能出現的各種情況一一羅列測試,判斷是否是問題真正的解。此題可以采用兩重循環,列舉出該問題所有可能的解進行篩選。
【源程序】
#includeint 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;}
【運行結果】
本算法中主要用到了c語言的for循環,下面簡單介紹下for循環。
for循環
c語言中的for循環語句使用最為靈活,不僅可以用于循環次數已經確定的情況,而且可以用于循環次數不確定而只給出循環結束條件的情況,它完全可以代替while語句.
for(表達式 1;表達式 2;表達式 3)語句
它的執行過程如下:
(1)先求表達式 1.
(2)求表達式2,若其值為真(值為非0),則執行for語句中指定的內嵌語句,然后執行下面第三步 做若為假(值為0),則結束循環,轉到第5步.
(3)求解表達式3
(4)轉回上面第(2)步驟繼續執行;
(5)結束循環,執行for語句下面的一個語句;
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。
新聞熱點
疑難解答