4.3例题--487-3279--2974
来源:互联网 发布:淘宝店铺关键词优化 编辑:程序博客网 时间:2024/06/05 19:15
#include <stdio.h>#include <stdlib.h>#include <string.h>int compare(const void * elem1 , const void * elem2){ return (strcmp((char * )elem1 , (char * )elem2 ));} int main(int argc, char *argv[]){ char tmp[80], telNote[100001][9]; char map[]="22233344455566677778889999"; int n, k, i, j, count, duplicate; scanf("%d",&n); for( i = 0 ; i<100001 ; i++) memset(telNote[i],0,sizeof(telNote[i])); for( k=0 ; k<n ; k++ ) { scanf("%s",tmp); //电话号码标准化 for( i=0,j=0 ; tmp[i]!='\0' ; i++) { if( tmp[i]>='0' && tmp[i]<='9' ) telNote[k][j++] = tmp[i] ; else if(tmp[i]>='A'&&tmp[i]<='Z') telNote[k][j++] = map[tmp[i]-'A'] ; } } //电话号码本排序 qsort(telNote, n, 9, compare); //比较是否有重复的电话 k = 0; duplicate = 0; while( k<n ) { i = k; j = k+1; count = 0; while( j<n && strcmp(telNote[i],telNote[j])==0 ) { count++; j++; } if(count!=0)//有重复,输出 { duplicate = 1; printf("%c%c%c-%c%c%c%c %d\n",telNote[k][0],telNote[k][1],telNote[k][2],telNote[k][3],telNote[k][4],telNote[k][5],telNote[k][6],count+1); //printf("%s-%s %d",substr(0,3),substr(3,4),count); } k = j ; } if( duplicate==0 ) printf("No duplicates.\n"); system("PAUSE"); return 0;}
Q1:memset的使用。使用字符串数组的时候要注意初始化,或者在最后加'\0' memset的原型:extern void *memset(void *buffer, int c, int count);