实验7-2-2 矩阵运算

#include<stdio.h>
int main() {
	int n;
	int sum;
	scanf("%d", &n);
	int a[n][n];
	sum = 0;
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < 0; j++) {
			scanf("%d", &a[i][j]);
			if ((i != j) && (i < (n - 1)) && (j < (n - 1))) {
				sum = sum + a[i][j];
			}
		}
	}
	printf("%d", sum);

	return 0;
}

给定一个n×n的方阵,本题要求计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。副对角线为从矩阵的右上角至左下角的连线。

输入第一行给出正整数n(1<n≤10);随后n行,每行给出n个整数,其间以空格分隔。

在一行中给出该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。

样例输入:

4 2 3 4 1 5 6 1 1 7 1 8 1 1 1 1 1

样例输出:

35

 

求问,为什么上述代码不能运行???

每当运行时,输入第一个数字后,自动跳到printf“0”,为啥,中间的for循环呢?为啥被吃了?

第6行 int a[n][n]不能这么写。代码修改如下:

#include<stdio.h>
int main() {
	int n,i;
	int sum;
	scanf("%d", &n);
	int** a = new int*[n];
	sum = 0;
	for (int i = 0; i < n; i++) {
		a[i] = new int[n];
		for (int j = 0; j < n; j++) {
			scanf("%d", &a[i][j]);
			if ((i != n-j-1) && (i < (n - 1)) && (j < (n - 1))) 
			{
				sum = sum + a[i][j];
			}
		}
	}
	printf("%d", sum);
	for (i = 0; i < n; i++)
	{
		delete[] a[i];
	}
	delete[] a;
	return 0;
}