/*
题目描述:
输入一个四行五列的矩阵,找出每列最大的两个数。
输入:
输入第一行包括一个整数n(1<=n<=1000),接下来的四行每行包括五个整数。代表一个四行五列的矩阵,矩阵元素全部是整数。
输出:
可能有多组测试数据,对于每组数据,按照样例输出的格式将每列最大的两个数输出,如果最大的两个数中的一个数在这一列中有多个相同的值,则行值取行值小的那一个。
输出时要保留原矩阵的行列顺序,即在原矩阵中行值小的,在输出矩阵中的行值依然小。
样例输入:
1
1 2 4 9 8
-1 4 9 8 8
12 9 8 7 0
7 8 9 7 0
样例输出:
12 9 9 9 8
7 8 9 8 8
提示:
每个数字后面都要输出一个空格
*/
# include <stdio.h>
int main(void)
{
int n,matrix[4][5];
while(scanf("%d", &n) != EOF)
{
getchar(); //吸收回车符。
if(n <= 0) break;
int i,j,max,flag = 0;
for(i = 0; i < 4; i++)
{
for(j = 0; j < 5; j++)
{
scanf("%d", &matrix[i][j]);
}
}
for(i = 0; i < 4; i++)
{
for(j = 0; j < 5; j++)
{
printf("%4d ", matrix[i][j]);
}
printf("\n");
}
for(j = 0; j < 5; j++)
{
max = matrix[0][j];
for(i = 1; i < 4; i++)
{
if(max < matrix[i][j])
{
flag = i;
max = matrix[flag][j];
}
}
max = matrix[flag][j];
matrix[flag][j] = matrix[0][j];
matrix[0][j] = max;
flag = 0;
}
for(j = 0, flag = 1; j < 5; j++)
{
max = matrix[1][j];
for(i = 2; i < 4; i++)
{
if(max < matrix[i][j])
{
flag = i;
max = matrix[flag][j];
}
}
max = matrix[flag][j];
matrix[flag][j] =matrix[1][j];
matrix[1][j] = max;
flag = 1;
}
for(i = 0; i < 2; i++)
{
for(j = 0; j < 5; j++)
{
printf("%4d ", matrix[i][j]);
}
printf("\n");
}
}
return 0;
}
1200 最大的两个数
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.