关于上一次的病毒扫描问题,再次开贴请教.
上一次发了一个病毒扫描问题.这一次把我的和同学程序一并发上来,求教有什么不同???
程序代码:#include<stdio.h>
#include<string.h>
int main()
{
int n,m,i,j,q,k;
char a[1000][100],b[100],c[1000][100];
char d[100];
for(;;)
{
scanf("%d\n",&n);
if(n==0)break;
q=0;
for(i=0;i<n;i++)
gets(a[i]);
for(i=0;i<n;i++)
{
m=strlen(a[i]);
if(m>4&&a[i][m-1]=='e'&&a[i][m-2]=='x'&&a[i][m-3]=='e'&&a[i][m-4]=='.')
{
for(j=0;j<m-4;j++)
b[j]=a[i][j];
b[j]='\0';
for(j=0;j<n;j++)
{
if(strcmp(b,a[j])==0)
{
strcpy(c[q],a[i]);
q++;
}
}
}
else continue;
}
if(q==1)
puts(c[0]);
else
{
for(i=0;i<q;i++)
{
strcpy(b,"zzzzzzzzzzzzzzzzzzzzzzzzzzz");
for(j=i;j<q;j++)
{
if(strcmp(c[j],b)<0)
{
strcpy(b,c[j]);
k=j;
}
}
strcpy(d,c[i]);
strcpy(c[i],b);
strcpy(c[k],d);
}
for(i=0;i<q;i++)
puts(c[i]);
}
}
return 0;
}
程序代码:#include<stdio.h>
#include<string.h>
int main()
{
int sum,num,i,j,flag=0,mark=0;
char ss[1001][20],s1[1001][20],s2[1001][20],s3[1001][20],tmp[20];
while(scanf("%d",&sum)&&sum){
if(sum==0)break;
scanf("\n");
for(i=0;i<sum;i++){
gets(ss[i]);
} //输入
for(i=0;i<sum;i++)
for(j=0;;j++){
if(ss[i][j]=='\0'||ss[i][j]=='\n')break;
if(ss[i][j]=='.'&&ss[i][j+1]=='e'&&ss[i][j+4]=='\0')
{
strcpy(s1[flag],ss[i]);
flag++;
break;
}
} //末尾是.exe的保存
for(i=0;i<flag;i++)
for(j=0;;j++){
s2[i][j]=s1[i][j];
if(s1[i][j+1]=='.'&&s1[i][j+2]=='e'&&s1[i][j+5]=='\0'){
s2[i][j+1]='\0';
break;
}
} //把.exe割掉
for(i=0;i<flag;i++)
for(j=0;j<sum;j++){
if(strcmp(s2[i],ss[j])==0)
{ strcpy(s3[mark],s1[i]);
mark+=1;
break;
}
} //判断是否有和去除.exe相同的文件 有的话就填上.exe
for(i=0;i<mark-1;i++)
for(j=0;j<mark-1-i;j++)
{
if(strcmp(s3[j],s3[j+1])>0)
{
strcpy(tmp,s3[j]);
strcpy(s3[j],s3[j+1]);
strcpy(s3[j+1],tmp);
}
} //排序
for(i=0;i<mark;i++){
puts(s3[i]);
}
flag=0;mark=0;
}
return 0;
}运行的时候结果一样,可是前一个AC后一个WA
纠结......
