#include<stdio.h>
int main()
{
int a, b, n, i;
int c = 0;
scanf("%d %d %d", &a, &b, &n);
for( i = 0; c < n; )
{
i++;
int f = i % 7;
if (f < 6)
c = (i / 7) * (a * 5 + b * 2) + (i % 7) * a;
else if (f == 6)
c = (i / 7) * (a * 5 + b * 2) + a * 5 + b;
}
printf("%d", i);
}
还希望大家帮我看看
主要有四个缺点(编码层面的缺点):
1、没有进行变量的初始化:在代码开始处,整型变量 a、b、n 和 i 被声明和定义,但是没有进行任何的初始化操作。这可能会导致在编程过程中出现一些难以发现的错误。
2、变量名不够直观:变量名 a 和 b 在代码中出现了多次,但是并不能明确地表达出它们代表的含义。这可能会导致在编写更复杂的程序时出现困惑。
3、循环过程不够直观:在 for 循环中,迭代变量 i 的值被不断递增,直到计算出 c 的值超过了 n。然而,这个过程并不够直观,可能会导致读者需要阅读代码多次才能理解这一部分是如何实现的。
4、计算 c 的逻辑比较繁琐:计算 c 的逻辑非常复杂,需要分别判断星期几的情况,比较不直观。此外,使用了多个乘法和加法计算,难以理解,也可能导致计算错误。
优化后的代码如下:
#include <stdio.h>
int main()
{
// 初始化变量
int workday_count = 5;
int weekend_count = 2;
int a, b, n, i = 0;
int cost = 0;
scanf("%d %d %d", &a, &b, &n);
// 计算总花费
while (cost < n) {
i++;
if (i % 7 < 6)
// 工作日
cost += a * workday_count + b * weekend_count;
else
// 周末
cost += a * (workday_count + 5) + b * 2;
}
printf("%d", i);
return 0;
}
程序修改完成,请参考
#include <stdio.h>
int main()
{
int a, b, n, i;
int c = 0;
scanf("%d %d %d", &a, &b, &n);
i=n%7;
if(i==0)
{
c=(n/7)*(5*a+2*b);
}
else
{
c=(n/7)*(5*a+2*b)+5*a+b;
}
printf("%d", c);
}