。。我用下载来的数据测试是正确的 在这边运行就错几个很奇怪的点 。。。帮忙跑下 。。。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int ccc,ttt;
char *token;
char seps[]="(,)";
struct pp
{
char s[10000];
int v;
}p[10000];
int main()
{
ttt=0;
char tmp[10000],tmpv[10000];
int i,len,tt,j;
while(scanf("%s",&tmp)!=EOF)
{
ttt++;
if(tmp[1]==')') continue;
len=-1;
tt=0;
if(tmp[strlen(tmp)-2]==',') tt=1;
token = strtok( tmp, seps );
strcpy(tmpv,token);
p[++len].v=atoi(tmpv);
token = strtok( NULL, seps );
if(tt==0)
strcpy(p[len].s,token);
else strcpy(p[len].s,"0");
while(scanf("%s",&tmp)!=EOF)
{
if(tmp[1]==')') break;
tt=0;
if(tmp[strlen(tmp)-2]==',') tt=1;
token = strtok( tmp, seps );
strcpy(tmpv,token);
p[++len].v=atoi(tmpv);
token = strtok( NULL, seps );
if(tt==0)
strcpy(p[len].s,token);
else strcpy(p[len].s,"0");
}
len++;
ccc=0;
for(i=0;i<len;i++)
for(j=0;j<len;j++)
{
if(strlen(p[i].s)==strlen(p[j].s))
{
if(strcmp(p[i].s,p[j].s)==-1)
{
strcpy(tmp,p[i].s);
strcpy(p[i].s,p[j].s);
strcpy(p[j].s,tmp);
tt=p[i].v;
p[i].v=p[j].v;
p[j].v=tt;
}
else if(strcmp(p[i].s,p[j].s)==0&&i!=j)
{
ccc=1;
break;
}
}
else if(strlen(p[i].s)<strlen(p[j].s))
{
strcpy(tmp,p[i].s);
strcpy(p[i].s,p[j].s);
strcpy(p[j].s,tmp);
tt=p[i].v;
p[i].v=p[j].v;
p[j].v=tt;
}
}
if(ccc==1)
goto out;
tt=0;
for(i=1;i<len;i++)
{
for(j=0;j<strlen(p[i].s)-1;j++)
tmp[j]=p[i].s[j];
tmp[j]=0;
if(j==0) strcpy(tmp,"0");
for(j=0;j<i;j++)
{
if(strcmp(tmp,p[j].s)==0)
{
tt++;
break;
}
}
}
if(tt==len-1&&strcmp(p[0].s,"0")==0)
{
for(i=0;i<len;i++)
printf("%d ",p[i].v);
printf("\n");
}
else printf("not complete\n");
out:
if(ccc==1)printf("not complete\n");
}
return 0;
}