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);