當前位置:首頁 » 編程語言 » c語言怎麼解決雞兔同籠問題
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言怎麼解決雞兔同籠問題

發布時間: 2022-10-16 03:52:00

A. c語言演算法,雞兔同籠

已知雞和兔的總數量為n,總腿數為m,輸入n和m,依次輸出雞的數目和兔的數目。如果無解則輸出No answer。

輸入:

兩個整數b和m,如上所述。

輸出:

雞的數目和兔的數目。

我們假設a = 雞只數,b = 兔只數(兔的腳數×總只數-總腳數)÷(兔的腳數-雞的腳數)=雞的只數,a = ( 4*n - m )/2。

總只數-雞的只數=兔的只數,b = n - a。

具體代碼:

#include "stdio.h"

int main() {

int a,b,n, m;

// a雞的數量

// b兔的數量

// n雞兔總數

// m總腳數

scanf("%d %d", &n,&m);

a = (4 * n - m) / 2;//算出雞的數量

b = n - a;//算出兔的數量

if (a <= 0 || b <= 0) {

//結果小於等於0,答案不成立,無解

printf("No answer");

} else {

//結果大於0

printf("%d %d", a, b);

}

return 0;

}

(1)c語言怎麼解決雞兔同籠問題擴展閱讀:

雞兔同籠解題思路:如果先假設它們全是雞,於是根據雞兔的總數就可以算出在假設下共有幾只腳,把這樣得到的腳數與題中給出的腳數相比較,看看差多少,每差2隻腳就說明有1隻兔,將所差的腳數除以2,就可以算出共有多少只兔。

概括起來,解雞兔同籠題的基本關系式是:兔數=(實際腳數-每隻雞腳數×雞兔總數)÷(每隻兔子腳數-每隻雞腳數)。類似地,也可以假設全是兔子。

B. 想用c語言解答雞兔同籠,怎麼做

代碼和運行實況見圖:

C. C語言編寫雞兔同籠的問題

#include<stdio.h>
int main()
{
int a,b,M,N;
printf("請輸入雞兔的總頭數\n");
scanf_s("%d",&a);
printf("請輸入雞兔的總腿數\n");
scanf_s("%d",&b);
scanf_s("%d",&M);
M=(2*a)-(b/2);
printf("雞的數目為%d只");
scanf_s("%d",&N);
N=(b/2)-(a);
printf("兔的數目為%d只");
return 0;
}
我目前是C語言的新手,目前只會做這一類。如果用的是VS(visual studio)編程的話,scanf後必須加_s,這是VS獨有的,其他的編程軟體隨意。

D. 用C語言編寫雞兔同籠問題

#include
<stdio.h>
void
main(
)
{
int
ret
=
0;
//
表示最後一個printf的返回值
while(1)
{
int
h,f,c,r;
printf("請輸入頭的數目:");
scanf("%d",&h);
printf("\n請輸入腳的數目(必須為偶數):");
scanf("%d",&f);
while(f%2!=0
&&
f
!=
0
&&
h
!=
0)
//這里的不等於的條件可以不加
{
printf("\n輸入腳的數目為奇數,請重新輸入腳的數目(必須偶數):");
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++)好點,減少的循環的次數,加了效率
{
if(c+r==h&&2*c+4*r==f)
ret
=
printf("\n雞的數目為%d,兔子的數目為%d\n\n",c,r);
}
if(
ret
==
39)
/*作用是輸入一次成功後,結束大循環,
可以不要*/
break;
}
}

E. C語言雞兔同籠問題

你的程序寫得太復雜了。還是用以下的程序 看一下吧?

#include<stdio.h>

int main()

{ int a,b,c,d;

printf("多少頭:");

scanf("%d",&c);

printf("多少腳:");

scanf("%d",&d);

b=(d-2*c)/2;

a=c-b;

printf("有%d只雞,%d只兔 ",a,b);

return 0;

}

F. 雞兔同籠的問題 c語言怎麼樣編寫

1、編寫思路如下:

假設有x只雞,y只兔,兩者一共有m只頭,n只腳,則有:

x + y = m ; 2 * x + 4 * y = n ;

即得到關系式,x + 2y =n/2 , x + y = m , y = n/2 - m , x = 2 * m - n/2。

2、代碼及注釋如下:

#include<stdio.h>

main ( )

{

int a, b ;

printf("請分別輸入動物頭與腳的數目: ");

scanf("%d%d",&a,&b); //頭數為a, 腳數目為b;

printf("一共有%d只雞,%d只兔子 ",b/2-a,2 * a - b/2);

}

(6)c語言怎麼解決雞兔同籠問題擴展閱讀:

常見雞兔同籠類型問題:

1、班主任張老師帶五年級(2)班50名同學栽樹,張老師栽5棵,男生每人栽3棵,女生每人栽2棵,總共栽樹120棵,問幾名男生,幾名女生?

2、大油瓶每瓶裝4千克,小油瓶2瓶裝1千克,現有100千克油裝了共60個瓶子。問大小油瓶各多少個?

3、小毛參加數學競賽,共做20道題,得67分,已知做對一道得5分,不做得0分,錯一題扣1分,又知道他做錯的題和沒做的同樣多。問小毛做對幾道題?

4、有蜘蛛,蜻蜓,蟬三種動物共18隻,共有腿118條,翅膀20對(蜘蛛8條腿;蜻蜓6條腿,2對翅膀;蟬6條腿,1對翅膀),三種動物各幾只?

G. c語言解決雞兔同籠問題

多次修改後面有個精減版的
#include

void
main(
)
{
int
ret
=
0;
//
表示最後一個printf的返回值
while(1)
{
int
h,f,c,r;
printf("請輸入頭的數目:");
scanf("%d",&h);
printf("\n請輸入腳的數目(必須為偶數):");
scanf("%d",&f);
while(f%2!=0
&&
f
!=
0
)
//加上一個輸入0值繼續的條件,這里的while
循環可以不要了,後面的兩個循環,再加上if的判斷條件,已經解決了這里不為偶數的問題(個人認為,驗證過了)
{
printf("\n輸入腳的數目為奇數,請重新輸入腳的數目(必須偶數):");
scanf("%d",&f);
}
while(f<2*h
&&
h!=
0)//同上
{
printf("\n輸入腳的數目過小,請輸入腳的數目(必須偶數):");
scanf("%d",&f);
/*
在這里加上
if(
f
%2
!=
0)
continue;
*/
/*作用是輸入的不是偶數,就要重新輸入
*/
}
while(f>4*h&&h!=0)//同上
{
printf("\n輸入腳的數目過大,請輸入腳的數目(必須偶數):");
scanf("%d",&f);
/
*
if(
f
%
2
!=
0)
continue;
*/
/*作用同上*/
}
for(c=0;c<=h;c++)
for(r=1;r<=h;r++)
//這句改成:for(r=0;
r
<=
h-c;
r++)好點,減少的循環的次數,加了效率
{
if(c+r==h&&2*c+4*r==f)
ret
=
printf("\n雞的數目為%d,兔子的數目為%d\n\n",c,r);
}
if(
ret
==
39)
/*作用是輸入一次成功後,結束大循環,
可以不要*/
break;
}
}
/***********************************************************************/
#include

void
main(
)
{
int
ret
=
0;
//
表示最後一個printf的返回值
while(1)
{
int
h,f,c,r;
printf("請輸入頭的數目:");
scanf("%d",&h);
printf("\n請輸入腳的數目(必須為偶數):");
scanf("%d",&f);
while(f%2!=0
&&
f
!=
0
&&
h
!=
0)
//這里的不等於的條件可以不加
{
printf("\n輸入腳的數目為奇數,請重新輸入腳的數目(必須偶數):");
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++)好點,減少的循環的次數,加了效率
{
if(c+r==h&&2*c+4*r==f)
ret
=
printf("\n雞的數目為%d,兔子的數目為%d\n\n",c,r);
}
if(
ret
==
39)
/*作用是輸入一次成功後,結束大循環,
可以不要*/
break;
}
}

H. 雞兔同籠的問題 c語言怎麼樣編寫

輸入說明:
輸入為兩個正整數,第一個為
M
的值,第二個為
N
的值,用空格分隔。
輸出說明:
若有解,輸出兩個整數,用空格分隔,第一個代表雞的只數,第一個代表兔子的只數;若無解,直接輸出一個
0。
演算法:以列舉法寫程序,讓計算機從雞為0開始執行計算,利用循環語句計算大量次數後,得出最終結果。
具體程序為:
#include
int
main()
{int
chicken,rabbit;//雞,兔子
int
M,N;//頭,腳
printf("M=,N=");
scanf("%d
%d",&M,&N);
for(chicken=0;chicken<=M;chicken++)//雞的數量從0到總頭數M嘗試
{if(chicken*2+rabbit*4==N)//如果總腳數與輸入的總腳數相同
{printf("%d
%d",chicken,rabbit);//分別輸出雞、兔
return
0;//停止程序}}//for執行完表示找不到
printf("0");return
0;}
(8)c語言怎麼解決雞兔同籠問題擴展閱讀:
雞兔同籠問題演算法有很多種,編寫出的程序不盡相同。下面列舉幾種演算法,編寫程序會更為簡單一些。
有若干只雞兔同在一個籠子里,從上面數,有35個頭,從下面數,有94隻腳。問籠中各有多少只雞和兔?
(1)假設全是雞:2×35=70(只),雞腳比總腳數少:94-70=24
(只)
兔子比雞多的腳數:4-2=2(只),兔子的只數:24÷2=12
(只),雞的只數:35-12=23(只)
假設全是兔子:4×35=140(只),兔子腳比總數多:140-94=46(只)
兔子比雞多的腳數:4-2=2(只),雞的只數:46÷2=23(只),兔子的只數:=35-23=12(只)(2)設雞有x只,兔有y只。
解得
參考資料:雞兔同籠(一種數學奧數題目)_網路

I. 雞兔同籠問題C語言程序編寫

雞兔同籠,共有35個頭,94條腿,求雞和兔子各有多少只?

#include<bits/stdc++.h>
using namespace std;
int main()
{
int a,b,c,d;
a=35,b=94;
c=2*a-b/2;
d=b/2-a;
cout<<"c="<<c<<"d="<<d<<endl;
return 0;
}

c=23 d=12

拓展資料:

C語言是一門通用計算機編程語言,廣泛應用於底層開發。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。

盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平台的特性,以一個標准規格寫出的C語言程序可在許多電腦平台上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平台。

二十世紀八十年代,為了避免各開發廠商用的C語言語法產生差異,由美國國家標准局為C語言制定了一套完整的美國國家標准語法,稱為ANSI C,作為C語言最初的標准。 目前2011年12月8日,國際標准化組織(ISO)和國際電工委員會(IEC)發布的C11標準是C語言的第三個官方標准,也是C語言的最新標准,該標准更好的支持了漢字函數名和漢字標識符,一定程度上實現了漢字編程。

C語言是一門面向過程的計算機編程語言,與C++,Java等面向對象的編程語言有所不同。

其編譯器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。

參考資料:C語言_網路