鱼C论坛

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

[已解决]C语言问题

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

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

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

x
为什么会出错呀?
#include <stdio.h>

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

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

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

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

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

int main(){
    int a[3][3] = {
        {1, 0, 0},
        {0, 2, 0},
        {0, 0, 3}
    };
    
    int i, j;
    for (i = 0; i < 3; i++){
        for (j = 0; j < 3; j++){
            printf("%d ", a[ i][j]);
        }
        printf("\n");
    }
    
    return 0;
}

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

使用道具 举报

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

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

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

    for (i = 0; i < 3; i++)
    {
        for (j = 0; j < 3; j++)
        {
            printf("%d ", a[ i][j]);
        }
        printf("\n");
    }

    return 0;
}

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

使用道具 举报

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

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

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

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

int main(){
    int a[3][3] = {
        {1, 0, 0},
        {0, 2, 0},
        {0, 0, 3}
    };
    
    int i, j;
    for (i = 0; i < 3; i++){
        for (j = 0; j < 3; j++){
            printf("%d ", a[ i][j]);
        }
        printf("\n");
    }
    
    return 0;
}

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

使用道具 举报

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

你第5行是:
int a[3][3] = {[0][0] = 1; [1][1] = 2; [2][2] = 3};
但是定义数组时,你应该用逗号来分割鸭!而且不能再数组里面使用[][]来写
正确写法:
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-12-23 23:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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