#include
成都創(chuàng)新互聯(lián)公司是一家集策劃、設計、技術開發(fā)一體的專業(yè)網(wǎng)站建設公司,技術團隊十年來致力于為客戶提供企業(yè)網(wǎng)站定制,移動網(wǎng)站建設。經過多年發(fā)展,公司技術團隊,先后服務了數(shù)千家客戶,包括各類中小企業(yè)、上市公司、高校、政府。公司在過去十年的資源積累,追求并一直堅持,為客戶打造更有價值的互聯(lián)網(wǎng)平臺。
stdio.h
void
main(
)
{
int
ret
=
0;
//
表示最后一個printf的返回值
while(1)
{
int
h,f,c,r;
printf("請輸入頭的數(shù)目:");
scanf("%d",h);
printf("\n請輸入腳的數(shù)目(必須為偶數(shù)):");
scanf("%d",f);
while(f%2!=0
f
!=
h
!=
0)
//這里的不等于的條件可以不加
{
printf("\n輸入腳的數(shù)目為奇數(shù),請重新輸入腳的數(shù)目(必須偶數(shù)):");
scanf("%d",f);
if(
f
4h
||
f
2h)
continue;
}
for(c=0;c=h;c++)
for(r=1;r=h;r++)
//這句改成:for(r=0;
r
=
h-c;
r++)好點,減少的循環(huán)的次數(shù),加了效率
{
if(c+r==h2*c+4*r==f)
ret
=
printf("\n雞的數(shù)目為%d,兔子的數(shù)目為%d\n\n",c,r);
}
if(
ret
==
39)
/*作用是輸入一次成功后,結束大循環(huán),
可以不要*/
break;
}
}
#include?stdio.h
void?main()
{????int?a,b,c,d;
printf("這是一個用于算雞兔同籠的小程序\n請輸入雞兔的總數(shù)");
scanf("%d",a);
if(a=0)
{
printf("\n請輸入雞兔腳的總數(shù)");
scanf("%d",b);
if(b%2==1)
printf("腳的數(shù)量出現(xiàn)奇數(shù),真奇怪??!\n");
else?if(b=a*4b=a*2)
{
c=(4*a-b)/2;?//?雞的數(shù)目
d=a-c;??//?兔的數(shù)目
if(c*2+d*4==b)
printf("雞有%ld只\n兔有%ld只\n",c,d);?//?c和d反了
else
printf("這個真難,計算機也沒法算!\n");
}
else
printf("輸入雞兔腳的數(shù)量范圍不正確,正確的范圍是%d--%d!\n",a*2,a*4);
}
else
printf("數(shù)量不能為負!\n");
}
雞兔同籠問題,歸根結底是一個數(shù)學問題。用C語言處理數(shù)學問題,無外乎兩種方式。
假定頭的數(shù)量為A, 腳的數(shù)量為B。
一、暴力求解:
//枚舉雞的數(shù)量
int flag = 0;
for(i = 0; i = A; i++) {
j = A - i;
if (i * 2 + j * 4 == B) {
flag = 1;
printf("ans is: %d, %d\n", i, j);
break;
}
}
if (flag == 0) {
puts("No answer!");
}
二、建立數(shù)學模型求解
雞兔同籠問題是個二元一次方程組問題。
X + Y = A
2X + 4Y = B
X = (4A - B) / 2
Y = (B - 2A) / 2
轉換成代碼:
if ( (4 * A - B) % 2 == 0 (B - 2 * A) % 2 == 0) {
printf("ans is: %d, %d\n", (4 * A - B) / 2 , (B - 2 * A) / 2);
} else {
puts("No answer!");
}
#includestdio.h
int main()
{
int a,b,M,N;
printf("請輸入雞兔的總頭數(shù)\n");
scanf_s("%d",a);
printf("請輸入雞兔的總腿數(shù)\n");
scanf_s("%d",b);
scanf_s("%d",M);
M=(2*a)-(b/2);
printf("雞的數(shù)目為%d只");
scanf_s("%d",N);
N=(b/2)-(a);
printf("兔的數(shù)目為%d只");
return 0;
}
我目前是C語言的新手,目前只會做這一類。如果用的是VS(visual studio)編程的話,scanf后必須加_s,這是VS獨有的,其他的編程軟件隨意。