WSunny111 2017-01-03 04:53 采纳率: 50%
浏览 891
已采纳

初学者请教C语言代码问题

1到16按任意顺序全部输入,并矩形4*4矩形输出,且计算出每行每列以及两个对角线的加和。请问下面的代码哪里错误?
运行结果:图片说明
#include
#define N 16
int main()
{
int a[N],i,r1,r2,r3,r4,c1,c2,c3,c4,d1,d2;
printf("Enter the numbers from 1 to 16 in any order:");
for(i=0;i<16;i++)
{
scanf("%d",&a[i]);
}

for(i=0;i<4;i++)
{
    printf("%d ",a[i]);
    r1+=a[i];
}
printf("\n");
for(i=4;i<8;i++)
{
    printf("%d ",a[i]);
    r2+=a[i];
}
printf("\n");
for(i=8;i<12;i++)
{
    printf("%d ",a[i]);
    r3+=a[i];
}
printf("\n");
for(i=12;i<16;i++)
{
    printf("%d ",a[i]);
    r4+=a[i];
}
printf("\n");



for(i=0;i<16;i+=4)
{
    c1+=a[i];
}
for(i=1;i<16;i+=4)
{
    c2+=a[i];
}
for(i=0;i<16;i+=4)
{
    c3+=a[i];
}
for(i=0;i<16;i+=4)
{
    c4+=a[i];
}


for(i=0;i<16;i+=4)
{
    d1+=a[i];
    i+=1;
}
for(i=3;i<16;i+=4)
{
    d2+=a[i];
    i+=1;
}
printf("Row sums:%d %d %d %d\n",r1,r2,r3,r4);
printf("Column sums:%d %d %d %d\n",c1,c2,c3,c4);
printf("Diagonal sums:%d %d\n",d1,d2);

}

  • 写回答

3条回答

  • miaochunlei 2017-01-03 07:26
    关注

    #include

    #define N 16

    int main()
    {
    int a[N] = {0};
    int i = 0;
    int r1 = 0;
    int r2 = 0;
    int r3 = 0;
    int r4 = 0;
    int c1 = 0;
    int c2 = 0;
    int c3 = 0;
    int c4 = 0;
    int d1 = 0;
    int d2 = 0;
    printf("Enter the numbers from 1 to 16 in any order:");
    for(i=0;i<16;i++)
    {
    scanf("%d",&a[i]);
    }
    for(i=0;i<4;i++)
    {
    printf("%d ",a[i]);
    r1+=a[i];
    }
    printf("\n");
    for(i=4;i<8;i++)
    {
    printf("%d ",a[i]);
    r2+=a[i];
    }
    printf("\n");
    for(i=8;i<12;i++)
    {
    printf("%d ",a[i]);
    r3+=a[i];
    }
    printf("\n");
    for(i=12;i<16;i++)
    {
    printf("%d ",a[i]);
    r4+=a[i];
    }
    printf("\n");

    for(i=0;i<16;i+=4)
    {
        c1+=a[i];
    }
    for(i=1;i<16;i+=4)
    {
        c2+=a[i];
    }
    for(i=2;i<16;i+=4)//0改为2
    {
        c3+=a[i];
    }
    for(i=3;i<16;i+=4)//0改为3
    {
        c4+=a[i];
    }
    
    
    for(i=0;i<16;i+=4)
    {
        d1+=a[i];
        i+=1;
    }
    for(i=3;i<16-3;i+=4)//16改为16-3
    {
        d2+=a[i];
        i-=1;           //-=改为+=
    }
    printf("Row sums:%d %d %d %d\n",r1,r2,r3,r4);
    printf("Column sums:%d %d %d %d\n",c1,c2,c3,c4);
    printf("Diagonal sums:%d %d\n",d1,d2);
    

    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥30 python代码,帮调试
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条