一道华为编程题

1、 农场计数问题(20分)

问题描述:

已知某农场中有一群鸡和兔子,总共有M个头和N只脚,计算总共有多少鸡和兔子


要求实现函数:
int GetFowlsNum(int iHeadNum, int iFootNum, int *iChickenNum, int *iRabbitNum)
【输入】iHeadNum: 总共头的数量         iFootNum: 总共脚的数量
【输出】iChickenNum: 鸡的数量          iRabbitNum: 兔子的数量
【返回】 0: 找到符合要求的鸡和兔子的数量         -1: 未找到符合要求的数量

示例
输入:iHeadNum =201, iFootNum=604
输出:iChickenNum=100, iRabbitNum=101
返回:0
 
输入:iHeadNum =201, iFootNum=123
输出:iChickenNum=0, iRabbitNum=0

返回:-1


程序实现:

/*
  Name: GetFowlsNum.cpp
  Copyright: Candy@2012
  Author: Candy
  Date: 29/02/12 10:51
  Description: int GetFowlsNum(int iHeadNum, int iFootNum, int *iChickenNum, int *iRabbitNum)
 【input】iHeadNum: the total number of heads, iFootNum: the total number of foot

 【output】iChickenNum: the total number of chicken, iRabbitNum: the total number of rabbit
 【return】 0: find the right number of chicken and rabbit,

           -1: can not find the right bunber of chicken and rabbit,

  example:

       input:iHeadNum =201, iFootNum=604, output:iChickenNum=100, iRabbitNum=101, return:0

       input:iHeadNum =201, iFootNum=123, output:iChickenNum=0, iRabbitNum=0, return:-1 

 */

#include <stdio.h>
#include <stdlib.h>

#define HeadNum 201
#define FootNum 604

int GetFowlsNum(int iHeadNum, int iFootNum, int *iChickenNum, int *iRabbitNum)
{
    int k = 0;
    
    *iChickenNum =0;
    *iRabbitNum = 0;
    
    for (*iChickenNum = 0; *iChickenNum < (iHeadNum+1); (*iChickenNum)++)
    {
        *iRabbitNum =  iHeadNum - *iChickenNum;
        if ((2**iChickenNum + 4**iRabbitNum) == iFootNum)
        {
             printf("The number of chicken is %d, and the number of rabbit is %d\n\n", *iChickenNum, *iRabbitNum);
             k = 1;
        }
        
    }
    
    return k;
}

int main (void)
{
    int ChickenNum = 0, RabbitNum = 0;
    
    if (!GetFowlsNum(HeadNum, FootNum, &ChickenNum, &RabbitNum))
       printf("Can not find the right number of chicken and rabbit\n\n");
       
       system("pause");
       
    return 0;    
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值