首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

有个程序希望大家帮看看,提提意见,多谢

2012-03-30 
有个程序希望大家帮看看,提提意见,谢谢先输入一串单词,比如英语文章,再查找里面有没有这个单词,以下是代码

有个程序希望大家帮看看,提提意见,谢谢
先输入一串单词,比如英语文章,再查找里面有没有这个单词,以下是代码,刚刚写完,新手,拍砖轻点哦。
希望大家可以给点建议,比如说麻不麻烦,可读性怎么样,算法,或者有什么改进了更好之类的
有时间就请帮看看代码,没时间就帮看看大体就可以了,不管怎么样谢谢了,会尽快结贴的,

C/C++ code
#include<stdio.h>#include<string.h>#include<stdlib.h>#define M 30#define N 10void handle(char a[],char b[]){    int i=0;   //a[]的下标变量    int k=0;   //b[]的下标变量    int h=0;   //记录循环变量    int j,m;   //字节数    j=strlen(b);    m=strlen(a);//需要查找的单词比输入的单词还短,肯定没有    if(j>m)     {printf("无该单词!");    exit(0);    };con://输入的字符串已经到尾,肯定没有    if(i>m)    {        printf("无该单词!\n");        exit(0);    };//若输入的字符串没有到尾    if(a[i]==b[k])    {   h++;     //记录次数        k++;        if(h==j&&(a[i+1]==' ')||a[i+1]=='\0')        {printf("有该单词!\n");         exit(0);        };        i++;//防止出现字符串abcd fg要查找ab,实际上是没有这个单词,但是显示有        if(a[i+1]!=' '&&h==j) k=0;        goto con;    }    else    {   i++;        h=0;        k=0;        goto con;        printf("无该单词!\n");    }}void main(){    char a[M];    char b[N];    printf("输入一个字符串:");    gets(a);    printf("需要查找的字符:");    gets(b);    handle(a,b);}


[解决办法]
个人意见
1 子函数中没有必要用exit(),最好通过返回值来表示匹配的结果,比如0表示成功,1表示失败
2 goto的用法显得很乱,用一个while循环不行吗
3
C/C++ code
    else    {   i++;        h=0;        k=0;        goto con;        printf("无该单词!\n");    }
[解决办法]
你要实现的功能标准库函数里有
C/C++ code
char *strstr(char *str1, char *str2);
[解决办法]
我推荐先把原来的文本分解为一个一个的单词 如果单词的大小与目标单词相同 再进行比较

[解决办法]
if(h==j&&(a[i+1]==' ')||a[i+1]=='\0')
这个地方建议你最好按照你想要比较的先后顺序把括号加上

另外,最好你的handle函数有一个返回值,然后在main函数中根据返回值来判断是否有这个单词。

编程尽量规范一点,以后弯路走得少一些。

热点排行