统计字符串中单词数,我们先限定这里我们对单词的定义,
一段包含字母或数字或其他符号的序列,可以是一个 。
知道了单词的定义接下来,我们需要找到关键,什么条件必定存在单词?
1:空格前一个字符非空格 :可以构成单词
2:空格后一个字符非空格 :肯定存在一个单词
3:从单词序列着手单词序列不为空格切长度大于1 :存在单词
这三种条件从每一种着可以写出一种方法
条件一:空格前一个字符非空格 :可以构成单词
#include<stdio.h>
int main(){
int c=0,count=0;
char a=' ';//初始化为空格 限制第一个位置为空格不构成单词
while((c=getchar())!='\n'){
if(c==' '){ //一个位置为空格
if(a!=' '){ //前一个位置非空格
count++;// 单词数+1
}
}
a=c; //前一 个单词叫
}
if(a!=' '){ //最后一个字符如果不为空格就存在一个单词没有计数
count++;
}
printf("单词数位%d",count);
}
条件二:空格后一个字符非空格 :肯定存在一个单词
#include<stdio.h>
int main(){
char c;
int flag=0,n=0;
while((c=getchar())!='\n'){
if(c==' '){
flag=0;
}
else if(flag==0){
flag=1;
n++;
}
}
printf("单词数为:%d",n);
}
条件三:从单词序列长度
#include<stdio.h>
int main(){
char c,a;
int count=0,n=0;
while((c=getchar())!=’\n’){
if(c==’ ‘){
if(count>1){
n++;
}
count=0;
}
else {
count++;
}
a=c;
}
if(a!=’ '){
n++;
}
printf(“单词数为:%d”,n);
每一种思考问题的方式都可能是一种方法 只是复杂程度不一