- 论坛徽章:
- 0
|
还是错了 漏了和相等的特殊情况。改正如下:
#include<stdio.h>
#include<stdlib.h>
int cmp ( const void *a , const void *b );
int main(void)
{
int a[5] = {9,2,5,71,6};
int b[5] = {9,3,5,8,1};
int c[10];
int i,s=1,suma = 0,sumb = 0; //s为sumb=sumb次数标志位;
for(i = 0;i < 5;i++)
c = a;
for(i = 5;i < 10;i++)
c = b[i - 5];
qsort(c,10,sizeof(int),cmp);
a[0] = c [9];
b[0] = c[8];
i=1;
while(i<5)
{
suma += a[i-1];
sumb += b[i-1];
if(suma < sumb)
{
a = c[9-i-s];
b = c[i-1];
}
else if(suma > sumb)
{
a = c[i-1];
b = c[9-i-s];
}
else
{
a = c[9-i-s];
b = c[9-i-s-1];
s += 1;
}
i++;
}
for(i = 0;i < 5;i++)
printf("%3d",a);
printf("\n");
for(i = 0;i < 5;i++)
printf("%3d",b);
printf("\n");
return 0;
}
int cmp ( const void *a , const void *b )
{
return *(int *)a - *(int *)b;
}
[ 本帖最后由 虑而后能得 于 2008-7-7 19:14 编辑 ] |
|