本题目要求编写程序统计一行字符中单词的个数。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。
输入格式:
输入给出一行字符。
输出格式:
在一行中输出单词个数。
1.使用函数gets()获取字符
#include<stdio.h>
int main(void){
int word=0,flag=1;//默认有空格
char str[1000],*p;
gets(str);
for(p=str;;p++){
if(*p=='\0'){//'\0'为编译器自动加上的结束符号
break;
}
else if(*p==' '){
flag=1;//表示有空格
}
else if(*p!=' '&&flag==1){
word++;
flag=0;//表示没有空格
}
}
printf("%d",word);
return 0;
}
2. 使用scanf()
#include<stdio.h>
int main(void){
int word,flag;
word=0;
flag=1;//默认有空格
char ch;
do{
ch=getchar();
if(ch=='\n'){
break;
}
else if(ch==' '){
flag=1;//表示有空格
}
else if(flag==1&&ch!=' '){
word++;
flag=0;//表示没有空格
}
}while(ch!=10); //10表示回车
printf("%d",word);
return 0;
}
思路:英语书写规范是句子与句子之间的标点符号要紧跟上一句子的最后一个字母,并与下一个句子的第一个字母之间有一个空格。因为书写规范除了第一个单词以外,其他单词之间会以空格隔开,所以flag的初始值为1,1表示前面有空格,默认为1是为了判断第一个单词,而句子中不是空格那么就是字母、数字、标点符号,所以只需要空格之后是不是非空格即可