1樓:匿名使用者
百元買百雞問題:
一百個銅錢買了一百隻雞,其中公雞乙隻5錢、母雞乙隻3錢,小雞一錢3只,問一百隻雞中公雞、母雞、小雞各多少)。
這是乙個古典數學問題,設一百隻雞中公雞、母雞、小雞分別為x,y,z,問題化為三元一次方程組:
這本來是數學問題,現在用編寫程式的方法解決就變得相對簡單。
通常採用列舉演算法來實現:
所謂列舉演算法,就是一一枚舉,逐個檢驗:
關於列舉演算法,可以看看我的文章:
現在用列舉演算法來解決本題:
假設:公雞x只,母雞y只,小雞z只,
不難知道:
x 不會超過20
y 不會超過33
z 不會超過300
並且有關係式:(注意,這兩個關係式必須同時成立,才是問題的解)
x + y + z = 100
5x + 3y + z/3 = 100
採用列舉演算法的程式結構,往往就是迴圈裡邊巢狀選擇;
迴圈 -- 實現 一一枚舉,
選擇 -- 實現 逐個檢驗。
程式如下:
option explicit
private sub command1_click()
dim x as integer
dim y as integer
dim z as integer
for x = 1 to 20
for y = 1 to 33
for z = 1 to 300
if x + y + z = 100 and 5 * x + 3 * y + z / 3 = 100 then
print x, y, z
end if
next z
next y
next x
end sub
2樓:匿名使用者
private sub command1_click()
for i = 1 to 20
for j = 1 to 33
for k = 1 to 99 step 2
if i * 5 + j * 3 + k / 3 = 100 then
text1.text = text1.text & "公雞:
" & i & "只" & "母雞:" & j & "只" & "小雞:" & k & "只" & chr(13) & chr(10)
end if
next
next
next
end sub
文字框的multiling屬性設為true,scrollbars屬性設為2垂直。
以下為改進版
private sub command1_click()
for i = 1 to 20
for j = 1 to 33
k = 100 - i * 5 - j * 3
if k >= 0 and k mod 3 = 0 then
text1.text = text1.text & "公雞:
" & i & "只" & "母雞:" & j & "只" & "小雞:" & k & "只" & chr(13) & chr(10)
end if
next
next
end sub
3樓:鴨仔
private sub command1_click()dim a, b, c, d as integerfor a = 1 to 20
for b = 1 to 34
for c = 3 to 300 step 3d = (100 - 5 * a - 3 * b) * 3 + a + b
if d = 100 and (a + b + c) = 100 then
print "公雞有"; a; "只", "母雞有"; b; "只", "小雞有"; c; "只"
print vbcrlf
end if
next
next
next
end sub
vb 編寫程式解決百錢買百雞問題
4樓:匿名使用者
private sub command1_click()dim cock, hen, chicken, sum as integer
for cock = 0 to 19
for hen = 0 to 33
chicken = 100 - cock - henif not (c mod 3) thensum = cock * 5 + 3 * hen + chicken / 3
if sum = 100 then
print "公雞" & cock, "母雞" & hen, "小雞" & chicken & vbnewline
end if
end if
next
next
end sub
5樓:
private sub command1_click()dim a, b, c as integerdim aconst, bconst as integerdim sum as integer
aconst = int((100 - (100 / 3)) / 5) + 1
for a = 0 to aconst
bconst = int((100 - a * 5) / 3) + 1
for b = 0 to bconst
c = 100 - a - b
if not (c mod 3) thensum = a * 5 + 3 * b + c / 3if sum = 100 then
print "公雞" & a, "母雞" & b, "小雞" & celseif sum > 100 thenexit for
end if
end if
next
next
end sub
vb程式設計的問題:如何編寫百錢買百雞的程式
6樓:刺友互
1、開啟visual c++ 6.0-檔案-新建-檔案-c++ source file。
2、輸入預處理命令和主函式:#include/*輸入輸出標頭檔案*/,void main() /*空型別:主函式*/。
4、確定大公雞、母雞、小雞的數量: for(x=0;x<=19;x++) /*確定大公雞數量*/ for(y=0;y<=33;y++) /*確定母雞數量*/ 。
5、判斷100個錢是否買了100隻雞。
6、最後校驗輸出對應結果。
7樓:匿名使用者
private sub command1_click()'定義攻擊、母雞、小雞的**
a = 5
b = 3
c = (1 / 3)
for i = 1 to 100 \ a
for j = 1 to 100 \ b
for k = 3 to 100 step 3if (a * i + b * j + c * k = 100) and (i + j + k = 100) then
print "公雞:" + str(i) + "只、母雞" + str(j) + "只、小雞" + str(k) + "只"
end if
next
next
next
end sub
8樓:吹花
一百個銅錢買了一百隻雞,其中公雞乙隻5錢、母雞乙隻3錢,小雞一錢3只,問一百隻雞中公雞、母雞、小雞各多少)。
這是乙個古典數學問題,設一百隻雞中公雞、母雞、小雞分別為x,y,z,問題化為三元一次方程組:
這裡x,y,z為正整數,且z是3的倍數;由於雞和錢的總數都是100,可以確定x,y,z的取值範圍:
1) x的取值範圍為1~20
2) y的取值範圍為1~33
3) z的取值範圍為3~99,步長為3
對於這個問題我們可以用窮舉的方法,遍歷x,y,z的所有可能組合,最後得到問題的解。
private sub form_click()
dim x as integer, y as integer, z as integer
for x = 1 to 20
for y = 1 to 33
for z = 3 to 99 step 3
if x * 5 + y * 3 + z / 3 = 100 and x + y + z = 100 then print "公雞:" & x, "母雞:" & y, "小雞:
" & z
next z
next y
next x
end sub
**可以簡化,思路大致是這樣的
結果是:
公雞:4 母雞:18 小雞:78
公雞:8 母雞:11 小雞:81
公雞:12 母雞:4 小雞:84
如何鑑別百元大鈔,如何鑑別真假百元大鈔?
1 觀察紙張質量。真人民幣紙質有韌性,耐折迭,假人民幣紙質通常缺乏韌性,在同一條線上正反連續折迭幾次,票面輕輕一拉就斷裂。2 觀察色彩 圖案。由於人民幣大家經常接觸,色彩 圖案印象較深。觀察色彩 圖案時,主要看邊緣處是否清晰。真人民幣色彩 圖案邊緣處清晰,假人民幣色彩 圖案邊緣處通常模糊。3 擦試。...
幾 百 元的琺 琅 鍋可以買嗎?
1 琺琅鍋的好處。現在很多家庭都會選擇琺琅鍋,往往和它的顏值有關,琺琅塗層鑄鐵鍋,簡稱琺琅鍋。琺琅即搪瓷也叫琺琅瓷,是塗燒在金屬底坯表面上的無機玻璃瓷釉,因此顏色是很豐富的,能給枯燥的廚房帶來色彩。從功能上來看,導熱快,受熱均勻,保溫效能好,實用性很強,燒出來的食物要比普通鍋的食物,更加爛和入味,進...
尾號有8的百元鈔,尾號有6個8的百元鈔
4版還是5版,4版裡又有80版還是90版 你要說清楚的 如果是05版的 888888 這號碼還是不錯的 但是也不會像你說的7500都不賣 很可能 那張鈔票本身價值就高的 像80版的100啊 什麼的 但是你這張不是啊 我估價 這張 在500上下 收藏界 有這麼一類人 專門收藏 同號的 如果他們找上你 ...