| ||||||||||
| 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 | |||||||||
求大神分析一下runtime error 的原因,才开始做,没经验!不胜感激。。。#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char map[] = "22233344455566677778889999"; //字母转化成数字
char str[50]; //读入的号码
char tel[10000][9]; //标准的号码
//标准函数sort()的比较条件
int compare ( const void* elem1, const void* elem2 )
{
return strcmp( (char*)elem1, (char*)elem2 );
}
//好记的号码转化为标准的号码
void standardizeTel ( int n )
{
int k = 0;
for ( int i = 0; str[i] != EOF; i++ )
{
if (str[i] == '-')
{
continue;
}
if ( k == 3 )
{
tel[n][k++] = '-';
}
if ( str[i] >= 'A' && str[i] <= 'Z')
{
tel[n][k++] = map[ str[i] - 'A' ];
continue;
}
tel[n][k++] = str[i];
}
tel[n][k] = '\0';
}
int main ()
{
int n; //号码的数量
scanf ( "%d", &n );
for ( int i = 0; i < n; i++ ) //输入n个号码并标准化
{
scanf ( "%s", str );
standardizeTel ( i );
}
qsort ( tel, n, 9, compare ); //字典排序
bool duplicate = true;
int j , k = 0;
while ( k < n )
{
j = k;
k++;
while ( (strcmp ( tel[j], tel[k] ) == 0) && (k < n) )
{
k++;
}
if( k - j > 1)
{
duplicate = false;
printf ( "%s %d\n", tel[j], (k - j) );
}
}
if ( duplicate )
{
printf ("No duplicates.\n");
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator