人脸相似度c语言程序,求C语言编程,比较两个文件相似度?

求C语言编程,比较两个文件相似度?

原题:用程序创建两个文本,并输入一些单词,然后判断他们两个文本的相似度。如果二者所有的单词中,相同的单词数量占总量的%80,则认为两者雷同。

课程设计要求:

1、贯彻结构化程序设计思想

2、用户界面友好,功能明确,操作方便

3、用户界面中至少有“创建文件1、创建文件2、判断相似性、退出”4项。

4、代码应适当缩进,并给出必要注释,以增强程序的可读性!

小弟这有个程序,但是不正确,并且老师不让用goto语句,大侠们也可以改一下帮忙!谢谢啦![把goto语句改为其他例如switch语句]如果正确的话还会再追加一百分!

#include"stdio.h"

#include"string.h"

#define N(a,b) 2.0*a/b*100

FILE *pa,*pb;

int t,m;

char a[100],b[100];

/*创建文件1*/

void Creat1_Z()

{

if((pa=fopen("d:\\file1.txt","w+"))==NULL)

printf("\tCannot open this file!\n");

else

{ printf("\tEnter a string to File1:\n");

getchar();

gets(a);

fputs(a,pa);

printf("\tSuccess!\n");

}

fclose(pa);

}

/*创建文件2*/

void Creat2_Z()

{

if((pb=fopen("d:\\file2.txt","w+"))==NULL)

printf("\tCannot open this file!\n");

else

{ printf("\tEnter a string to File2:\n");

getchar();

gets(b);

fputs(b,pb);

printf("\tSuccess!\n");

}

fclose(pb);

}

/*相似性比较*/

void contrast( )

{

char str1[15],str2[15];

int i=0,j=0,t=0,s,k=1,f=1;

while(k==1)

{

for(s=0;(a[i]!=32)&&(a[i]!=0)==1;s++,i++)

str1[s]=a[i];

str1[s]='\0';

if(str1=="") continue;

f=1;

j=0;

while(f==1)

{

for(s=0;(b[j]!=32)&&(b[j]!=0)==1;j++,s++)

str2[s]=b[j];

str2[s]='\0';

if(str2=="") continue;

if(strcmp(str1,str2)==0)

{

t++;

f=0;

continue;

}

j++;

if(b[j]==0) f=0;

}i++;

if(a[i]==0) k=0;

}

printf("相同单词数:%d\n",t);

for(i=0,j=0,s=0;a[i]!=0;i++)

if(a[i]==32) s=0;

else if(s==0) {s=1;j++;}

for(i=0,s=0;b[i]!=0;i++)

if(b[i]==32) s=0;

else if(s==0) {s=1;j++;}

printf("相似度:%5.2f%%\n",N(t,j));

if(N(t,j)>=80) printf("相同!\n");

else printf("不同!\n");

}

/**/

void mune()

{

printf("*****************判断两个文件是否相同*****************\n");

printf("\t\t   1:创建文件1\n");

printf("\t\t   2:创建文件2\n");

printf("\t\t   3:判断相似性\n");

printf("\t\t   4:退出\n");

printf("####################请选择###########################\n");

printf("****************************************************\n");

}

/**/

void main()

{

while(t!=4)

{

mune();

scanf("%d",&t);

if(t==1) Creat1_Z();

else if(t==2) Creat2_Z();

else if(t==3) contrast();

else if(t==4) ;

else printf("输入错误!请重新输入!\n");

}

}

67b0a70febe552c922c54bb8560d6ef6.png

abc46bda2b9ebfd78a861582625a2a3b.png

#include"stdio.h"

#include"string.h"

#define N(a,b) 2.0*a/b*100

FILE *pa,*pb;

int t,m;

char a[100],b[100];

/*创建文件1*/

void Creat1_Z()

{

if((pa=fopen("d:\\file1.txt","w+"))==NULL)

printf("\tCannot open this file!\n");

else

{ printf("\tEnter a string to File1:\n");

getchar();

gets(a);

fputs(a,pa);

printf("\tSuccess!\n");

}

fclose(pa);

}

/*创建文件2*/

void Creat2_Z()

{

if((pb=fopen("d:\\file2.txt","w+"))==NULL)

printf("\tCannot open this file!\n");

else

{ printf("\tEnter a string to File2:\n");

getchar();

gets(b);

fputs(b,pb);

printf("\tSuccess!\n");

}

fclose(pb);

}

/*相似性比较*/

void contrast( )

{

char str1[15],str2[15];

int i=0,j=0,t=0,s,k=1,f=1;

while(k==1)

{

for(s=0;(a[i]!=32)&&(a[i]!=0);s++,i++)//把==0去掉了 ,更简洁

str1[s]=a[i];

str1[s]='\0';

//if(str1=="") continue;

f=1;

j=0;

while(f==1)

{

for(s=0;(b[j]!=32)&&(b[j]!=0);j++,s++) //把==0去掉了 ,更简洁

str2[s]=b[j];

str2[s]='\0';

//if(str2=="") continue;

if(strcmp(str1,str2)==0)

{

t++;

f=0;

continue;

}

j++;

if(b[j]==0) f=0;

}i++;

if(a[i]==0) k=0;

}

printf("相同单词数:%d\n",t);

for(i=0,j=0,s=0;a[i]!=0;i++)

if(a[i]==32) s=0;

else if(s==0) {s=1;j++;}

for(i=0,s=0;b[i]!=0;i++)

if(b[i]==32) s=0;

else if(s==0) {s=1;j++;}

printf("相似度:%5.2f%%\n",N(t,j));

if(N(t,j)>=80) printf("相同!\n");

else printf("不同!\n");

}

/**/

void mune()

{

printf("*****************判断两个文件是否相同*****************\n");

printf("\t\t 1:创建文件1\n");

printf("\t\t 2:创建文件2\n");

printf("\t\t 3:判断相似性\n");

printf("\t\t 4:退出\n");

printf("####################请选择###########################\n");

printf("****************************************************\n");

}

/**/

void main()

{

while(t!=4)

{

mune(); //单词拼错了,应该是menu,菜单的意思

scanf("%d",&t);

switch (t)

{

case 1: Creat1_Z(); break;

case 2: Creat2_Z(); break;

case 3: contrast();break;

case 4:break;

default:  printf("输入错误!请重新输入!\n");

}

}

}

我没有找到你说的个goto语句哦,不过我把那一大堆if else改掉了,而且在vc++环境下运行的很好~

10-04-12

| 添加评论

| 打赏

◆◆

请登录后再发表评论!

◆◆

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值