百练的编码框
由于显示问题有的注释
复制过去会自动换行
原来是不要紧的啊
···
include<iostream>
include<stdio.h>
include<string.h>
using namespace std;
char map[] = "22233344455566677778889999";
char str[80], telNumbers[100000][9];
int compare(const void elem1, const voidelem2) {//为函数模板sort定义数组元素的比较函数
return(strcmp((char)elem1, (char)elem2));
}
void standardizeTel(int n) {
int j, k;//j用来计原来的字符数,k为标准化后的。
j = k = -1;
while (k < 8) {
j++;
if (str[j] == '-')//用“-”就会报错: E0042 操作数类型不兼容("char" 和 "const char *")
continue;//跳出本次循环
k++;
if (k == 3) {
telNumbers[n][k] = '-';//第四位
k++;
}
if (str[j] >= 'A'&&str[j] <= 'Z') {
telNumbers[n][k] = map[str[j] - 'A'];
continue;//跳出本次循环
}
telNumbers[n][k] = str[j];
}
telNumbers[n][k] = '\0';
return;
}
int main()
{
int n, i, j;
bool noDuplicate;
cin >> n;
for (i = 0; i < n; i++) {
cin >> str;
standardizeTel(i);
}
qsort(telNumbers, n, 9, compare);
noDuplicate = true;
i = 0;
while (i < n) {
j = i;
i++;
while (i < n&&strcmp(telNumbers[i], telNumbers[j]) == 0)
i++;
if ((i - j) > 1) {
cout << telNumbers[j] << " " << i - j<<endl ;
noDuplicate = false;
}
}
if (noDuplicate)
{
cout << "No duplicates." << endl;
}
system("pause");
}
···