#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;
}
刚想到的这个,请问这个可行吗?