华为的编程题 大家看看帮我写一个完整的程序 谢啦
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;}