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

C语言数值数组比较代码无结果问题排查求助

问题分析与修复

你的代码存在几个关键问题,直接导致无法输出正确的比较结果:

1. 变长数组定义时机错误

你在变量n未被赋值前,就定义了int a[n];和int b[n];。此时n是未初始化的局部变量,值为随机垃圾值,这会让数组大小完全不确定,属于未定义行为,后续的输入、比较操作都会混乱。

2. ta的计算与使用逻辑错误

  • sizeof(a)计算的是数组总字节数,不是元素个数。比如int占4字节时,sizeof(a)等于4 * 元素数,你用它作为循环条件k<ta,会导致循环执行远超实际元素数的次数,触发数组越界访问。
  • 更严重的是,ta是在n未赋值时计算的,这个值完全没有实际意义。

3. 拼写错误

输出语句里的Is ne sont pas identiques.是拼写错误,正确写法应为Ils ne sont pas identiques.。

4. 比较逻辑的冗余设计

原代码中else if(k == n-1)的判断没必要,只要循环完整遍历所有元素且未触发不等的退出逻辑,就说明两个数组完全相同,此时直接输出相等提示即可。


修正后的代码

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

int main()
{
    int n, i, k;
    // 先获取数组长度n,再定义变长数组
    printf("Enter la taille du tableux: ");
    scanf("%d", &n);

    int a[n];
    int b[n];

    // 输入数组a
    printf("Enter %d nombres: ",n);
    for(i = 0; i < n; ++i)
    {
        scanf("%d", &a[i]);
    }
    // 输入数组b
    printf("Enter %d nombres: ",n);
    for(i = 0; i < n; ++i)
    {
        scanf("%d", &b[i]);
    }
    // 比较两个数组
    for(k = 0; k < n; k++)
    {
        if(a[k] != b[k])
        {
            printf("Ils ne sont pas identiques.\n");
            exit(0);
        }
    }
    // 循环正常结束说明所有元素都相等
    printf("Ils sont identiques.\n");

    return 0;
}

内容的提问来源于stack exchange,提问作者Med talib

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 23:35:20