鱼C论坛

 找回密码
 立即注册
查看: 905|回复: 3

[已解决]C语言问题

[复制链接]
发表于 2023-9-10 12:51:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
为什么会出错呀?

  1. #include <stdio.h>

  2. int main()
  3. {
  4.     int a[3][3] = {[0][0] = 1; [1][1] = 2; [2][2] = 3};
  5.     int i, j;

  6.     for (i = 0; i < 3; i++)
  7.     {
  8.         for (j = 0; j < 3; j++)
  9.         {
  10.             printf("%d ", a[i][j]);
  11.         }
  12.         printf("\n");
  13.     }
  14.    
  15.     return 0;
复制代码
最佳答案
2023-9-10 12:51:38
你的代码中出现了语法错误。在C语言中,初始化二维数组时不能使用类似于[0][0] = 1; [1][1] = 2; [2][2] = 3的写法。

要正确初始化二维数组,你可以使用以下两种方法:

1. 使用嵌套的花括号来初始化数组的每个元素:
  1. int a[3][3] = {
  2.     {1, 0, 0},
  3.     {0, 2, 0},
  4.     {0, 0, 3}
  5. };
复制代码

2. 分行初始化每个元素:
  1. int a[3][3] = {
  2.     [0][0] = 1,
  3.     [1][1] = 2,
  4.     [2][2] = 3
  5. };
复制代码


修正后的代码如下所示:
  1. #include <stdio.h>

  2. int main(){
  3.     int a[3][3] = {
  4.         {1, 0, 0},
  5.         {0, 2, 0},
  6.         {0, 0, 3}
  7.     };
  8.    
  9.     int i, j;
  10.     for (i = 0; i < 3; i++){
  11.         for (j = 0; j < 3; j++){
  12.             printf("%d ", a[ i][j]);
  13.         }
  14.         printf("\n");
  15.     }
  16.    
  17.     return 0;
  18. }
复制代码


这样就能正确地初始化并打印出二维数组的值了。如果还有其他问题,请随时提问。
如果问题已经解决,请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-9-10 12:51:30 | 显示全部楼层
这段代码在赋值数组时使用了C99标准的特性——指定初始化器,但是由于使用了错误的语法导致编译错误。

正确的指定初始化器语法应该是使用大括号括起来,每个元素之间用逗号分隔。修改后的代码如下:

  1. #include <stdio.h>

  2. int main()
  3. {
  4.     int a[3][3] = {{1, 0, 0}, {0, 2, 0}, {0, 0, 3}};
  5.     int i, j;

  6.     for (i = 0; i < 3; i++)
  7.     {
  8.         for (j = 0; j < 3; j++)
  9.         {
  10.             printf("%d ", a[ i][j]);
  11.         }
  12.         printf("\n");
  13.     }

  14.     return 0;
  15. }
复制代码


这样就可以正确地输出数组的值了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-9-10 12:51:38 | 显示全部楼层    本楼为最佳答案   
你的代码中出现了语法错误。在C语言中,初始化二维数组时不能使用类似于[0][0] = 1; [1][1] = 2; [2][2] = 3的写法。

要正确初始化二维数组,你可以使用以下两种方法:

1. 使用嵌套的花括号来初始化数组的每个元素:
  1. int a[3][3] = {
  2.     {1, 0, 0},
  3.     {0, 2, 0},
  4.     {0, 0, 3}
  5. };
复制代码

2. 分行初始化每个元素:
  1. int a[3][3] = {
  2.     [0][0] = 1,
  3.     [1][1] = 2,
  4.     [2][2] = 3
  5. };
复制代码


修正后的代码如下所示:
  1. #include <stdio.h>

  2. int main(){
  3.     int a[3][3] = {
  4.         {1, 0, 0},
  5.         {0, 2, 0},
  6.         {0, 0, 3}
  7.     };
  8.    
  9.     int i, j;
  10.     for (i = 0; i < 3; i++){
  11.         for (j = 0; j < 3; j++){
  12.             printf("%d ", a[ i][j]);
  13.         }
  14.         printf("\n");
  15.     }
  16.    
  17.     return 0;
  18. }
复制代码


这样就能正确地初始化并打印出二维数组的值了。如果还有其他问题,请随时提问。
如果问题已经解决,请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-9-10 12:55:45 | 显示全部楼层
本帖最后由 学习编程中的Ben 于 2023-9-10 12:57 编辑

你第5行是:
  1. int a[3][3] = {[0][0] = 1; [1][1] = 2; [2][2] = 3};
复制代码

但是定义数组时,你应该用逗号来分割鸭!而且不能再数组里面使用[][]来写
正确写法:
  1. int a[3][3] = {{1, 0, 0}, {0, 2, 0}, {0, 0, 3}};
复制代码

评分

参与人数 1荣誉 +2 鱼币 +3 贡献 +1 收起 理由
陶远航 + 2 + 3 + 1

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-20 10:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表