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

如何仅使用goto语句打印矩阵?C语言实现代码运行出错求解决

代码问题排查及修复方案

错误点汇总

  • 二维数组初始化语法错误:你使用了圆括号()包裹初始化元素,C语言中数组初始化需要使用花括号{}。原来的写法(1,2,3)属于逗号表达式,最终只会取最后一个值赋值给数组元素,导致数组内容完全错误。
  • 列循环变量重复定义、重复初始化:在printcolumn代码块内部再次定义了int j = 0,每次进入列打印逻辑都会把j重置为0,导致列循环永远卡在j=0的位置,进入死循环。
  • 换行符写法错误:C语言换行转义符是\n,你写成了/n,无法正常触发换行。
  • 矩阵元素打印没有分隔符,输出会完全连在一起,无法区分单个数字。

修正后的可运行代码

#include <stdio.h>

int main()
{
   // 修正数组初始化语法,使用花括号包裹每行元素
   int arr[3][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };

   printf("The matrix is:\n");

   int i = 0;
   printrow:
   {
      int j = 0;
      printcolumn:
      {
         // 移除重复的j定义,直接使用外层声明的j变量
         if (j < 3)
         {
            printf("%d ", arr[i][j]); // 新增空格分隔元素
            j++;
            goto printcolumn;
         }
         if (i < 2)
         {
            printf("\n"); // 修正换行符写法
            i++;
            goto printrow;
         }
      }
   }   

   return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 22:48:02