您的位置:首页 > 其它

pku 1002 的奇怪问题

2008-07-29 18:14 253 查看
今天本来是想找几个水体练练手但是就这么个water 题的一种奇怪的现象把我困了好久,想问一下大家这个现象是为什么

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

char phone[100000][9];
void change(char * num )
{
int len=strlen(num);
int i;
int j;
char realnum[100];

for(i=0,j=0;i<len;i++)
{
if(num[i]=='-')
{
continue;
}
else
{
if(j==3)
{
realnum[j]='-';
j++;
i--;
continue;
}

if (num[i]=='A' ||num[i]=='B'||num[i]=='C') realnum[j]='2';
else if(num[i]=='D' ||num[i]=='E'||num[i]=='F') realnum[j]='3';
else if(num[i]=='G' ||num[i]=='H'||num[i]=='I') realnum[j]='4';
else if(num[i]=='J' ||num[i]=='K'||num[i]=='L') realnum[j]='5';
else if(num[i]=='M' ||num[i]=='N'||num[i]=='O') realnum[j]='6';
else if(num[i]=='P' ||num[i]=='R'||num[i]=='S') realnum[j]='7';
else if(num[i]=='T' ||num[i]=='U'||num[i]=='V') realnum[j]='8';
else if(num[i]=='W' ||num[i]=='X'||num[i]=='Y') realnum[j]='9';
else realnum[j]=num[i];
j++;
}
}
realnum[j]='/0';

strcpy(num,realnum);
}

int compare(const void *p1,const void *p2)
{
return(strcmp((char*)p1,(char*)p2));
}
int main()
{
int n,i,j,m;
bool ex=0;

scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%s",&phone[i]);
change(phone[i]);
}
memset(phone,0,n);
qsort(phone,n,sizeof(phone[0]),compare);

m=1;
for(int i=0;i<n;i++)

if(strcmp(phone[i],phone[i+1])==0)
m++;
else
{
if(m>1)
{
printf("%s %d/n",phone[i],m);
ex=1;
}

m=1;

}

if(!ex) printf("No duplicates./n");

return 0;
}

现在代码可以叫成功哦,但是如果将 char phone[100000][9]; 放到main函数中定义则会出项 WA 谁能帮忙解释一下
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ini c