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