新手求教:统计一个句子中的单词数
请求帮我看看这个算法有没有问题:我将句子gets到字符数组中,之后采用当第i项为非字母字符,且第i+1项为字母字符时,计数自加。
#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;}
#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自己解决了问题,可喜啊