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 |
我是第一次用C做题目.请各位帮忙看下我这有什么问题我是第一次用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