程序有啥缺点吗?拿不了满分

img

img

#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);
}