/* 看到楼主的帖子后想着结果就写出了这个方法,以前我从来没用过这个方法 */
#include <stdio.h>
int main ()
{
int sum[10] = {3,1,11,32,62,52,57,43,52,97}, sum2[10];
int max, i, j, n;
max = 0;
for (j=0; j<10; j++) /* 外循环将sum[10]中的数从大到小存入sum2[10]中 */
{
max = NULL;
for (i=0; i<10; i++) /* 此循环取最大值 */
{
if (max < sum[i] && sum[i] != NULL) /* 取最大值赋给变量max */
{
max = sum[i];
}
}
for (n=0; n<10; n++) /* 此循环将最大值赋空值 */
{
if (sum[n] == max)
{
sum[n] = NULL;
}
}
sum2[j] = max; /* 将最大值赋给sum2[n]中 */
}
for (i=0; i<10; i++)
{
printf("%d\t",sum2[i]);
}
getch();
}
/*
以上代码有一个让我头痛的地方,大家也想到了吧 将最大值赋空值NULL其实不过是赋0值,那么
如果sum[i]中含有负数,则条件 (sum[i] < max && max != NULL) 成立, 于是将负数赋值为NULL,也就是0, 不知哪位C高手指点一下,谢谢,最好是赋一个特别的值,而不是空值NULL
*/