我不是求合,是计算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; }