ACM 487-3279 如何老是答案不对呢

ACM 487-3279 怎么老是答案不对呢C/C++ code#includestdio.h#includectype.h#includestring.h#inclu

ACM 487-3279 怎么老是答案不对呢

C/C++ code
#include<stdio.h>#include<ctype.h>#include<string.h>#include<stdlib.h>char number[100000][20];char map[30]= "22233344455566677778889999";char str[30];void ConvertToStandNum(int k)//把str转化为标准号码,存入第k行{    int i,j,len;    len=strlen(str);    for(i=0,j=0; i<len; i++) //每个电话号8个字符    {        if(isdigit(str[i]))        {            number[k][j]=str[i];            j++;        }        else if(isupper(str[i]))        {            number[k][j]=map[str[i]-'A'];            j++;        }        else if(str[i]=='-')            continue;    }    for(i=20; i>=3; i--) //添加'-'    {        number[k][i+1]=number[k][i];    }    number[k][3]='-';}int compare(const void *a,const void *b){    return strcmp((char *)a,(char*)b);}int main(){    char string[30];    int n,i,counter;//n个电话号    bool boo=false;    scanf("%d",&n);    for(i=0; i<n; i++)    {        scanf("%s",str);        ConvertToStandNum(i);//把str转化为标准号码,存入第i行    }    qsort(number,n,sizeof(number[0]),compare);//排序    counter=0;//重复电话号码计数    int k=0;    for(i=0; i<n; i++)    {        strcpy(string,number[k]);        if(!strcmp(number[i],string))//跟前一个一样 则计数            counter++;        else if(counter>=2)//不一样则输出重复的号码和重复的次数        {            printf("%s %d\n",string,counter);            k=i+1;  //暂存第k(i+1)个号码            counter=0;            boo=true;        }        else    //跟前一个号码不一样且没有重复        {            k=i+1;            counter=0;        }    }    if(!boo)        printf("No duplicates.\n");    return 0;}


[解决办法]
请用以下例子调试:
2
4873279
4873279