星痕࿐ 2024-06-10 15:49 采纳率: 46.2%
浏览 1

问一个C语言问题,我这样写对吗?

img


#include <stdio.h>

int main(void) {
    float total_cost, current_savings = 0, annual_salary, portion_saved;
    scanf("%f", &total_cost);
    scanf("%f", &annual_salary);
    scanf("%f", &portion_saved);
    int month = (0.3 * total_cost) / (annual_salary * portion_saved / 1200);
    printf("%.2f,%.2f,%d", 0.3 * total_cost, (annual_salary * portion_saved / 12), month + 1);
    return 0;

}
  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-10 15:49
    关注

    引自免费微信小程序:皆我百晓生

    关于你提供的C语言代码,有几个关键点需要注意以确保其正确性与高效性。首先,代码中的逻辑计算似乎是为了计算购买房屋所需首付、每月储蓄额以及达到首付目标所需的月数。然而,存在一些错误和可以优化的地方。以下是针对你代码的具体分析和修改建议:

    1. 计算月数的公式

      • 原始公式中,portion_saved 应该以比例(例如0.1代表10%)而非百分比输入。因此,计算月数时不应除以1200,而应除以12。
      • 此外,由于月数应该是整数,但在实际计算中可能会得到小数,因此应该使用向上取整的函数 ceil() 来确保结果的准确性。
    2. 输出格式

      • 输出格式在注释中被提及,但实际代码中并未遵循。应当确保输出符合要求,即输出三个数字,分别表示首付、月存款、存够首付的月份数目,且每个数值都保留两位小数。

    基于以上分析,以下是修改后的代码:

    #include <stdio.h>
    #include <math.h> // 添加此头文件以使用 ceil 函数
    
    int main(void) {
        float total_cost, annual_salary, portion_saved;
        int month;
    
        scanf("%f", &total_cost);
        scanf("%f", &annual_salary);
        scanf("%f", &portion_saved); // 注意此处输入的是比例,不是百分比
    
        float down_payment = 0.3 * total_cost;
        float monthly_savings = annual_salary * portion_saved / 12; // 计算每月储蓄额
    
        // 使用 ceil 函数确保月数为最短整数月
        month = ceil(down_payment / monthly_savings);
    
        // 输出结果,注意保留两位小数
        printf("%.2f,%.2f,%d\n", down_payment, monthly_savings, month);
    
        return 0;
    }
    

    这个修改后的版本应该能更准确地计算出所需的数据,并按照指定的格式输出结果。特别注意,ceil() 函数的引入确保了即使计算出的小数部分也会被正确处理,从而得到正确的月数。同时,代码中的注释和变量命名保持清晰,有助于理解程序的逻辑和流程。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 6月10日

悬赏问题

  • ¥15 Xsheii7我安装这个文件的时候跳出来另一个文件已锁定文件的无一部分进程无法访问。这个该怎么解决
  • ¥15 unity terrain打包后地形错位,跟建筑不在同一个位置,怎么办
  • ¥15 FileNotFoundError 解决方案
  • ¥15 uniapp实现如下图的图表功能
  • ¥15 u-subsection如何修改相邻两个节点样式
  • ¥30 vs2010开发 WFP(windows filtering platform)
  • ¥15 服务端控制goose报文控制块的发布问题
  • ¥15 学习指导与未来导向啊
  • ¥15 求多普勒频移瞬时表达式
  • ¥15 如果要做一个老年人平板有哪些需求