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

C语言动态内存分配:查找最小负数元素位置的代码调试求助

C语言动态数组找最小负数所有位置的bug修复

代码存在的问题

  • amnn函数初始化缺失:tg和tg1未初始化,若数组无负数会触发未定义行为;且tg仅取第一个负数,未遍历所有元素找到最小负数。
  • 位置记录逻辑错误:当前仅记录最后一个符合条件的下标,未输出所有等于最小负数的位置。
  • 函数返回值问题:nhapmang、inmang、amnn声明为int类型但无return语句,违反C语言标准。
  • 换行符错误:代码中使用" "作为换行,应改为标准的"\n"。

修复后的完整代码

#include <stdio.h>
#include <stdlib.h>

// 输入数组,改为void类型(无返回值需求)
void nhapmang(int *p, int n)
{
    int i;
    for (i = 0; i < n; i++)
    {
        printf("Nhap vao a[%d] = ", i);
        scanf("%d", &*(p + i));
    }
}

// 输出数组,改为void类型
void inmang(int *p, int n)
{
    for (int i = 0; i < n; i++)
        printf("   %d", *(p + i));
    printf("\n"); // 增加换行,优化输出格式
}

// 查找并输出最小负数的所有位置,改为void类型
void amnn(int *p, int n)
{
    // 初始化最小负数为一个较大的正数,确保能被负数覆盖
    int min_neg = 0;
    int has_neg = 0;

    // 第一步:遍历数组,找到最小的负数
    for (int i = 0; i < n; i++)
    {
        if (*(p + i) < 0)
        {
            has_neg = 1;
            if (min_neg == 0 || *(p + i) < min_neg)
            {
                min_neg = *(p + i);
            }
        }
    }

    // 处理无负数的情况
    if (!has_neg)
    {
        printf("Mang khong co so am\n");
        return;
    }

    // 第二步:遍历数组,输出所有等于最小负数的位置
    printf("Vi tri so am nho nhat trong mang la: ");
    for (int i = 0; i < n; i++)
    {
        if (*(p + i) == min_neg)
        {
            printf("a[%d] ", i);
        }
    }
    printf("\n");
}

int main()
{
    int *p, n;
    printf("Nhap vao n: ");
    scanf("%d", &n);
    // 动态分配内存,无需强制转换(C标准允许)
    p = malloc(n * sizeof(int));
    // 检查内存分配是否成功
    if (p == NULL)
    {
        printf("Khong the cap phat bo nho\n");
        return 1;
    }

    nhapmang(p, n);
    printf("\nIn mang:");
    inmang(p, n);
    amnn(p, n);

    // 释放动态分配的内存,避免内存泄漏
    free(p);
    return 0;
}

关键修改说明

  1. 函数类型修正:将无返回值需求的函数改为void类型,补全逻辑闭环,避免未定义行为。
  2. 最小负数查找逻辑:先遍历所有元素确定最小负数,再二次遍历输出所有对应位置,满足“输出所有位置”的需求。
  3. 边界情况处理:增加无负数时的提示,避免逻辑错误。
  4. 内存管理优化:增加内存分配失败的检查,使用后释放动态内存,避免内存泄漏。
  5. 格式修正:替换错误的换行符,优化输出可读性。

内容的提问来源于stack exchange,提问作者Đinh Trọng Đạt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 21:08:11