读书人

新手统计一个句子中的单词数

发布时间: 2012-04-15 18:39:21 作者: rapoo

新手求教:统计一个句子中的单词数
请求帮我看看这个算法有没有问题:我将句子gets到字符数组中,之后采用当第i项为非字母字符,且第i+1项为字母字符时,计数自加。

C/C++ code
#include <stdio.h>int main(int argc, char *argv[]){    static char str[100];    int i;    int count;    int N;    printf("please input a test sentance:");    gets(str);    N = strlen(str);    if(str[0] >= 'A'&&str[0] <= 'Z'||str[0] >= 'a'&&str[0] <= 'z')    count = 1;    else    count = 0;    for(i = 0;i < N;i++)    {        if((str[i] <= 'A'||str[i] >= 'Z')&&(str[i] <= 'a'||str[i] >= 'z')        &&(str[i+1] >= 'A'&&str[i+1] <= 'Z'||str[i+1] >= 'a'&&str[i+1] <= 'z'))        count++;            }    printf("%d\n",count);    return 0;}


[解决办法]
C/C++ code
#include <stdio.h>int main(){    static char str[100];    int i;    int count;    int N;    printf("please input a test sentance:");    gets(str);    N = strlen(str);    if(str[0] >= 'A'&&str[0] <= 'Z'||str[0] >= 'a'&&str[0] <= 'z') // 有问题,当输入“1A”时,结果会为2.        count = 1;    else        count = 0;    for(i = 0;i < N;i++)    // 越界,应使用 i < N -1;    {        if((str[i] <= 'A'||str[i] >= 'Z')&&(str[i] <= 'a'||str[i] >= 'z')            &&(str[i+1] >= 'A'&&str[i+1] <= 'Z'||str[i+1] >= 'a'&&str[i+1] <= 'z'))            count++;    }    printf("%d\n",count);    return 0;}
[解决办法]
恭喜LZ自己解决了问题,可喜啊

读书人网 >C++

热点推荐