问题描述:输入一个长度不大于100的字符串(由字母和空格组成),输出串中包含的单词个数。如不存在单词则输出0.
例如:字符串“hello world”,则输出结果为2。
思路:类似于判定回文数、判定素数,实质是判定当前子串是否为单词,若是,遍历完该单词,单词数目加一。注意,主串游标需要回退一位。
代码:
#include<stdio.h>
int main(){
int i=0,flag,num=0;//flag用来判定是否有单词出现;
char str[101];
gets(str);
while(str[i]!='\0'){//i为主串游标,遍历到字符串结束标志结束遍历;
flag=0;
while(str[i]<='z'&&str[i]>='a'||str[i]<='Z'&&str[i]>='A'){
flag++;//出现字母,flag增加;
i++;//然后主串游标一直向后遍历,直到当前单词结束;
}
if(flag){//如果出现单词,单词数目增加1,并且i需要回退一位。
i--;
num++;
}
i++;//若没有字母出现,i继续向后遍历。
}
printf("%d",num);
return 0;
}