小亦003 发表于 2021-12-11 11:56:37

c语言,报错问题

......
        int m,p,n;
       
        // 定义第一个矩阵
        printf("请输入第一个矩阵的尺寸(M * P):");
        scanf("%d * %d",&m,&p);
        int str_1;

        // 定义第二个矩阵
        printf("请输入第二个矩阵的尺寸(P * N):");
        scanf("%d * %d",&p,&n);
        int str_2;
......
为什么这一段我这样写会报错?不理解啊{:10_266:}

傻眼貓咪 发表于 2021-12-11 11:59:17

scanf("%d * %d",&m,&p); 改成scanf("%d%d",&m,&p);

输入例子:
4 3

小亦003 发表于 2021-12-11 12:14:19

傻眼貓咪 发表于 2021-12-11 11:59
scanf("%d * %d",&m,&p); 改成scanf("%d%d",&m,&p);

输入例子:


这个格式不对吗?可是小甲鱼也是这样写的{:10_269:}

小亦003 发表于 2021-12-11 12:45:15

傻眼貓咪 发表于 2021-12-11 11:59
scanf("%d * %d",&m,&p); 改成scanf("%d%d",&m,&p);

输入例子:


int m,p,n;
       
        // 定义第一个矩阵
        printf("请输入第一个矩阵的尺寸(M * P):");
        scanf("%d%d",&m,&p);
        /*int str_1;*/

        // 定义第二个矩阵
        printf("请输入第二个矩阵的尺寸(P * N):");
        scanf("%d%d",&p,&n);
        /*int str_2;*/

        // 初始化存放乘积的二维数组
        /*int str1_2;*/
        for(i = 0; i < m; i++)
        {
                for(j = 0; j < n; j++)
                {
                        str1_2 = 0;
                }
        }
改了,但还是报错,看我用/* .....*/注释的这三部分,这三个地方报错了{:10_266:}
是定义错了还是编译器的问题呀{:10_269:}

傻眼貓咪 发表于 2021-12-11 12:54:51

报错写什么?

傻眼貓咪 发表于 2021-12-11 12:56:34

小亦003 发表于 2021-12-11 12:14
这个格式不对吗?可是小甲鱼也是这样写的

没有不对,只是如果格式这样,输入就必须依照这样的格式输入,一般初学者容易在这里弄错

a327904410 发表于 2021-12-11 13:16:12

小亦003 发表于 2021-12-11 12:45
改了,但还是报错,看我用/* .....*/注释的这三部分,这三个地方报错了
是定义错了还是编译 ...

数组定义不能是变量!明显新手容易犯的错误

18202486056 发表于 2021-12-11 13:27:57

c语言不支持这样动态定义数组,数组[ ]内的值必须是常量,而不是变量

人造人 发表于 2021-12-11 13:28:06

a327904410 发表于 2021-12-11 13:16
数组定义不能是变量!明显新手容易犯的错误

$ ls
main.c
$ cat main.c
#include <stdio.h>

int main(void) {
    size_t n; scanf("%lu", &n);
    size_t array;
    for(size_t i = 0; i < n; ++i) {
      size_t temp; scanf("%lu", &temp);
      array = temp;
    }
    for(size_t i = 0; i < n; ++i) {
      printf("%lu ", array);
    }
    puts("");
    return 0;
}
$ gcc -g -Wall -o main main.c
$ ls
mainmain.c
$ ./main
3
1 2 3
1 2 3
$ ./main
5
9 8 7 1 2
9 8 7 1 2
$ gcc --version
gcc (GCC) 11.1.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$

小亦003 发表于 2021-12-11 13:43:07

傻眼貓咪 发表于 2021-12-11 12:54
报错写什么?

cpp(15) : error C2057: expected constant expression
.cpp(15) : error C2466: cannot allocate an array of constant size 0
.cpp(15) : error C2057: expected constant expression
.cpp(15) : error C2466: cannot allocate an array of constant size 0
.cpp(15) : error C2087: '<Unknown>' : missing subscript
.cpp(15) : error C2133: 'str_1' : unknown size
.cpp(20) : error C2057: expected constant expression
.cpp(20) : error C2466: cannot allocate an array of constant size 0
.cpp(20) : error C2057: expected constant expression
.cpp(20) : error C2466: cannot allocate an array of constant size 0
.cpp(20) : error C2087: '<Unknown>' : missing subscript
.cpp(20) : error C2133: 'str_2' : unknown size
.cpp(24) : error C2057: expected constant expression
.cpp(24) : error C2466: cannot allocate an array of constant size 0
.cpp(24) : error C2057: expected constant expression
.cpp(24) : error C2466: cannot allocate an array of constant size 0
.cpp(24) : error C2087: '<Unknown>' : missing subscript
.cpp(24) : error C2133: 'str1_2' : unknown size
执行 cl.exe 时出错.

void指针和NULL指针:动动手0.obj - 1 error(s), 0 warning(s)

a327904410 发表于 2021-12-11 13:46:08

人造人 发表于 2021-12-11 13:28


我的编译器定义数组不能是变量,你的代码我这边也是这种错误。我用的vs

小亦003 发表于 2021-12-11 13:48:15

人造人 发表于 2021-12-11 13:28


"size_t" 也是定义整型的么,没学过还不了解{:10_245:}

小亦003 发表于 2021-12-11 13:49:13

a327904410 发表于 2021-12-11 13:16
数组定义不能是变量!明显新手容易犯的错误

已经犯了{:10_245:}

小亦003 发表于 2021-12-11 13:50:22

18202486056 发表于 2021-12-11 13:27
c语言不支持这样动态定义数组,数组[ ]内的值必须是常量,而不是变量

哦哦,了解{:10_254:}

小亦003 发表于 2021-12-11 13:53:35

小亦003 发表于 2021-12-11 13:43
cpp(15) : error C2057: expected constant expression
.cpp(15) : error C2466: cannot allocate an ar ...

对应我注释的那三句

a327904410 发表于 2021-12-11 13:54:40

小亦003 发表于 2021-12-11 13:49
已经犯了

把n, p换成数字(常量)就可以了,不要scanf输入

傻眼貓咪 发表于 2021-12-11 13:56:34

小亦003 发表于 2021-12-11 13:48
"size_t" 也是定义整型的么,没学过还不了解

size_t 就是正整型,如同 unsigned int

小亦003 发表于 2021-12-11 14:08:30

a327904410 发表于 2021-12-11 13:54
把n, p换成数字(常量)就可以了,不要scanf输入

那如果是需要用户用键盘输入数字来定义矩阵的大小,该怎么写呢?

傻眼貓咪 发表于 2021-12-11 14:09:03

楼主的编译器应该不支援 C99 吧?现在的 C 语言编译器大部分都支援不是动态定义数组了

a327904410 发表于 2021-12-11 14:18:57

小亦003 发表于 2021-12-11 14:08
那如果是需要用户用键盘输入数字来定义矩阵的大小,该怎么写呢?

可以用动态数组
页: [1] 2
查看完整版本: c语言,报错问题