为什么结果永远是0???
#include<stdio.h>
int main()
{
int a[10][10];
int row,sum=0;
int i,j;
scanf("%d",&row);
for(i=0;i<row;i++)
{
for(j=0;j<row;j++)
{
scanf("%d",&a[i][j]);
}
if((i==j)||(i+j==row-1))
{
sum=sum+a[i][j];
}
}
printf("%d\n",sum);
}
Description
求矩阵的两对角线上的元素之和
Input
矩阵的行数N
和一个N*N的整数矩阵a[N][N](N<=10)
Output
所输矩阵的两对角线上的元素之和
Sample Input
3
1 2 3
4 5 6
7 8 9
Sample Output
25
[解决办法]
i=0的时候,下面的循环里j变为row,i不会等于j,i+j也不会等于row-1。把循环的括号改下应该就行了
#include<stdio.h>
int main()
{
int a[10][10];
int row,sum=0;
int i,j;
scanf("%d",&row);
for(i=0;i<row;i++)
{
for(j=0;j<row;j++)
{
scanf("%d",&a[i][j]);
if((i==j)
[解决办法]
(i+j==row-1))
{
sum=sum+a[i][j];
}
}
}
printf("%d\n",sum);
}
# include <stdio.h>
int main()
{
int a[10][10];
int row, sum = 0;
int i, j;
scanf("%d", &row);
for (i = 0; i < row; i++)
{
for (j = 0; j < row; j++)
{
scanf("%d", &a[i][j]);
}
if ((i == j)
[解决办法]
(i + j == row - 1))
{
sum = sum + a[i][j];
}
}
printf("%d\n", sum);
}
# include <stdio.h>
int main()
{
int a[10][10];
int row, sum = 0;
int i, j;
scanf("%d", &row);
for (i = 0; i < row; i++)
{
for (j = 0; j < row; j++)
{
scanf("%d", &a[i][j]);
if ((i == j)
[解决办法]
(i + j == row - 1))
{
sum = sum + a[i][j];
}
}
}
printf("%d\n", sum);
}
for(i=0;i<row;i++)
{
for(j=0;j<row;j++)
{
scanf("%d",&a[i][j]);
}
if((i==j)
[解决办法]
(i+j==row-1))
{
sum=sum+a[i][j];
}
}
for(i=0;i<row;i++)
{
for(j=0;j<row;j++)
{
scanf("%d",&a[i][j]); //这里错了,应该是每次输入后判断是否相加
if((i==j)
[解决办法]
(i+j==row-1))
{
sum=sum+a[i][j];
}
}
}