Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
Re:我是第一次用C做题目.请各位帮忙看下我这有什么问题In Reply To:我是第一次用C做题目.请各位帮忙看下我这有什么问题 Posted by:Zonnix at 2008-03-17 20:09:50 > 我是第一次用C做题目,搞了好一阵子终于可以运行了- -! > 不过好像出了些比较严重的错误...请各位帮忙指正一下~ > #include <stdio.h> > #include <malloc.h> > #include <string.h> > #define CREAT (struct num *) malloc (sizeof (struct num)) > struct num > { > char s[8]; > int amount; > struct num *next; > }; > > void main () > { > > int a,i,j=0; > char scnum [50],cmp[8],temp[8]; > struct num * head,* p1; > char change (char a[],char b[]); > struct num * rank (struct num *h,char a[]); > scanf ("%d",&a); > for (i=0;i<a;i++) > { > if (i==0) > { > head=(struct num *) malloc (sizeof (struct num)); > head->next=NULL; > scanf ("%s",scnum); > change (scnum,temp); > strcpy (head->s,temp); > } > else > { > scanf ("%s",scnum); > change (scnum,temp); > strcpy (cmp,temp); > head=rank (head,cmp); > } > } > p1=head; > if (p1->next==NULL) printf ("perfect"); > else > while (p1!=NULL) > { > printf ("%s %d",p1->s,p1->amount); > p1=p1->next; > } > } > > char change (char a[],char b[]) > { > int i,n; > for (i=0,n=0;i<50,n<8;i++) > { > if (n==3) > { > b[3]='-'; > n++; > } > switch(a[i]) > { > case'A': > case'B': > case'C':b[n]=2;n++;break; > case'D': > case'E': > case'F':b[n]=3;n++;break; > case'G': > case'H': > case'I':b[n]=4;n++;break; > case'J': > case'K': > case'L':b[n]=5;n++;break; > case'M': > case'N': > case'O':b[n]=6;n++;break; > case'P': > case'R': > case'S':b[n]=7;n++;break; > case'T': > case'U': > case'V':b[n]=8;n++;break; > case'W': > case'X': > case'Y':b[n]=9;n++;break; > default:break; > } > } > } > > struct num * rank (struct num * h,char a[]) > { > struct num * p0,* p1,* p2; > p1=h; > p0=CREAT; > strcpy (p0->s,a); > p0->amount=1; > while (strcmp (p0->s,p1->s)>0 && (p1->next!=NULL)) > { > p2=p1; > p1=p1->next; > } > if (strcmp (p0->s,p1->s)==0) > { > p1->amount+=1; > free (p0); > } > else if (strcmp (p0->s,p1->s)<0) > { > p0->next=p1; > p2->next=p0; > } > else > { > p1->next=p0; > p0->next=NULL; > } > } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator