C语言编程问题解答:为什么我的代码无法满分?
C语言编程问题解答:为什么我的代码无法满分?
你写的代码逻辑基本正确,但在计算 time=2.0*x/50+num*1.5; 时,使用了浮点数运算,而最后输出结果时却使用了整数的格式化输出 printf('%d',(int)ceil(all));。这会导致结果被截断为整数部分,而不是向上取整。
解决方案
- 使用
ceil函数向上取整: 将输出语句修改为printf('%d', (int)ceil(all));,这样可以将结果正确地向上取整后输出。 - 添加
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;
}
这样修改后,你的代码应该可以得到满分了!
原文地址: https://www.cveoy.top/t/topic/b17V 著作权归作者所有。请勿转载和采集!