1200 最大的两个数

来源:互联网 发布:大司马淘宝店地址 编辑:程序博客网 时间:2024/06/06 06:20
/*题目描述:    输入一个四行五列的矩阵,找出每列最大的两个数。输入:    输入第一行包括一个整数n(1<=n<=1000),接下来的四行每行包括五个整数。代表一个四行五列的矩阵,矩阵元素全部是整数。输出:    可能有多组测试数据,对于每组数据,按照样例输出的格式将每列最大的两个数输出,如果最大的两个数中的一个数在这一列中有多个相同的值,则行值取行值小的那一个。    输出时要保留原矩阵的行列顺序,即在原矩阵中行值小的,在输出矩阵中的行值依然小。样例输入:11  2   4  9  8-1  4  9  8  812  9  8  7  07   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;}

0 0
原创粉丝点击