二维整数数组按每行数据之和升序排列 (结构体类型)
【问题描述】将一个4*4二维整数数组按每行数据之和升序排列后输出,要求每行数据用结构体类型。(注:计算机二级考试下午试题)【输入形式】分行输入各数,空格分开
【输出形式】分行输出各数和这行各数和,空格分开
【样例输入】
2 2 3 4
9 10 11 12
1 3 5 7
5 10 1 20
【样例输出】
2 2 3 4 11
1 3 5 7 16
5 10 1 20 36
9 10 11 12 42
【样例说明】输入的二维数组各行的和为11,42,16,36,按升序得11,16,36,42,对应的数组和各数的和输出就是:
2 2 3 4 11
1 3 5 7 16
5 10 1 20 36
9 10 11 12 42
———————————————以下是我写的代码,总是有一个数据错误(见附文),找不出原因,希望各位可以帮忙指正。万分感谢!——————————————
#include<stdio.h>
int main()
{
struct st
{
int x[4];
int sum;
}s[4],t;
int i,j,k;
for (i=0;i<4;i++)
{
s[i].sum = 0;
for (j=0;j<4;j++)
{
scanf("%d",&s[i].x[j]);
s[i].sum+=s[i].x[j];
}
}
for (i=0;i<3;i++)
{
k=i;
for (j=i+1;j<4;j++)
if (s[i].sum>s[j].sum)
k=j;
if (k!=i)
{
t=s[i];
s[i]=s[k];
s[k]=t;
}
for (i=0;i<4;i++)
{
for (j=0;j<4;j++)
printf("%d ",s[i].x[j]);
printf("%d\n",s[i].sum);
}
return 0;
}
————————————————————以下是错误的数据,仅供参考——————————————————————
错误输出:
1508049952 32765 1508049968 32765 9
5 10 1 20 36
9 10 11 12 42
9 10 11 12 42
期望输出:
2 2 3 4 11
1 3 5 7 16
5 10 1 20 36
9 10 11 12 42