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:} scanf("%d * %d",&m,&p); 改成scanf("%d%d",&m,&p);
输入例子:
4 3 傻眼貓咪 发表于 2021-12-11 11:59
scanf("%d * %d",&m,&p); 改成scanf("%d%d",&m,&p);
输入例子:
这个格式不对吗?可是小甲鱼也是这样写的{:10_269:} 傻眼貓咪 发表于 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:}
报错写什么? 小亦003 发表于 2021-12-11 12:14
这个格式不对吗?可是小甲鱼也是这样写的
没有不对,只是如果格式这样,输入就必须依照这样的格式输入,一般初学者容易在这里弄错 小亦003 发表于 2021-12-11 12:45
改了,但还是报错,看我用/* .....*/注释的这三部分,这三个地方报错了
是定义错了还是编译 ...
数组定义不能是变量!明显新手容易犯的错误 c语言不支持这样动态定义数组,数组[ ]内的值必须是常量,而不是变量 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.
$ 傻眼貓咪 发表于 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)
人造人 发表于 2021-12-11 13:28
我的编译器定义数组不能是变量,你的代码我这边也是这种错误。我用的vs 人造人 发表于 2021-12-11 13:28
"size_t" 也是定义整型的么,没学过还不了解{:10_245:} a327904410 发表于 2021-12-11 13:16
数组定义不能是变量!明显新手容易犯的错误
已经犯了{:10_245:} 18202486056 发表于 2021-12-11 13:27
c语言不支持这样动态定义数组,数组[ ]内的值必须是常量,而不是变量
哦哦,了解{:10_254:} 小亦003 发表于 2021-12-11 13:43
cpp(15) : error C2057: expected constant expression
.cpp(15) : error C2466: cannot allocate an ar ...
对应我注释的那三句 小亦003 发表于 2021-12-11 13:49
已经犯了
把n, p换成数字(常量)就可以了,不要scanf输入 小亦003 发表于 2021-12-11 13:48
"size_t" 也是定义整型的么,没学过还不了解
size_t 就是正整型,如同 unsigned int a327904410 发表于 2021-12-11 13:54
把n, p换成数字(常量)就可以了,不要scanf输入
那如果是需要用户用键盘输入数字来定义矩阵的大小,该怎么写呢? 楼主的编译器应该不支援 C99 吧?现在的 C 语言编译器大部分都支援不是动态定义数组了 小亦003 发表于 2021-12-11 14:08
那如果是需要用户用键盘输入数字来定义矩阵的大小,该怎么写呢?
可以用动态数组
页:
[1]
2