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

C语言输入无法存入数组列表,printf输出索引值始终为0问题求助

问题根因
  • 核心错误是格式说明符与变量类型不匹配,触发C语言未定义行为:循环变量i为int类型,但代码中使用仅适配double类型的%lf格式符输出i,导致打印结果异常,直观表现为i数值没有增长,极端场景下还会干扰循环逻辑的正常执行。
  • 额外隐患:两个数组的固定长度为10,若输入的ingredientsAmount大于10,会触发数组越界访问,引发内存异常。
修复方案
  1. 将两处printf输出i的格式符从%lf替换为适配int类型的%d。
  2. 可选增加输入合法性校验,避免数组越界问题。

修复后代码如下:

int main()
{
  int ingredientsAmount;
  double ingredientsPrice[10];
  double ingredientsWeight[10];
  
  scanf("%d", &ingredientsAmount);
  // 输入边界校验,避免数组越界
  if (ingredientsAmount > 10 || ingredientsAmount <= 0) {
      printf("输入的数量非法,有效范围为1~10");
      return 1;
  }
  
  for(int i = 0; i < ingredientsAmount; i++)  
  {
    scanf("%lf", &ingredientsPrice[i]);
    printf("Price stored at index %d\n", i); 
    scanf("%lf", &ingredientsWeight[i]); 
    printf("Weight stored at index %d\n", i); 
  }
  
  return 0;
}

内容的提问来源于stack exchange,提问作者I Y S Z

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 19:36:03