Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 二维阵列加法_C++_C - Fatal编程技术网

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]);
}