Онлайн компилятор C

#include <stdio.h> #include <string.h> int count_bigger_abs(int n, int a[]){ int counter=0; int max=a[0]; for(int i=0; i<n; i++){ if(a[i]>max){ max=a[i]; } } for(int i=0; i<n; i++){ if(a[i]<0&& -a[i]>max){ counter++; } } return counter; } int main() { int a[] = {1, -20, 3, 4, -50, 6, 7, 8, 9, 10}; printf("%d", count_bigger_abs(10, a)); return 0; }
这段代码定义了一个函数 `count_bigger_abs`,它接收数组长度 `n` 和数组 `a`,先找出数组中的最大值,然后统计数组中绝对值大于该最大值的负数的个数。在 `main` 函数中,它用示例数组测试并打印结果。

- 你的代码逻辑是:先找到数组中的最大值,然后检查每个负数,如果它的绝对值大于这个最大值,就计数。但注意,你比较的是 `-a[i] > max`,这相当于比较负数的绝对值与最大值。这个思路本身没问题,但需要确认题目是否要求“绝对值大于最大值”还是“绝对值大于最大值的绝对值”?如果最大值本身是负数,你的比较可能不符合预期。

- 另外,你的代码只统计了负数,但题目要求“绝对值大于最大值”的元素,可能包括正数吗?如果正数的绝对值大于最大值,也应该被计数。检查一下题目描述是否只针对负数。