码迷,mamicode.com
首页 > 其他好文 > 详细

1200 最大的两个数

时间:2015-03-08 21:38:07      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:c语言   矩阵存储   

/*
题目描述:
    输入一个四行五列的矩阵,找出每列最大的两个数。
输入:
    输入第一行包括一个整数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 最大的两个数

标签:c语言   矩阵存储   

原文地址:http://blog.csdn.net/xu758142858/article/details/44137001

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!