当前位置: 代码迷 >> C语言 >> ●●★☆帮帮忙☆★●●
  详细解决方案

●●★☆帮帮忙☆★●●

热度:115   发布时间:2008-04-28 23:01:58.0
●●★☆帮帮忙☆★●●
#include<stdio.h>
void main()
{
    int a[4][4],i,j,sum1=0,sum2=0;
    for(i=0;i<4;i++)
        for(j=0;j<4;j++)
            {
                printf("请为a[%d][%d]赋值:   ",i,j);
                scanf("%d",&a[i][j]);
            }
    for(i=0;i<4;i++)
        for(j=0;j<4;j++)
        {
            if(i=j)
                sum1=sum1+a[i][j];
            else continue;
        }
    for(i=0;i<4;i++)
        for(j=3;j>=0;j++)
        {
            if(i+j==3)
                sum2=sum2+a[i][j];
            else continue;
        }
    for(i=0;i<4;i++)
        for(j=0;j<4;j++)
            printf("sum1=%2d,sum2=%2d\n",sum1,sum2);


}

我不能检查出错误,但事实上是错了
呵呵

----------------解决方案--------------------------------------------------------
没说是做什么的程序
----------------解决方案--------------------------------------------------------
自己应该先调试下,用的什么编译器?出的什么错?
----------------解决方案--------------------------------------------------------
for(i=0;i<4;i++)
        for(j=3;j>=0;j++)
        {
            if(i+j==3)
                sum2=sum2+a[i][j];
            else continue;
        }
这个循环中j++应为j--。
    for(i=0;i<4;i++)
        for(j=0;j<4;j++)
            printf("sum1=%2d,sum2=%2d\n",sum1,sum2);
这里明显不应用循环。
正确的代码:
#include<stdio.h>
void main()
{
    int a[4][4],i,j,sum1=0,sum2=0;
    for(i=0;i<4;i++)
        for(j=0;j<4;j++)
            {
                printf("请为a[%d][%d]赋值:   ",i,j);
                scanf("%d",&a[i][j]);
            }
    for(i=0;i<4;i++)
        for(j=0;j<4;j++)
        {
            if(i=j)
                sum1=sum1+a[i][j];
            else continue;
        }
    for(i=0;i<4;i++)
        for(j=3;j>=0;j--)
        {
            if(i+j==3)
                sum2=sum2+a[i][j];
            else continue;
        }
   printf("sum1=%2d,sum2=%2d\n",sum1,sum2);
}

----------------解决方案--------------------------------------------------------
#include<stdio.h>
void main()
{
    int a[4][4],i,j,sum1=0,sum2=0;
    for(i=0;i<4;i++)
        for(j=0;j<4;j++)
            {
                printf("请为a[%d][%d]赋值:   ",i,j);
                scanf("%d",&a[i][j]);
            }
    for(i=0;i<4;i++)
        for(j=0;j<4;j++)
        {
            if(i=j)           //else永远不会被执行.因该是==
                sum1=sum1+a[i][j];
            else continue;
        }
    for(i=0;i<4;i++)
        for(j=3;j>=0;j++)      //循环不会结束
        {
            if(i+j==3)
                sum2=sum2+a[i][j];
            else continue;
        }
    for(i=0;i<4;i++)
        for(j=0;j<4;j++)
            printf("sum1=%2d,sum2=%2d\n",sum1,sum2);


}

----------------解决方案--------------------------------------------------------
回复 2# 的帖子
计算4×4矩阵的对焦线上数据之和
----------------解决方案--------------------------------------------------------
if(i=j)
                sum1=sum1+a[i][j];
一抬眼发现一Bug……大呼:好大的虫啊……这个可以排名第二,排名第一的是int i=2n+1;……………………
----------------解决方案--------------------------------------------------------
  相关解决方案