View Code of Problem 97

#include<stdio.h>
#include<string.h>
int main()
{
	int n,i,j,len,k,l,flag,d,max,o;
	char a[1000][17];
	char temp[1][17];
	char b[1000][17],c[1000][13];

	while(scanf("%d",&n)!=EOF)
	{
		//读数据进去
		if(n<=0||n>1000)
			break;
  	   for (i=0;i<n;i++)
		   scanf("%s",a[i]);
	   //判断末尾是不是.exe 是的话把他前len-4位存到数组c中
        k=0;
		for (j=0;j<i;j++)
		{
			len=strlen(a[j]);
		if(a[j][len-1]=='e'&&a[j][len-2]=='x'&&a[j][len-3]=='e'&&a[j][len-4]=='.')
			{
				strcpy(b[k],a[j]);
		   for(l=0;l<len-4;l++)
			   c[k][l]=a[j][l];
		      c[k][l]=0;
		      k++;
		     }
		}
		//查找有相同前缀的文件,若无则用后面的覆盖掉
		d=k;
		o=0;
	    for( i=0;i<k;i++)
		{  
			flag=0;
			for(j=0;j<n;j++)
				if(strcmp(c[i+o],a[j])==0)
					{
						flag=1;
			          break;
				     }
			if(flag!=1)
				{
					for(l=i;l<k+1;l++)
					strcpy(b[l],b[l+1]);
			        d--;
					k--;
					i--;
					o++;
			     }
		}
		//排序,输出
		for(i=0;i<k;i++)
		{
			max=i;
		   for(j=i+1;j<d;j++)
			if(strcmp(b[max],b[j])>0)
				{
					strcpy(temp[0],b[max]);
		            strcpy(b[max], b[j]);
				    strcpy(b[j],temp[0]);
			    }
			
		}
		for(i=0;i<d;i++)
			printf("%s\n",b[i]);
	
			
	}


	return 0;

}

Double click to view unformatted code.


Back to problem 97