小程序(第四周)
#include <stdio.h>
#include <stdlib.h>
void main()
{
int a,b,i,j,k,g,z=0;
int num[20][10]={{0},{0},{0},{0},{0},{0},{0},{0},{0},{0}};
int Max[20][2]={{0},{0}};
scanf("%d",&a); ////////数据组数
if(a<=0){
exit(0);
}
for(i=0;i<a;i++){
scanf("%d",&j); ////////每组数据个数
for(k=0;k<j;k++){
scanf("%d",&num[i][k]);
}
for(j=k-1;j>0;j--){ /////////一组结束冒泡排序
for(g=k-1;g>0;g--){
if(num[i][g]>num[i][g-1]){
b=num[i][g];
num[i][g]=num[i][g-1];
num[i][g-1]=b;
}
}
}
Max[i][0]=num[i][0];
while(num[i][z]>=Max[i][0]){
z++;
}
Max[i][1]=num[i][z];
z=0;
}
for(i=0;i<a;i++){
printf("%d %d\n",Max[i][0],Max[i][1]);
}
}
这道题的输入输出样例如下:
输入样例: 输出样例:
2 5 4
5 3 2
1 2 3 4 5
4
2 2 2 3
刚开始的时候,我的想法是都输入完成后,再进行运算。但是输入每一组的元素个数时,后一组总会把第一组覆盖掉。想了好久,最后改变方法,输入一组数就进行冒泡排序,把最大值和次大值存到一个二维数组里,这样不管几组数都不会被覆盖掉。