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

C语言二维矩阵打印代码运行时终端无限重复输出首个输入值问题

C语言矩阵打印问题修复方案

问题根因

  • 打印逻辑存在死循环:while (i < a)循环内部没有对i执行自增操作,i始终为初始值0,永远满足i < a的判断条件,因此会无限打印第一个元素c[0][0],和你观察到的输出现象完全一致。
  • 可变长度数组定义时机错误:C语言中可变长度数组的长度在定义时就会固定,你在用户输入行列数a/b之前,就用初始值i=500、j=500定义了数组c[i][j],后续修改a/b不会改变数组实际大小,属于隐藏的越界风险。
  • 打印逻辑冗余:不需要嵌套for+while循环实现矩阵打印,两层常规的行列遍历循环即可实现需求,逻辑更清晰不易出错。

修正后代码

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

int main() {
  int a, b;
  int i, j;

  printf("\n");
  printf("Please enter the number of rows: \n");
  scanf("%d", &a);
  printf("Please enter the number of columns: \n");
  scanf("%d", &b);

  // 输入完成后再定义可变长度数组,避免长度错误
  int c[a][b];
  
  printf("Enter Matrix A \n");
  for (i = 0; i < a; i++) {
      for (j = 0; j < b; j++) {
        scanf("%d", &c[i][j]);
      }
  }

  // 两层循环打印矩阵,每行结束自动换行
  printf("\nMatrix A output:\n");
  for (i = 0; i < a; i++) {
      for (j = 0; j < b; j++) {
        printf("%d ", c[i][j]);
      }
      printf("\n");
  }

  return 0;
}

内容的提问来源于stack exchange,提问作者Dhruv Bishnoi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 21:27:01