1200 最大的兩個數

/*
題目描述:
    輸入一個四行五列的矩陣,找出每列最大的兩個數。
輸入:
    輸入第一行包括一個整數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;
}

發佈了69 篇原創文章 · 獲贊 2 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章