755 - 487--3279

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char tel[100],telephone[100010][100];
int cmp(const void *_a,const void *_b)
{
 char *a=(char *)_a;
 char *b=(char *)_b;
 return strcmp(a,b);
}
void name(char *tel,int i)
{
 int j,l,n=0;
 l=strlen(tel);
 for(j=0;j<l;j++)
 {
  if(tel[j]>='A'&&tel[j]<='O')
   telephone[i][n++]=(tel[j]-'A')/3+'2';
  else if(tel[j]=='P'||tel[j]=='S'||tel[j]=='R')
   telephone[i][n++]='7';
  else if(tel[j]>='T'&&tel[j]<='Y')
   telephone[i][n++]=(tel[j]-'T')/3+'8';
  else if(tel[j]>='0'&&tel[j]<='9')
   telephone[i][n++]=tel[j];
  else;
 }
 telephone[i][n]='\0';
}
int main()
{
 int i,j,k,cases,n,count,flag;
 scanf("%d",&cases);
 getchar();
    getchar();

 for(k=0;k<cases;k++)
 {
 
  if(k)
   printf("\n");
    scanf("%d",&n);
    getchar();

    flag=0;
    for(i=0;i<n;i++)
    {
  gets(tel);
  name(tel,i);
    }
     qsort(telephone,n,sizeof(telephone[0]),cmp);
  count=1;
     for(i=0;i<n-1;)
  {
   while(strcmp(telephone[i],telephone[i+1])==0&&i<n-1)
   {
    i++;
    count++;
   }
   if(count>1)
   {
    for(j=0;j<3;j++)
        printf("%c",telephone[i][j]);
    printf("-");
          for(j=3;j<7;j++)
     printf("%c",telephone[i][j]);
    printf(" %d\n",count);
    count=1;
    flag=1;
   }
   while(strcmp(telephone[i],telephone[i+1])!=0&&i<n-1)
    i++;
  }
  if(!flag)
   printf("No duplicates.\n");
 }
 return 0;
}

你可能感兴趣的:(755 - 487--3279)