PTA第9章文件作业9-4 程序查重 (10分)

9-4 程序查重 (10分)

文件查重:现有两个数据文件,分别为source.txt和dest.txt,编程统计source.txt中有多少行跟dest.txt中同等位置的行内容重复,输出重复率。
如: source.txt内容: 第一行为aaa;第二行为bbb;第三行为ccc; 而dest.txt内容: 第一行为aaa;第二行为ddd;第三行为ccc,第四行为bbb 查重系统会发现source.txt的第一行和第三行与dest.txt的第一行和第三行相同,而dest共有四行,所以source.txt的内容在dest.txt中的重复率为50.0%。
提示:输出重复率时小数点保留1位。
编写的源程序命名为test.cpp,提交之前,将source.txt和dest.txt以及test.cpp放在src文件夹下,然后在src文件夹的上层文件夹中压缩src.zip,保证这个zip文件中有src文件夹和其中的test.cpp文件(注意此时test.cpp中访问数据文件的路径应为./src/)。
如果使用WinRAR、7z等压缩软件,请注意压缩文件的格式为zip,而不是压缩为其他格式后修改后缀为zip。目前已知使用Windows的资源管理器的右键菜单中的“发送到压缩(zipped)文件夹“功能产生的zip文件不被PTA所接受。Unix的zip命令压缩的文件夹可以接受。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
    
    
	char s1[100][100] , s2[100][100];
	int i = 0 , n , j = 0 , k ;
	float sum = 0;
	FILE *fp1,*fp2;
	if((fp1=fopen("src/source.txt","r"))==NULL)
	{
    
    
		printf("can't open this file");
	}
	if((fp2=fopen("src/dest.txt","r"))==NULL)
	{
    
    
		printf("can't open this file");
	}
	while(!feof(fp1))
	{
    
    
		fgets(s1[i],100,fp1);
		//printf("%s",s1[i]);
		i++;		
	}
	
	while(!feof(fp2))
	{
    
    
		fgets(s2[j],100,fp2);
		j++;
	}
	for(k=0;k<i;k++)
	{
    
    
		if(strcmp(s1[k],s2[k])==0)
			sum++;
	}
	fclose(fp1);
	fclose(fp2);
//	printf("%d %d %f\n",i,j,sum);
	printf("%.1f%%",sum/i*100);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/csx_zzh/article/details/106296668