答案错误!崩溃了
#include <stdio.h>#include <string.h>
int main()
{
int i,n,j,e=0,f=0,d[20],t,s=0;
char ch[1000][16],c[500][16];
char str[16],str2[16],str4[16];
char str1[]={".exe"};
while(scanf("%d",&n) && n!=0)
{
s=0;
scanf("\n");
for(i=0;i<n;i++)
{
gets(ch[i]);
d[i]=strlen(ch[i]);
}
for(i=0;i<n;i++)
{
e=0;
t=0;
for(j=d[i]-4;j<=d[i]-1;j++)
{
str[e]=ch[i][j];
e++;
}
str[e]='\0';
if(strcmp(str,str1)==0)
{
f=0;
for(j=0;j<d[i]-4;j++)
{
str2[f]=ch[i][j];
f++;
}
str2[f]='\0';
for(j=0;j<n;j++)
{
t=0;
if(strcmp(str2,ch[j])==0)
{
t=1;
strcpy(c[s],ch[i]);
s++;
break;
}
}
}
}
for(i=0;i<s-1;i++)
{
for(j=i+1;j<s;j++)
{
if(strcmp(c[i],c[j])>0)
{
strcpy(str4,c[i]);
strcpy(c[i],c[j]);
strcpy(c[j],str4);
}
}
}
for(i=0;i<s;i++)
puts(c[i]);
}
return 0;
}
题目是
我会给你一些文件名列表,你能开发一款“病毒扫描器”帮我识别出哪些是病毒文件吗?识别方法是:
文件名以“.exe”结尾。
在文件名列表中同时还存在去掉“.exe”后同名的文件。
输入
输入数据有多组。
每组输入的第一行是一个整数 n(0 < n <= 1000),表示接下来会有 n 个文件名。
接下来的 n 行为文件名,每个文件名占一行。
文件名最多 16 个字符,并且中间不包含空格。
如果 n 等于 0,则程序结束。
输出
以字典顺序输出每一组数据中的病毒文件名。
每个文件名输出一行。
样例输入
2
a.txt
a.txt.exe
2
a
a.txt
10
a.txt
b.txt
d.txt.exe
c.txt
d.txt
a.txt.exe
e.txt
f.txt
e.txt.exe
g.txt
0
样例输出
a.txt.exe
a.txt.exe
d.txt.exe
e.txt.exe
提示
例子中第二组没有病毒文件。
找出病毒文件后,输出前不要忘了排序。
求高手解答到底哪里错了!输出来和测试数据一模一样啊啊!谢谢!