64,642
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
int main(void)
{
float a[5][5] = {0.0f};
int i, j;
for(i = 0; i < 4; ++i){
printf("Please enter 4 number now : \n");
scanf("%f%f%f%f", &a[i][0], &a[i][1], &a[i][2], &a[i][3]);
}
printf("Please stop!\n");
for(i = 0; i < 4; ++i){
a[4][i] = a[0][i] + a[1][i] + a[2][i] + a[3][i];
a[i][4] = a[i][0] + a[i][1] + a[i][2] + a[i][3];
}
a[i][i] = a[0][0] + a[0][3] + a[1][1] + a[1][2] +
a[2][2] + a[2][1] + a[3][0] + a[3][3];
for(i = 0; i < 5; ++i){
for(j = 0; j < 5; ++j){
printf("%.2f ", a[i][j]);
}
printf("\n");
}
return 0;
}
Please enter 4 number now :
1 2 3 4
Please enter 4 number now :
2 3 4 5
Please enter 4 number now :
3 4 5 6
Please enter 4 number now :
4 5 6 7
Please stop!
1.00 2.00 3.00 4.00 10.00
2.00 3.00 4.00 5.00 14.00
3.00 4.00 5.00 6.00 18.00
4.00 5.00 6.00 7.00 22.00
10.00 14.00 18.00 22.00 32.00
#include<stdio.h>
int main()
{
float a[5][5];
int i,j,n;
float sum1=0,sum2=0,sum3=0,sum4=0,sum=0;
for(i=0,n=1;i<4&&n<17;i++) // 输入
{
for(j=0;j<4;j++)
{
scanf("%f",&a[i][j]);
n++;
}
}
for(i=0;i<4;i++) // sum3、sum4分别作为行和和列和,改动的地方是:在二重循环里加入了sum3=0和sum4=0,为了给每一行或者每一列求和之后将其置0;
{
for(j=0,sum3=0;j<4;j++)
{
sum3+=a[i][j];
a[i][4]=sum3;
}
printf("%f",a[i][4]);
printf("\n");
}
for(j=0;j<4;j++)
{
for(i=0,sum4=0;i<4;i++)
{
sum4+=a[i][j];
a[4][j]=sum4;
}
printf("%f",a[4][j]);
printf("\n");
}
for(i=0,j=0;i<4;i++,j++) //输出对角线 改动了循环条件和sum2的值。得到正确结果。
{
sum1+=a[i][j];
sum2+=a[i][3-j];
sum=sum1+sum2;
a[4][4]=sum;
}
printf("%f",a[4][4]);
printf("\n");
return 0;
}
做了一下代码整合。
#include<stdio.h>
int main()
{
float a[5][5],sum1=0,sum2=0,sum3=0,sum4=0,sum=0;;
int i,j;
for(i=0,n=1;i<4;i++) // 输入
{
for(j=0;j<4;j++)
{
scanf("%f",&a[i][j]);
}
}
for(i=0;i<4;i++) // sum3、sum4分别作为行和和列和。
{
for(j=0,sum3=0,sum4=0;j<4;j++)
{
sum3+=a[i][j];
a[i][4]=sum3;
sum4+=a[j][i];
a[4][i]=sum4;
}
};
for(i=0,j=0;i<4;i++,j++) // 计算对角线
{
sum1+=a[i][j];
sum2+=a[i][3-j];
sum=sum1+sum2;
a[4][4]=sum;
}
for(i=0;i<5;i++) //输出
{
for(j=0;j<5;j++)
{
printf("%f ",a[i][j]);
};
printf("\n");
}
return 0;
}
#include<stdio.h>
int main()
{
float a[5][5];
int i,j,n;
float sum1=0,sum2=0,sum3=0,sum4=0,sum=0;
for(i=0,n=1;i<4&&n<17;i++) // 输入
{
for(j=0;j<4;j++)
{
scanf("%f ",&a[i][j]);
n++;
}
}
for(i=0;i<4;i++) // sum3想作为每行的和。
{
for(j=0;j<4;j++)
{
sum3+=a[i][j];
a[i][4]=sum3;
}
printf("%f",a[i][4]); //这里多了个空格。
printf("\n");
}
for(j=0;j<4;j++) // sum4想作为每列的和。 这里有个错误,第5行是a[i][j]。
{
for(i=0;i<4;i++)
{
sum4+=a[i][j];
a[4][j]=sum4;
}
}
printf("%f",a[4][j]);
for(i=0;j>=0&&i+j==3;i++) //输出对角线 这里循环条件不对,直接不进入循环。
{
sum1+=a[i][i];
sum2+=a[i][j];
sum=sum1+sum2;
a[4][4]=sum;
}
printf("%f",a[4][4]);
printf("\n");
return 0;
}