| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 420 人关注过本帖
标题:求大家帮我看看这个程序问题出在哪点?
只看楼主 加入收藏
lkj891002
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-6-8
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
求大家帮我看看这个程序问题出在哪点?
求大家帮我看看这个程序问题出在哪点? 我想做一个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);
    }
搜索更多相关主题的帖子: include 
2012-06-08 22:15
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:20 
中文字符一个占二个字节,西文字符占一个字节.
你得思考一下中文字符计数和西文字符计数的问题才会得到正确的答案,准确率不是两个整数相除的返回值,这样得到的还是整数。
应该定义为float或是double型的进行计算,并将结果 * 100。

我们都在路上。。。。。
2012-06-09 11:43
lkj891002
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-6-8
收藏
得分:0 
回复 2楼 hellovfp
谢谢啦  已经搞定
2012-06-09 12:57
zjl583577906
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-8-21
收藏
得分:0 
以下是引用lkj891002在2012-6-9 12:57:01的发言:

谢谢啦  已经搞定
请教下:那个for(a。。。)循环我没有看懂,为什么循环5次啊,而且里面if条件都一样。。
2012-06-11 17:19
快速回复:求大家帮我看看这个程序问题出在哪点?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017179 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved