#include
<
iostream
>
#include < iomanip.h >
#include < stdlib.h >
int cmp( const void * a, const void * b)
{
return * ( int * )a -* ( int * )b;
}
main()
{
int i,j,line,k,duplicate = 0 ,times;
char ssphone[ 101 ],snphone[ 8 ];
char phonetable[] = " 2223334445556667777888999 " ; // 用差值填充字符数组,快速计算转换后的值
cin >> line;
long * nphone = new long [line];
for (i = 0 ;i < line;i ++ )
{
cin >> ssphone;
k = 0 ;
for (j = 0 ;ssphone[j];j ++ )
{
if (ssphone[j] >= ' A ' && ssphone[j] < ' Z ' )
{
snphone[k] = phonetable[ssphone[j] - ' A ' ];
k ++ ;
}
if (ssphone[j] >= ' 0 ' && ssphone[j] <= ' 9 ' )
{
snphone[k] = ssphone[j];
k ++ ;
}
}
nphone[i] = atoi(snphone); // 字符数组转化为int
}
qsort(nphone,line, sizeof ( long ),cmp); // qsort快速排序
for (i = 0 ;i < line;)
{
times = 1 ;
for (j = i + 1 ;j < line && nphone[j] == nphone[i];j ++ )
times ++ ; // 号码已排序 相同号码相邻 计算出现次数
if (times > 1 )
{
duplicate = 1 ;
cout << setfill( ' 0 ' ) << setw( 3 ) << nphone[i] / 10000 << " - " << setfill( ' 0 ' ) << setw( 4 ) << nphone[i] % 10000 << " " << times << endl;
}
// 上面输出语句对输出格式做了精确控制
i = j; // 将j赋给i 跳到下个号码
}
if (duplicate == 0 )cout << " No duplicates. " << endl;
delete[]nphone;
system( " pause " );
}
#include < iomanip.h >
#include < stdlib.h >
int cmp( const void * a, const void * b)
{
return * ( int * )a -* ( int * )b;
}
main()
{
int i,j,line,k,duplicate = 0 ,times;
char ssphone[ 101 ],snphone[ 8 ];
char phonetable[] = " 2223334445556667777888999 " ; // 用差值填充字符数组,快速计算转换后的值
cin >> line;
long * nphone = new long [line];
for (i = 0 ;i < line;i ++ )
{
cin >> ssphone;
k = 0 ;
for (j = 0 ;ssphone[j];j ++ )
{
if (ssphone[j] >= ' A ' && ssphone[j] < ' Z ' )
{
snphone[k] = phonetable[ssphone[j] - ' A ' ];
k ++ ;
}
if (ssphone[j] >= ' 0 ' && ssphone[j] <= ' 9 ' )
{
snphone[k] = ssphone[j];
k ++ ;
}
}
nphone[i] = atoi(snphone); // 字符数组转化为int
}
qsort(nphone,line, sizeof ( long ),cmp); // qsort快速排序
for (i = 0 ;i < line;)
{
times = 1 ;
for (j = i + 1 ;j < line && nphone[j] == nphone[i];j ++ )
times ++ ; // 号码已排序 相同号码相邻 计算出现次数
if (times > 1 )
{
duplicate = 1 ;
cout << setfill( ' 0 ' ) << setw( 3 ) << nphone[i] / 10000 << " - " << setfill( ' 0 ' ) << setw( 4 ) << nphone[i] % 10000 << " " << times << endl;
}
// 上面输出语句对输出格式做了精确控制
i = j; // 将j赋给i 跳到下个号码
}
if (duplicate == 0 )cout << " No duplicates. " << endl;
delete[]nphone;
system( " pause " );
}