改一个简单程序

来源:百度知道 编辑:UC知道 时间:2024/06/06 11:31:32
#include<iostream.h>
int main()
{
int n,i,j,a[i][j],sum=0;
cin>>n;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
cin>>a[i][j];}
for(i=0;i<n;i++)
{
for(j=0;j<n;j=i)
sum=sum+a[i][j];}
cout<<sum<<endl;

system("PAUSE");
return 0;
}
实现一个N*N型矩阵 正对角线的和 怎么运行不聊 那错了

int n,i,j,a[i][j],sum=0;这一句,数组定义的时候必须同时声明大小,否则编译器不知道要分配多大内存。。
既然你是动态输入n来决定数组大小,可以用malloc来分配。不过数组下标要小小计算一下。
你是要计算对角线的和,那么
for(i=0;i<n;i++)
{
for(j=0;j<n;j=i)
sum=sum+a[i][j];}
这样就不对了。。
只要一个循环就可了
for(i=0;i<n;i++)
{
sum=sum+a[i][i];}
修改如下:
#include<iostream.h>
#include<stdlib.h>

int main()
{
int n,i,j,sum=0;
int *a;
cin>>n;
a = (int *)malloc(n * n * sizeof(int));
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
cin>>*(a+i*n + j);}
for(i=0;i<n;i++)
{
sum=sum+*(a+i*n + i);}
cout<<sum<<endl;

system("PAUSE");
return 0;
}