对给出的整数组,按照数组中整数的各位和的大小来排序.
#include<iostream.h>
#include<iomanip.h>
int qsort(int *array[],int len);
void main()
{
int a[]={12,32,42,51,8,16,51,21,19,9};
int b[10],s[10],*a1[10]; //*a1[]是存放a[]中每项整数的合的数组
int i,j;
for(i=0;i<10;i++)
*a1[i]=a[i]; //a1[]为地址数组,内容为a[]的整数
for(i=0;i<10;i++)
{
while(a[i]!=0)
{
b[j]=a[i]%10;
a[i]=a[i]/10;
j++;
}
for(;j>=0;--j)
s[i]+=b[j]; //s[]求出每项a[]整数的合的值
*a1[i]=s[i];
}
qsort(*a1[],10);
for(i=0;i<10;i++)
cout<<setw(5)<<a1[i];
cout<<endl;
}
int qsort(int *array[],int len)
{
int temp,*temp1;
for(int i=0;i<len-1;i++)
if(*array[i]>*array[i+1])
{
temp=*array[i];*array[i]=*array[i+1];*array[i+1]=temp; //交换值
temp1=array[i];array[i]=array[i+1];array[i+1]=temp1; //交换地址
}
return 0;
}
我的想法是:数组a[]里的每项整数作为数组s[]的地址,s[]就是数组a每项整数的各位数之合的数组.即*a1[]中,a1[]里内容与a[]一样,*a1[]内容与s[]一样,写出上面程序,调试红色处出错,搞不定了,帮忙~
另外,有朋友有其他想法的也说下,不必写代码.