C语言编程问题解答:为什么我的代码无法满分?

你写的代码逻辑基本正确,但在计算 time=2.0*x/50+num*1.5; 时,使用了浮点数运算,而最后输出结果时却使用了整数的格式化输出 printf('%d',(int)ceil(all));。这会导致结果被截断为整数部分,而不是向上取整。

解决方案

  1. 使用ceil函数向上取整: 将输出语句修改为 printf('%d', (int)ceil(all));,这样可以将结果正确地向上取整后输出。
  2. 添加math.h头文件: 在程序一开始加上 #include <math.h> 头文件,以便使用 sqrt 函数和 ceil 函数。

修改后的代码:

#include <stdio.h>
#include <math.h>

int main() {
    int n;
    double time;
    double all = 0;
    scanf('%d', &n);
    int a[n][3];
    for (int i = 0; i < n; i++) {
        for (int k = 0; k < 3; k++) {
            scanf('%d', &a[i][k]);
        }
    }
    for (int i = 0; i < n; i++) {
        int num = a[i][2];
        double x = sqrt(a[i][0] * a[i][0] + a[i][1] * a[i][1]);
        time = 2.0 * x / 50 + num * 1.5;
        all += time;
    }
    printf('%d', (int)ceil(all));
    return 0;
}

这样修改后,你的代码应该可以得到满分了!

C语言编程问题解答:为什么我的代码无法满分?

原文地址: https://www.cveoy.top/t/topic/b17V 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录