C++ 二维阵列加法
这个程序添加了两个矩阵,但它给出的错误太多,我无法解决它们 错误: 缺少数组边界 及 表达式语法 有什么想法吗C++ 二维阵列加法,c++,c,C++,C,这个程序添加了两个矩阵,但它给出的错误太多,我无法解决它们 错误: 缺少数组边界 及 表达式语法 有什么想法吗 #include<stdio.h> #include<conio.h> #define ROW=3 #define COL=3 int result[][COL]; void input(int arr[][COL]); void add(int mat1[][COL],mat2[][COL]); void print(int result[][COL]);
#include<stdio.h>
#include<conio.h>
#define ROW=3
#define COL=3
int result[][COL];
void input(int arr[][COL]);
void add(int mat1[][COL],mat2[][COL]);
void print(int result[][COL]);
void main(void)
{
int mat1[ROW][COL],mat2[ROW][COL];
input(mat1);
input(mat2);
add(mat1,mat2);
print(result);
getch();
}
void input(int arr[][COL]);
{
for(int i=0;i<row;i++)
for(int j=0;j<col;j++)
{
printf("Enter element");
scanf("%d",&arr[i][j]);
}
}
void add(int mat1[][COL],int mat2[][COL])
{
for(int i=0;i<row;i++)
for(int j=0;j<col;j++)
{
result[i][j]=mat1[i][j]+mat2[i][j];
}
}
void print(int result[][COL])
{
for(int i=0;i<row;i++)
for(int j=0;j<col;j++)
printf("%d",result[i][j]);
}
#包括
#包括
#定义行=3
#定义COL=3
int结果[][COL];
无效输入(int arr[][COL]);
无效添加(int mat1[][COL],mat2[][COL]);
作废打印(整数结果[][COL]);
真空总管(真空)
{
int mat1[行][COL]、mat2[行][COL];
输入(mat1);
输入(mat2);
添加(mat1、mat2);
打印(结果);
getch();
}
无效输入(int arr[][COL]);
{
对于(int i=0;i
对于C预处理器不正确。请尝试:
#define ROW 3
#define COL 3
有关如何使用预处理器的更多信息,请参阅。代码格式化后弹出的第一件事:
#define ROW=3
#define COL=3
应该是
#define ROW 3
#define COL 3
这是一个不错的第一次尝试。至少你在寻求帮助之前尝试过,这比这里的一些人做的更多。你有以下问题:
- 您的定义格式错误
- 你使用非标准的东西(
conio
)
- 常量使用小写的
行
和列
- 您的
输入
函数有一个无关分号
- 您没有正确定义
result
- 主函数应始终返回一个
int
更详细地说:
(1) 您的定义格式错误
在定义中不使用=
,因为它们应该是相对简单的文本替换。因此,行#define ROW=3
不是您想要的,因为这基本上是试图将符号ROW=3
定义为空值
要获取值为3
的符号行
,需要使用#定义第3行
当然,在更现代的代码中,您会使用static const int ROW=3;
,因为这将为您提供一个一流的编译器符号,而不仅仅是一个文本替换。现在确实不需要对常量(使用const
)或函数(使用inline
)使用预处理器定义
(2) 你使用非标准的东西(conio
)
ISO C(标准)不包括conio.h
头文件。我知道您使用它是为了使用getch
函数,但ISO C提供了一个非常合适的getchar
函数,在这里也有同样的用途
对语言使用扩展是可以的,只是要知道它们通常会降低代码的可移植性
(3) 常量使用小写的行
和列
由于您已经对行和列常量使用了大写的ROW
和COL
,您应该在语句中对使用大写。C是区分大小写的语言,使用ROW
和COL
将导致编译器抱怨它们不存在
(4) 您的输入
函数有一个无关分号
这只是该函数第一行中的一个错位的;
,位于包含函数devcalation的行的末尾
(5) 您没有正确定义result
result
变量应该有一个确定的大小。定义int result[][10];
是一个不完整的类型,因为无法知道大小
(6) 主函数应始终返回一个int
C中的主要函数有两种标准形式。它们是:
int main(void);
int main (int c, char *v[]);
实现允许提供其他代码,但是,如果您希望代码可以在任何地方运行,您应该将自己限制为其中之一
这样就消除了所有语法错误,现在您可以努力使界面不那么难看:-)
#包括
#定义第3行
#定义第3列
int结果[行][COL];
无效输入(int arr[][COL]);
无效添加(int mat1[][COL],int mat2[][COL]);
作废打印(整数结果[][COL]);
内部主(空)
{
int mat1[行][COL]、mat2[行][COL];
输入(mat1);
输入(mat2);
添加(mat1、mat2);
打印(结果);
getchar();
返回0;
}
无效输入(整数arr[][COL])
{
对于(inti=0;iErrors不仅仅是胡言乱语……如果你发布消息的文本,我们将更容易发现问题。(人眼不是很好的编译器)。大家好一点。你们有12k代表,所以你们可以编辑大括号格式。@fahad:请添加错误消息。这将帮助我们给你们提供建议。@fahad,这通常被认为是粗鲁的行为(比如尖叫)键入所有大写字母。除非您需要强调某些内容,否则请在键入时使用普通大小写。对不起,我无法控制音量…各位,请不要在编辑格式时更改代码(特别是将ROW=3
更改为ROW 3
,并删除语法错误)因为它使答案无效,并且不是同一个问题。不,因为这样会有额外的括号。@fahad:#define是一个文本搜索和替换。每次它遇到“ROW”这个词时,预处理器都会用后面的词替换它。在您的情况下,您将得到int mat[[3]
…这毫无意义•你使用非标准的东西(conio):我使用的是什么shd?我的意思是哪个标题?为什么使用返回0?你也不应该使用void main()
main
根据标准,总是返回类型为int
@fahad,conio不是标准的(ISO)C.在本代码中,您将其用于getch
函数,但这不是必需的,因为ISO C为此提供了getchar
(来自stdio.h,您已经包括了它).而且只有两个保证的主要原型,它们都应该返回int。我的老师让我这么做的。.我是一个非常初学者,我甚至不了解你在这里教的内容。非常感谢:)@fahad,我已经尝试扩展我给出的每一点。希望这更有意义。
int main(void);
int main (int c, char *v[]);
#include<stdio.h>
#define ROW 3
#define COL 3
int result[ROW][COL];
void input(int arr[][COL]);
void add(int mat1[][COL],int mat2[][COL]);
void print(int result[][COL]);
int main(void)
{
int mat1[ROW][COL],mat2[ROW][COL];
input(mat1);
input(mat2);
add(mat1,mat2);
print(result);
getchar();
return 0;
}
void input(int arr[][COL])
{
for(int i=0;i<ROW;i++)
for(int j=0;j<COL;j++)
{
printf("Enter element");
scanf("%d",&arr[i][j]);
}
}
void add(int mat1[][COL],int mat2[][COL])
{
for(int i=0;i<ROW;i++)
for(int j=0;j<COL;j++)
result[i][j]=mat1[i][j]+mat2[i][j];
}
void print(int result[][COL])
{
for(int i=0;i<ROW;i++)
for(int j=0;j<COL;j++)
printf("%d",result[i][j]);
}