比较的数有正有负,但是是按绝对值比较,但是如果负数的绝对值最大,需要输出负数C...
问题出在你的代码中,你没有正确比较绝对值的大小。你只是简单地将当前输入的数赋给了 max 变量,而没有进行绝对值比较。因此,无论输入的数是正数还是负数,都会直接赋给 max 变量。要解决这个问题,你可以使用 abs() 函数来获取一个数的绝对值。首先,你需要将 max 初始化为一个负数,这样可以确保无论输入的是正数还是负数,都能正确比较。然后,在每次输入一个数后,你需要判断该数的绝对值是否大于 max 的绝对值,如果是,则将该数赋给 max 。
下面是修改后的代码:
#include <stdio.h>
#include <math.h>
int main() {
int n, i, max = -1;// 将max初始化为一个负数
scanf("%d", &n);
for (i = 1; i <= n; i++) {
int num;
scanf("%d", &num);
if (abs(num) > abs(max)) {// 判断绝对值大小
max = num;
}
}
printf("%d", max);
return 0;
}
这样修改后的代码会正确比较绝对值的大小,并输出绝对值最大的负数。
页:
[1]