我写了一个程序,把一个二维数组作为输入,求出每一列的和。
当我编译程序的时候,我没有错误,但是一旦我运行它,我会得到一个对话框,上面写着untitled5.exe stopped working
,其中untitled5
是文件名。
我得到这个错误相当多次。我已经使用了开发C++和代码块来编译我的程序,那么这是什么原因呢?
这是我的代码、编译器还是笔记本电脑的问题?
#include<stdio.h>
void summation(int arr[][5], int size);
int main() {
int n, arr[n][5], sum, i, j;
printf("enter the number of rows");
scanf("%d", & n);
for (i = 0; i < n; i++) {
for (j = 0; j < 5; j++) {
printf("%d,%d th element is", i, j);
scanf("%d", & arr[i][j]);
}
}
summation(arr, 5);
return 0;
}
void summation(int arr[][5], int size) {
int i, j, s = 0;
for (j = 0; j < 5; j++) {
for (i = 0; i < 5; i++) {
s = s + arr[i][j];
}
printf("%d", s);
}
}
2条答案
按热度按时间b1zrtrql1#
在
main()
中,您使用i
来索引数组的第一维。在summation()
中,您使用i
来索引数组的第二维。我认为,当main()
没有填满数组的那么多部分时(例如,当您输入2作为行数时),您将超出summation()
中第一维的末尾。我觉得你想
在
summation()
中:qojgxg4l2#
首先我把数组声明移到,初始化n,并使其等于某个值之后。
接下来你的问题是你的求和函数可能超出了边界,你的二维数组总是有5列,但是你可以有不同的行数,把行数n传递给求和函数,以确保你没有超出边界。