数字排序问题,方法今天无意中想到,以前不是用这个方法
#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 && sum != NULL) /* 取最大值赋给变量max */
{
max = sum;
}
}
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);
}
printf("\n");
for (i=0; i<10; i++)
{
printf("%d\t",sum);
}
getch();
}
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 && sum != NULL) /* 取最大值赋给变量max */
{
max = sum;
}
}
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);
}
printf("\n");
for (i=0; i<10; i++)
{
printf("%d\t",sum);
}
getch();
}
/*
以上代码有一个让我头痛的地方,大家也想到了吧 将最大值赋空值NULL其实不过是赋0值,那么
如果sum中含有负数,则条件 (sum < max && max != NULL) 成立, 于是将负数赋值为NULL,也就是0, 不知哪位C高手指点一下,谢谢,最好是赋一个特别的值,而不是空值NULL
*/
[此贴子已经被作者于2005-11-21 22:01:19编辑过]