先排序一遍。然后数组遍历,第 i-1 和第 i 的数不同,k++(即为第k个小的数)
sort() //先排序
if(要第1小的数) return 第一个数
int k=1,i=1;
for(i;i<length;i++){
if(num!=num) k++
if(k==第几小数) return num
}
return 'NO'
这个要第二小数就更简单了,先遍历一遍min1=最小值
再遍历一遍找第二小的数min2=(大于min1 && 小于min2)
有就输出,没有就返回“NO”
#include<stdio.h>
int main()
{
int n, a, b, i, j, c, e = 0;
int temp, d;
scanf("%d", &d);
while (scanf("%d", &n) != '\n')
{
for (i = 1; i <= n; i++)
{
scanf("%d", &a);
}
i = 1;
while (i <= n)
{
for (j = i + 1; j <= n; j++)
if (a < a)
{
temp = a;
a = a;
a = temp;
}
b = a;
i++;
}
for (i = n - 1; i >= 1; i--)
{
if (n == 2)
{
for (i = 1; i <= 1; i++)
if (a > a) printf("%d", a);
else if (a > a) printf("%d", a);
else printf("NO");
goto c;
}
else if (b > b)
{
printf("%d", a);
goto c;
}
if (i == 1) printf("NO");
}
c:
printf("\n");
e++;
if (e == d)
break;
}
return 0;
}
页:
[1]