关于##i鸡尾酒疗法#的问题,如何解决?

计蒜客:鸡尾酒疗法
我的结果不对,似乎数据没有全部输入进去,但是不知道哪里出了问题

img

img

img

下面是我的代码:

#include<stdio.h>
int main()
{
    int n,i;
    double dis,re,x,y;
    scanf("%d",&n);
    scanf("%lf %lf",&dis,&re);
    x=re/dis;
    for(i=1;i<n;i++);
    {
        scanf("%lf %lf",&dis,&re);
        y=re/dis;
        if(x-y>0.05)
            printf("worse\n");
        else if(y-x>0.05)
            printf("better\n");
        else printf("same\n");
    }
    return 0;
}

去除第9行for循环的分号即可。


#include<stdio.h>
int main()
{
    int n,i;
    double dis,re,x,y;
    scanf("%d",&n);
    scanf("%lf %lf",&dis,&re);
    x=re/dis;
   // printf("n=%d,dis=%f,re=%f,x=%f\n",n,dis,re,x); 
    //去除for循环后面的分号即可 
    for(i=1;i<n;i++)
    {
    //    printf("i=%d\n",i);
        scanf("%lf %lf",&dis,&re);
        y=re/dis;
       // printf("i=%d,dis=%f,re=%f,y=%f\n",i,dis,re,y); 
        if(x-y>0.05)
            printf("worse\n");
        else if(y-x>0.05)
            printf("better\n");
        else printf("same\n");
    }
    return 0;
}
 

【以下回答由 GPT 生成】

这段代码存在几个问题,导致结果不正确:

  1. xy 没有声明和初始化。
  2. for 循环的终止条件设置错误,多了一个分号。
  3. x 每次循环没有更新。

以下是修改后的代码:

#include <stdio.h>

int main()
{
    int n, i;
    double dis, re, x, y;
    scanf("%d", &n);
    scanf("%lf %lf", &dis, &re);
    x = re / dis;
    for(i = 1; i < n; i++)  // 删除了多余的分号
    {
        scanf("%lf %lf", &dis, &re);
        y = re / dis;
        if(x - y > 0.05)
            printf("worse\n");
        else if(y - x > 0.05)
            printf("better\n");
        else
            printf("same\n");
        x = y;  // 更新 x 的值
    }
    return 0;
}

通过以上修改,问题应该能够得到解决。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^