c语言 要求以一维数组完成,萌新求教

nxn矩阵称为方阵。
现在要你求方阵对角线元素的和。

输入数据块是按行主序列出的方阵元素。
输出完成后,不要再输出回车换行符。

要使用一维数组

输入

1 2 3
4 5 6
7 1 1

结果

sum= 17
#include <stdio.h>
#include <cstdlib>
 
int main()
{
	int i,j,sum=0,n,**a; //定义二维指针,用于动态开辟空间
	scanf("%d",&n);//输入阶数n
	a = (int **) malloc(sizeof(int *) *n);//申请一组一维指针空间。
    for(i = 0; i < n; i ++){
        a[i] = (int *)malloc(sizeof(int) * n); //对于每个一维指针,申请一行数据的空间。
    }
	for(i=0;i<n;i++)
	{
	    for(j=0;j<n;j++)
	    {
	        scanf("%d",&a[i][j]);//输入方阵
	        if(i==j||i+j==n-1){//两条对角线
	            sum+=a[i][j];
	        } 
	    }
	}
	printf("%d",sum);//对角线之和
	return 0;
}