You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改C语言代码统计数组负数个数与绝对值重复元素?

问题描述

需要实现两个功能:

  • 统计数组中的负数个数
  • 统计数组中绝对值相同的元素对数量

现有C语言代码及输入输出情况如下:

现有代码

#include<stdio.h>

int main()
{
int n = 0;
int negative_count = 0;
int duplicate_count = 0;
// input lenght of the array
scanf("%d", &n);
getchar();
int arr[n];
for(int i = 0;i < n;i++){
    //input elements of the array
    scanf("%d", &arr[i]);
    getchar();
}

int len = sizeof(arr) / sizeof(arr[0]);

for(int i=0;i<len;i++){
    if(arr[i] < 0){
        negative_count++;
    }
    for(int j= i+1;j<len;j++){
        if(arr[i] == arr[j]){
            duplicate_count++;
        }
    }
}

printf("Number of negative numbers: %d\n", negative_count);
printf("Number of duplicates: %d", duplicate_count);

return 0;
}

输入示例

5
1 -1 2 3 -3

当前输出

Number of negative numbers: 2
Number of duplicates: 0

预期目标

负数个数统计结果正确,期望绝对值相同的元素对数量为2(对应(1,-1)、(3,-3)这两组)。


解决方案

问题核心是原代码判断的是元素值完全相等,但需求是绝对值相等,需做以下修改:

  1. 引入绝对值函数:使用C标准库的abs()函数计算整数绝对值,需要包含头文件<stdlib.h>(abs()定义在此头文件中)。
  2. 修改判断条件:将if(arr[i] == arr[j])替换为if(abs(arr[i]) == abs(arr[j])),匹配绝对值相同的元素对。
  3. 优化数组长度计算:数组是通过输入的n定义的变长数组,len的值就是n,直接用n代替sizeof(arr)/sizeof(arr[0]),代码更简洁。

修改后的完整代码

#include<stdio.h>
#include<stdlib.h>  // 引入abs函数所需的头文件

int main()
{
    int n = 0;
    int negative_count = 0;
    int duplicate_count = 0;
    
    // 输入数组长度
    scanf("%d", &n);
    getchar();
    
    int arr[n];
    // 输入数组元素
    for(int i = 0;i < n;i++){
        scanf("%d", &arr[i]);
        getchar();
    }

    for(int i=0;i<n;i++){
        if(arr[i] < 0){
            negative_count++;
        }
        // 遍历i之后的元素,统计绝对值相同的元素对
        for(int j= i+1;j<n;j++){
            if(abs(arr[i]) == abs(arr[j])){
                duplicate_count++;
            }
        }
    }

    printf("Number of negative numbers: %d\n", negative_count);
    printf("Number of absolute value pairs: %d", duplicate_count);

    return 0;
}

测试结果

输入示例运行后,输出为:

Number of negative numbers: 2
Number of absolute value pairs: 2

完全符合预期需求。


内容的提问来源于stack exchange,提问作者Maz Diaz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 10:50:37