yueyufeng 发表于 2023-11-9 22:42:39

比较的数有正有负,但是是按绝对值比较,但是如果负数的绝对值最大,需要输出负数C...

isdkz 发表于 2023-11-9 22:43:10

问题出在你的代码中,你没有正确比较绝对值的大小。你只是简单地将当前输入的数赋给了 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]
查看完整版本: 比较的数有正有负,但是是按绝对值比较,但是如果负数的绝对值最大,需要输出负数C...