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 谁能帮忙解释一下
#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 谁能帮忙解释一下
相关文章推荐
- PKU-1002使用java编写用快速排序为何一直Runtime Error 无解 留下问题 以后再看
- PKU 1002 487-3279 问题的解决
- 奇怪的EASTL编译warning问题
- VBA编程时ListView Statusbar控件无法使用的奇怪问题
- 关于在线编辑器的一个奇怪的问题
- IOS8 ARM64下奇怪的崩溃问题
- 访问网络服务器时出现的奇怪问题
- 一些奇怪的问题
- zoj 1002 (深度优先搜索)(深入理解n皇后问题)(小感悟)
- 使用wordpress时遇到的一个奇怪的问题:把页面设置为首页之后分页失效
- 《疯狂Java讲义精粹》读书笔记5 ------ 一个奇怪的问题
- 装hadoop,忙活了两天,碰到奇怪的问题
- JBuilder2005无法启动的奇怪问题!
- 发现一个gdm的奇怪问题
- log4net碰到的奇怪问题
- vs2005奇怪的断点无效问题
- 英文操作系统奇怪的问题
- SVN提交碰到的问题奇怪的问题
- oracle数据库编码不同而出现的奇怪问题
- hdu 1002 大数问题