快乐打码 2022-12-11 14:14 采纳率: 69%
浏览 36
已结题

请指导,不知道怎么写了,不对,我这样写了

《孙子算经》记载:“今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?”

函数原型
int ChickenRabbit(int *chicken, int *rabbit, int head, int foot);
说明:head 和 foot 为头和脚的数量,chicken 和 rabbit 为指示鸡和兔数量的指针。若问题有解,则将鸡和兔的数量保存到 chicken 和 rabbit 所指示的变量中,函数值为 1(真);否则不改变 chicken 和 rabbit 所指示的变量,函数值为 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;
}

/* 你的提交代码将被嵌在这里 */

输入样例1
35 94
输出样例1
23 12
输入样例2
30 71
输出样例2
None
我写的

int ChickenRabbit(int *chicken, int *rabbit, int head, int foot){
    int i,j,t=0;
    for(i=0;i<head;i++){
        for(j=0;j<head;j++){
            if(i+j==head&&2*i+4*j==foot){
                *chicken=&i;
                *rabbit=&j;
               t=1;
            }else t=0;
        }
    }
   if(t==1) return (*chicken,*rabbit);

}


  • 写回答

1条回答 默认 最新

  • qzjhjxj 2022-12-11 14:46
    关注

    修改如下,供参考:

    #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;
    }
    /* 你的提交代码将被嵌在这里 */
    int ChickenRabbit(int *chicken, int *rabbit, int head, int foot)
    {
        int chick, rab;
        chick = (4 * head - foot) / 2;
        rab = head - chick;
        if (foot % 2 == 1 || chick < 0 || rab < 0)
            return 0;
        else{
            *chicken = chick;
            *rabbit  = rab;
            return  1;
        }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月19日
  • 已采纳回答 12月11日
  • 创建了问题 12月11日