首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

为何结果永远是0?

2013-03-17 
为什么结果永远是0???#includestdio.hint main(){int a[10][10]int row,sum0int i,jscanf(%d,&row

为什么结果永远是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",&amp;row);
for(i=0;i<row;i++)
{
for(j=0;j<row;j++)
{
scanf("%d",&amp;a[i][j]);
}
if((i==j)
[解决办法]
(……
应该是没认真看清楚吧
[解决办法]
问题的解决,从格式化代码开始。

# 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);
}


[解决办法]
请检查scanf的返回值。
[解决办法]
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];
}
}

这么写,内部循环执行完一遍,进入判断,这个时候j永远等于row,而且你这个程序判断只会执行row次,你的初衷应该是执行row*row次,所以才会得到错误结果,把判断写到内部循环就OK了
[解决办法]
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];   
     }  
   } 

热点排行