日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

PTA6-1 鸡兔同笼问题 (20分)

發(fā)布時(shí)間:2023/12/18 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PTA6-1 鸡兔同笼问题 (20分) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

6-1 雞兔同籠問題 (20分)

孫子算經(jīng)》記載:“今有雉兔同籠,上有三十五頭,下有九十四足,問雉兔各幾何?”

函數(shù)原型
int ChickenRabbit(int *chicken, int *rabbit, int head, int foot);
說明:head 和 foot 是頭和腳的數(shù)量,chicken 和 rabbit 是指示雞和兔數(shù)量的指針。若問題有解,則將雞和兔的數(shù)量保存到 chicken 和 rabbit 所指示的變量中,函數(shù)值為1(真);否則不改變 chicken 和 rabbit 所指示的變量,函數(shù)值為0(假)。

#include <stdio.h>int ChickenRabbit(int *chicken, int *rabbit, int head, int foot);int main() {int h, f, c, r;scanf("%d%d", &h, &f);if (ChickenRabbit(&c, &r, h, f)){printf("%d %d\n", c, r);}else{puts("None");}return 0; }/* 你的提交代碼將被嵌在這里 */

這里有兩種方法:

  • 數(shù)學(xué)函數(shù)法( 不推薦)
    這里我們用數(shù)學(xué)公式來表示雞兔的個(gè)數(shù),最后通過判斷公式中求解的值是否為整數(shù)來決定輸出結(jié)果,今天我在PTA 的上機(jī)練習(xí)中就遇到了這種情況的問題(而老師給我的解釋是要考慮的數(shù)學(xué)情況有很多),比如:
    給定的頭的個(gè)數(shù)不能比腳多;
    當(dāng)用公式求得的值為負(fù)值時(shí)便不能正常輸出( 屬于bug)
    我寫的代碼如下:
  • int ChickenRabbit(int *chicken, int *rabbit, int head, int foot) {int m,n;m=(foot-2*head)/2;//相當(dāng)于數(shù)學(xué)公式中的運(yùn)算,可以設(shè)m,n來表示n=head-m;if((foot-2*head)/2==(foot-2*head)*1.0/2)//判斷公式計(jì)算的值是否為整數(shù){*rabbit=m;*chicken=n;return 1;}else{ return 0; } }

    2.循環(huán)遍歷法

    int ChickenRabbit(int *chicken, int *rabbit, int head, int foot) {int i;for(i=0;i<head;i++)//與上面的區(qū)別在于是將兔的個(gè)數(shù)從0到head逐個(gè)試{if(2*i==(foot-2*head)){*rabbit=i;*chicken=head-i;break;} }if(i<=head)//另外需要考慮好是由break結(jié)束查值還是用<=head來查值return 1;elsereturn 0;}

    總結(jié)

    以上是生活随笔為你收集整理的PTA6-1 鸡兔同笼问题 (20分)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。