读书人

华为的编程题 大家看看帮小弟我写一个

发布时间: 2012-03-18 13:55:39 作者: rapoo

华为的编程题 大家看看帮我写一个完整的程序 谢啦
1、 农场计数问题(20分)

l 问题描述

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

l 要求实现函数

int GetFowlsNum(int iHeadNum, int iFootNum, int *iChickenNum, int *iRabbitNum)

【输入】iHeadNum: 总共头的数量

iFootNum: 总共脚的数量

【输出】iChickenNum: 鸡的数量

iRabbitNum: 兔子的数量

【返回】 0: 找到符合要求的鸡和兔子的数量

-1: 未找到符合要求的数量

l 示例

输入:iHeadNum =201, iFootNum=604

输出:iChickenNum=100, iRabbitNum=101

返回:0



输入:iHeadNum =201, iFootNum=123

输出:iChickenNum=0, iRabbitNum=0

返回:-1



[解决办法]
[code=C/C++][/code]
int k=0;
for(ChickeNum = 0; ChickeNum < iHeadNum +1;ChickeNum ++ )
{
iRabbitNum = iHeadNum-ChickeNum ;
if(2*ChickeNum +4*iRabbitNum == iFootNum)
{
printf('ChickeNum =%d iRabbitNum = %d',&ChickeNum ,&iRabbitNum );
k=1;
}
else continue
}
ruturn(k);
[解决办法]

C/C++ code
    /*    设有x只鸡,y只兔子    则有:2x+2y=2M;(1)          2x+4y=N; (2)          y=(N-2M)/2; (3)          x=M-y; (4)    */#include "stdafx.h"#include <iostream>using namespace std;int GetFowlsNum(int,int,int *,int *);int _tmain(int argc, _TCHAR* argv[]){    int iHeadNum=0, iFootNum=0,iChickenNum=0,iRabbitNum=0,return_value;    cout<<"Please enter the iHeadNum and iFootNum : ";    cin>>iHeadNum>>iFootNum;    cout<<endl;    return_value=GetFowlsNum(iHeadNum,iFootNum,&iChickenNum,&iRabbitNum);    if(return_value<0)        {            cout<<"未找到符合要求的数量"<<endl;            cout<<"鸡子有:"<<iChickenNum<<"只,兔子有"<<iRabbitNum<<"只"<<endl;        }      if(return_value==0)        cout<<"鸡子有:"<<iChickenNum<<"只,兔子有"<<iRabbitNum<<"只"<<endl;    return 0;    }int GetFowlsNum(int iH ,int iF,int *iC,int *iR){    int i=iF-2*iH;    if(i>0)    {         if( i%2==0)         {  *iC=i/2;            *iR=iH-*iC;         }       return 0;    }    return -1;}
[解决办法]
#include<stdio.h>
#include<conio.h>
int main()
{
int GetFowlsNum(int iHeadNum, int iFootNum, int *iChickenNum, int *iRabbitNum);
int Chicken=0,Rabbit=0; //鸡兔的数量
int iHead,iFootNum,i; //i记录找到了合适的头
int *iChickenNum,*iRabbitNum;
iChickenNum=&Chicken;
iRabbitNum=&Rabbit;
printf("Please input the head and foot numbers\n");
scanf("%d%d",&iHead,&iFootNum);
i=GetFowlsNum(iHead,iFootNum,iChickenNum,iRabbitNum);
if(i>=0)
printf("has found appropriate numbers\n");
else
printf("did not find the appropriate numbers\n");
printf("Chicken:%d\nRabbit:%d\n",Chicken,Rabbit);01
getch();
return 0;
}
int GetFowlsNum(int iHeadNum,int iFootNum,int *iChickenNum,int *iRabbitNum)
{
int y;
if((y=iFootNum-2*iHeadNum)<0||((y%2)!=0)) //脚至少比头的2倍多,鸡兔的个数必须为整数
return -1;
*iRabbitNum=y/2;
*iChickenNum=iHeadNum-*iRabbitNum;
return 0;
}
不知道合不合适?
[解决办法]
C/C++ code
#include<iostream>using namespace std;int GetFowlsNum(int iHeadNum, int iFootNum, int *iChickenNum, int *iRabbitNum){    int a = (4*iHeadNum - iFootNum)/2;    int b = (iFootNum - 2*iHeadNum)/2;    iChickenNum = &a;    iRabbitNum = &b;    if(a <0 || b <0)    {        cout<<"0   "<<"0"<<endl;        return -1;    }    else    {        cout<<*iChickenNum<<" "<<*iRabbitNum<<endl;        return 0;    }}int main(){    int *a,*b;    GetFowlsNum(201,604,a,b);    GetFowlsNum(201,123,a,b);    return 0;} 

读书人网 >C语言

热点推荐