C语言小鱼游泳的问题

问题遇到的现象和发生背景

img

用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
#include 

int main(void)
{
    int x;
    long int n,sum,r,flag=0;
    scanf("%d %ld",&x,&n);
    while(n>7)
    {
            n-=7;
            flag++;
    }  
    flag=flag*5*250;
    if(x+n!=7 || x+n!=6)
        r=n*250;
    else if(x+n==6)
        r=(n-1)*250;
    else if(x+n==7)
        r=(n-2)*250;
    sum=flag+r;
    printf("%ld\n",sum);
    return 0;
}

运行结果及详细报错内容

自己试了几个例子对了,但平台却一直报错,不清楚出错在哪?

你下面三种情况没有判断x+n>7的情况

你漏掉了一些情况,可以参考下列代码实现

#include <stdio.h>

int main()
{
    // 定义变量
    int x, n;
    int total_distance = 0;  // 累计游泳距离

    // 输入x和n
    printf("请输入周x:");
    scanf("%d", &x);
    printf("请输入n天:");
    scanf("%d", &n);

    // 计算累计游泳距离
    for (int i = 1; i <= n; i++)
    {
        if ((x + i - 1) % 7 < 2)  // 周末或者周五
        {
            total_distance += 0;
        }
        else if ((x + i - 1) % 7 < 5)  // 周一到周四
        {
            total_distance += 250;
        }
    }

    // 输出累计游泳距离
    printf("小鱼在%d天之内一共游了%d公里\n", n, total_distance);

    return 0;
}

你考虑的太复杂了,结果反而漏掉了很多种情况
其实题目就是让你求一段时间内到底有几个周六周日,n天中排除掉m个周六周日,那么游的距离不就等于(n-m)*250吗
那最简单的你循环一下判断是周六周日就++,或者你提炼出了公式直接套也行


#include <stdio.h>

int main(void)
{
    int x,i;
    long int n, distance = 0;
    scanf("%d %ld", &x, &n);
    while(n>0)
    {
        if (x == 6)
        {
            x += 1;
            n--;
        }
        else if (x == 7)
        {
            x = 1;
            n--;
        }
        else
        {
            x += 1;
            n--;
            distance += 250;
        }
    }
    printf("%d\n", distance);
    return 0;
}

刚想到的这个,请问这个可行吗?