我不是求合,是计算1的个数.然后由数组记录,按照这个记录对那个真实的数组进行排序.

感谢你们带我找到星空下美丽神话,无论经历多少苦痛也不放弃的梦;插上希望翅膀乘风我和你们飞翔,飞过海天尽头携手把梦想实现.....
程序代码:#define Slen 20
#include <stdio.h>
int MAX;
void Funone(char **s,int *m) /* 求每串1的次数 */
{
int i;
char *p;
for(i=0;i<MAX;i++)
{
p=s[i];
m[i]=0;
while(*p!='\0')
{
if(*p=='1')m[i]++;
p++;
}
}
}
void Preface(char **s,int *m) /* 排序 */
{
int i,j,min,t,k;
char *p;
for(i=0;i<MAX-1;i++)
{
min=m[i];
k=i;
for(j=i+1;j<MAX;j++)
{
if(min>m[j])min=m[j],k=j;
}
if(k!=i)
{
t=m[i],m[i]=m[k],m[k]=t;
p=s[i],s[i]=s[k],s[k]=p;
}
}
}
int main(void)
{
int i,j,n,*m;
char **s,*p;
printf("Input the biggest number:");
scanf("%d",&MAX);
m=malloc(MAX*sizeof(int)); /* 给m分配空间,作用:用来保存对应字符串1的次数 */
s=malloc(MAX*sizeof(char *));
*s=malloc(MAX*sizeof(char)*Slen);
for(i=1;i<MAX;i++)
{
s[i]=s[i-1]+Slen;
}
for(i=0;i<MAX;i++)
scanf("%s",s[i]);
Funone(s,m);
Preface(s,m);
for(i=0;i<MAX;i++)
printf("%-5d %s\n",m[i],s[i]);
getch();
return 0;
}
