Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

标准答案

Posted by 89cs at 2009-07-17 15:51:19 on Problem 1002 and last updated at 2009-07-17 15:51:48
#include "stdafx.h"


#include <stdio.h> 
  #include <stdlib.h> 
  #include <string.h> 
   
  char map[] = "22233344455566677778889999"; 
  char str[80], telNumbers[100000][9]; 
   
  int compare(const void *elem1,const void *elem2) { 
     //为函数模板 sort 定义数组元素的比较函数 
   return (strcmp((char*)elem1, (char*)elem2)); 
  }; 
   
  void standardizeTel(int n) { 
   int j, k; 
   
    j = k = -1 ; 
    while ( k<8 ) { 
    j++; 
      if ( str[j] == '-' )   
     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; 
  } 
   
  void main() 
  { 
   int n,i,j; 
   bool noduplicate; 
   
   scanf("%d",&n); 
      for(i=0;i<n;i++){//输入电话号码,存储到数组 telNumbers 中 
   scanf("%s",str); 
    standardizeTel(i); 
               //将 str中的电话号码转换成标准形式,存储在 telNu
   } 
   
   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) { 
     printf("%s %d\n", telNumbers[j], i-j); 
     noduplicate = false; 
    } 
   } 
    if ( noduplicate ) 
    printf("No duplicates.\n"); 
   
  } 

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator