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

C语言数组无法正确展示用户输入值问题求助

问题排查与解决方案

嘿,我一眼就找到你代码里的问题啦!你的程序之所以只显示最后一次输入的值,核心问题出在数组下标变量的错误使用上,具体有两个关键问题:

1. 未初始化的变量n导致下标异常

你声明了int n, i;但从未给n赋值,局部变量在未初始化时会包含内存里的随机垃圾值。在你的运行场景中,这个随机值刚好固定指向了数组的某一个位置(比如data[2]),所以每次调用scanf("%d",&data[n]);时,新输入的值都会覆盖同一个数组元素,最后自然只剩下最后一次输入的1。

2. 循环中错误使用n作为数组下标

不管是读取输入还是输出数组内容,你都误用了n作为下标,但循环的控制变量是i呀!你应该用i来遍历数组的每个位置,这样才能依次把输入存入data[0]、data[1]、data[2],输出时也能逐个取出对应位置的值。


修正后的代码

#include <stdio.h>
#define MAXSIZE 3
int main (void) // 注意:main的标准返回类型是int,不是void
{
 int data[MAXSIZE];
 int i ; // 不需要n了,直接用i作为下标
 for (i = 0;i < MAXSIZE ;i++ )
 {
 printf("Enter array [%d]: ",i+1);
 scanf("%d",&data[i]); // 这里改成data[i]
 }
 printf("data before sort\n");
 printf("===================\n");
 for (i = 0; i < MAXSIZE ;i++ )
 printf("Value[%d]:%d\n",i+1,data[i]); // 这里也改成data[i]
 return 0; // 标准main需要返回值
}

额外小提醒

  • C语言中局部变量默认不会初始化,使用未初始化的变量会导致未定义行为,结果可能每次运行都不一样,一定要记得初始化变量或者按需赋值。
  • main函数的标准返回类型是int,建议遵循这个规范,最后加上return 0;表示程序正常结束。

内容的提问来源于stack exchange,提问作者youssef abd elhakem

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 12:24:11