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

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

2012-04-15 
新手求教:统计一个句子中的单词数请求帮我看看这个算法有没有问题:我将句子gets到字符数组中,之后采用当第

新手求教:统计一个句子中的单词数
请求帮我看看这个算法有没有问题:我将句子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自己解决了问题,可喜啊

热点排行