當前位置:首頁 » 編程語言 » c語言男兔子

c語言男兔子

發布時間: 2025-03-01 05:14:22

『壹』 c語言編程:兔子繁殖問題

如圖,此題難度較大,要用到隊列(我優化為循環隊列)(此題有兩個提問,都是我回答所以一樣)

#include<stdio.h>
#defineLIFETIME13 //兔子壽命,單位半年(年齡小於此!)
#defineINITNUM1 //初始兔子有多少對
main()
{
inthY=0; //兔子歷(就是時刻表):單位:半年
intnum[LIFETIME]={INITNUM,0}; //存儲不同年齡兔子的對數(初始為0歲1對)
//babyI下標代表0歲,往前年齡增大,越過數組下界跳到上界,所以babyI+1反而是最老兔子
intbabyI=0; //0歲兔子對應下標,年齡單位為半年
intloveNum=0; //可生育兔子數量
inttotalNum=INITNUM; //總計兔子數量
intage1I=LIFETIME-2; //1歲兔子對應下標(開始能生育)
intage5_5I=LIFETIME-11; //1歲、5.5歲兔子對應下標(剛好能生育、剛好不能生育年齡)
intn=30; //輸入n半年後!
while(hY<=n){
inti,j; //遍歷臨時變數。①展示兔子數量。
printf("第%.1f年 總計:%d對 可生育:%d對 ",(float)hY/2,totalNum,loveNum);
/*
for(i=0;i<LIFETIME;i++){
printf("%.1f歲 ",(float)i/2); //列印表頭
//printf("%d,%.1f歲 ",i,(float)(++i)/2); //列印表頭
}printf("單位:對 "); //換行*/
i=babyI; //顯示各年齡對應數量
j=0;
do{
//printf("%d ",num[i]);
if(hY<21){ //僅用於加 顯示
if((++j)%2==0)printf(" ");}
printf("%d",num[i]);
if(i>0)i--; //下標循環往左移動
elsei=LIFETIME-1;
}while(i!=babyI);
printf(" "); //換行

//②半年後
hY++; //時間過去半年
age1I=(age1I+1)%LIFETIME; //1歲數量(對)對應下標
age5_5I=(age5_5I+1)%LIFETIME;//5.5歲數量(對)對應下標
//printf("%d,%d ",age1I,age5_5I);
loveNum+=num[age1I]-num[age5_5I]; //可生育兔子數量(對)

babyI=(babyI+1)%LIFETIME; //新babyI設為原最老兔子的下標,
totalNum+=loveNum-num[babyI]; //每對大兔子可以生一對小兔子-死亡的老兔
num[babyI]=loveNum; //老兔的位置換成新兔
}
}

『貳』 C語言編程:兔子繁殖問題

思路不要亂。這個月的兔子只有兩個來源,一個來源是上個月的老兔子,另一個來源是這個月剛出生的兔子,而這個月剛出生的兔子,就是兩個月前的所有兔子,因為兩個月前的所有兔子,無論兩個月前就是老的,還是兩個月前剛生的,到了這個月就全部具有生育能力,每隻都可以下一對兒,所以可以得到一個遞推關系f(n) = f(n - 1) + f(n - 2)。那麼程序自然是

longfun(intmonth)
{
if(month==1||month==2)
return1;
else
returnfun(month-1)+fun(month-2);
}
//ConsoleApplication1.cpp:定義控制台應用程序的入口點。
intmain()
{
intMon;
longNum;
scanf("%d",&Mon);
Num=fun(Mon);
printf("第%d月共有兔子%ld只 ",Mon,Num);
return0;
}

至於你的程序,很難把它改正確,因為這題壓根不是那個思路,那樣想會越想越亂的

『叄』 C語言編寫雞兔同籠的問題

#include"stdio.h"
int main()
{
int M,N,x,y; /*x表示雞數,y表示兔數*/
printf("請輸入總頭數和總腳數:");
scanf("%d%d",&M,&N);
x=(4*M-N)/2;
y=(N-2*M)/2;
if(x+y==M&&2*x+4*y==N) printf("%d %d",x,y);
else printf("0");
}
希望採納

『肆』 C語言編程題目 兔子繁衍問題

方法一、用遞歸。

方法二、把兔子定義成結構,每個兔子自帶計時器變數,繁殖就是新建節點,構建結構鏈表。每次循環遍歷所有節點的計時變數大於3的就新建一個節點插入鏈表。最後統計節點數量。

我用方法1來寫:

#include <stdio.h>

int childbirth(int bMth,int gMth)//bMth:調用時傳0,gMth:經過的最大月數


{


int cnt=0,n=bMth,num=2;


while(n++<gMth+1)


if(cnt++>2)


num=num+childbirth(n,gMth+1);


return num;


}

int main()


{


int i,n;


printf("請輸入經過多少月:"),scanf("%d",&n);


for(i=1;i<=n;i++)


printf("經過%d個月後:兔子數量為:%d ",i,childbirth(0,i));


return 0;


}

『伍』 c語言:兔子繁殖問題

兔子的對數,就是Fibonacci數列
#include <stdio.h>
long f(long n)
{
if(n<3) return 1;
else return f(n-2)+f(n-1);
}
void main()
{
printf("一年後,有兔子%ld對.\n", f(12));
getch();
}
---------------------------------------------------------
1 1 2 3 5 8 13 21 34 55 89 ...

『陸』 C語言編程:兔子繁殖問題

如圖,此題難度較大,要用到隊列(我優化為循環隊列)

#include<stdio.h>
#defineLIFETIME13 //兔子壽命,單位半年(年齡小於此!)
#defineINITNUM1 //初始兔子有多少對
main()
{
inthY=0; //兔子歷(就是時刻表):單位:半年
intnum[LIFETIME]={INITNUM,0}; //存儲不同年齡兔子的對數(初始為0歲1對)
//babyI下標代表0歲,往前年齡增大,越過數組下界跳到上界,所以babyI+1反而是最老兔子
intbabyI=0; //0歲兔子對應下標,年齡單位為半年
intloveNum=0; //可生育兔子數量
inttotalNum=INITNUM; //總計兔子數量
intage1I=LIFETIME-2; //1歲兔子對應下標(開始能生育)
intage5_5I=LIFETIME-11; //1歲、5.5歲兔子對應下標(剛好能生育、剛好不能生育年齡)
intn=30; //輸入n半年後!
while(hY<=n){
inti,j; //遍歷臨時變數。①展示兔子數量。
printf("第%.1f年 總計:%d對 可生育:%d對 ",(float)hY/2,totalNum,loveNum);
/*
for(i=0;i<LIFETIME;i++){
printf("%.1f歲 ",(float)i/2); //列印表頭
//printf("%d,%.1f歲 ",i,(float)(++i)/2); //列印表頭
}printf("單位:對 "); //換行*/
i=babyI; //顯示各年齡對應數量
j=0;
do{
//printf("%d ",num[i]);
if(hY<21){ //僅用於加 顯示
if((++j)%2==0)printf(" ");}
printf("%d",num[i]);
if(i>0)i--; //下標循環往左移動
elsei=LIFETIME-1;
}while(i!=babyI);
printf(" "); //換行

//②半年後
hY++; //時間過去半年
age1I=(age1I+1)%LIFETIME; //1歲數量(對)對應下標
age5_5I=(age5_5I+1)%LIFETIME;//5.5歲數量(對)對應下標
//printf("%d,%d ",age1I,age5_5I);
loveNum+=num[age1I]-num[age5_5I]; //可生育兔子數量(對)

babyI=(babyI+1)%LIFETIME; //新babyI設為原最老兔子的下標,
totalNum+=loveNum-num[babyI]; //每對大兔子可以生一對小兔子-死亡的老兔
num[babyI]=loveNum; //老兔的位置換成新兔
}
}

『柒』 兔子繁殖,C語言

#include<stdio.h>
intmain(void)
{
intn,i,a,b,c;
a=0;
b=1;
i=1;
printf("請輸入兔子對數n=");
scanf("%d",&n);
while(b<n){
c=a+b;/*while裡面一次循環是1個月*/
a=b;
b=c;
i++;
}
printf("至少%d月",i);
return0;
}

『捌』 C語言編程 兔子鴿子問題

判斷error的情況有問題。其實這題列出公式就可以解答了:
設x只鴿子,已知兔子,則:
x+y=n;
2x+4y=m;
解得:x=2n-m/2,y=m/2-n。

因為x,y都是非負整數,所以 m/2 必須是一個整數,也就是m必須是偶數。同時:
x=2n-m/2>=0,解得4n>=m;
y=m/2-n>=0,解得m>=2n;
因此 2n<=m<=4n,且m是偶數。這就是判斷是否「Error」的條件。

#include <stdio.h>
int main(int argc, char *argv[])
{
unsigned int n,m;
while(scanf("%d%d",&n,&m)&&!(m==0&&n==0))
{
if(m%2!=0 || m<2*n || m>4*n)
printf("Error\n");
else
printf("%d %d\n",(2*n-m/2),(m/2-n));
}
return 0;
}

『玖』 c語言 雞兔同籠

#include<stdio.h>

int main()

{ int f,i;

scanf("%d",&f);

printf("雞 兔 ");

for(i=1;i<f/4;i++)

printf("%d %d ",(f-4*i)/2,i);

return 0;

}

熱點內容
pro文件中預編譯 發布:2025-03-01 08:22:29 瀏覽:614
游戲伺服器推薦山河雲 發布:2025-03-01 08:17:17 瀏覽:471
linux進程的地址空間 發布:2025-03-01 08:17:08 瀏覽:387
十指樹演算法 發布:2025-03-01 08:16:35 瀏覽:744
c語言指定位 發布:2025-03-01 08:11:44 瀏覽:46
怎麼放wifi伺服器才能穿牆 發布:2025-03-01 08:09:30 瀏覽:409
c語言開發web 發布:2025-03-01 08:06:42 瀏覽:322
鴻鵠源碼 發布:2025-03-01 08:03:08 瀏覽:929
生命密碼多少階 發布:2025-03-01 08:02:25 瀏覽:996
chrome下載文件夾 發布:2025-03-01 08:01:46 瀏覽:82