求大家帮我看看这个程序问题出在哪点?
求大家帮我看看这个程序问题出在哪点? 我想做一个C++程序, 目的是为了检测输入的一段话的总字数,和错误数。下面stra是原文, strb是输入的一段文字,但是最后检查出来,字数和错误数都不对。请问下 我错在哪里 谢谢大家了#include<stdio.h>
#include<string.h>
#include<conio.h>
char stra[1000],strb[1000]; //stra[] 参考文件,strb[] 录入文件
int ERR=0; //ERR 错误数
int MAX=0; //MAX 总文字数
/*int sum(char aa[])
{
int i;
for(i=0;aa[i]!='\0';i++)
return i;
}
int readDat(char xx[],int n)
{
FILE *fp ;
char *p ;
if(n==1)
if((fp = fopen("in1.dat", "r")) == NULL)
return 1 ;
else
if((fp = fopen("in2.dat", "r")) == NULL)
return 1 ;
fgets(xx,sum(stra), fp);
fclose(fp) ;
return 0 ;
}*/
void main()
{
int i,j; //i参考文件标识 j录入文件标识
int n,m,a;
int n1,n2,flog=1; //flog 标示 n1 参考文件长度 n2 录入文件长度
/*readDat(stra,1);
readDat(strb,2);*/
strcpy(stra,"高等数学的课堂教学中应该适当地使用多媒体手段做辅助,使得多媒体教学与板书教学二者有机地结合在一起,这样才能够更好地发挥各自的优势,从而提高课堂效率与效果。");
strcpy(strb, "高等数学课堂教学中应该适当地使用多媒体手段做 辅助,使得多媒体教学与板书教学二者有机地合在一起,这样才能够 更好地发挥各自的优势,从而提 高课堂效率与效果。");
for(i=0,j=0;strb[i]!='\0';i++)
{
flog=1;
MAX++;
if(stra[i]==strb[j]) //无错继续
{
j++;
}
else
{
n=i;
m=j;
for(a=0;a<5;a++) //输错可能
{
n++;
m++;
if(stra[n]==strb[m]&&stra[n+1]==strb[m+1]&&stra[n+2]==strb[m+2])
{
flog=0;
ERR=ERR+a+1;
break;
}
}
if(flog!=0)
flog=2;
while(flog==2) //多输可能
{
n=i;
m=j;
for(a=0;a<5;a++)
{
m++;
if(stra[n]==strb[m]&&stra[n+1]==strb[m+1]&&stra[n+2]==strb[m+2])
{
flog=0;
ERR=ERR+a+1;
break;
}
}
if(flog!=0)
flog=3;
}
while(flog==3) //少输可能
{
n=i;
m=j;
for(a=0;a<5;a++)
{
n++;
if(stra[n]==strb[m]&&stra[n+1]==strb[m+1]&&stra[n+2]==strb[m+2])
{
flog=0;
ERR=ERR+a+1;
break;
}
}
if(flog!=0)
flog=4;
}
printf("flog=%d ",flog);
}
}
printf("总字数=%d\n错误数=%d\n准确度=%d",MAX,ERR,ERR/MAX);
}