题目
本题目要求编写程序统计一行字符中单词的个数。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。
样例输入
样例输出
样例种类
问题分析
- 首先,我们这样思考如果一个单词后面有空格我们则单词数量++。设f1,f2分别表示是否出现了非空格字母,和空格字母,出现为1。
- 思考我们判定单词的方法,也就是空格出现前有字母出现,才能算一个.所以,我们执行以下代码
if(c==' '&&f1) f2=1;
- 当有字母出现那肯定f1=1=f2=1,出现以后让f1=f2=0,重置状态,
- 特殊情况:就是句子最后不是空格结尾,是其他字母,那就要单词数量+1,最后一个单词没有算上嘛。用
a[i]记录
最后一个出现的 非EOF与'\n' 字符
AC代码
| #include <stdio.h> |
| #include <math.h> |
| #include <stdlib.h> |
| #include <string.h> |
| #include <math.h> |
| #include <ctype.h> |
| |
| |
| |
| #define ifor(i, l, r) for (int i = l; i <= r; ++i) |
| #define rfor(i, r, l) for (int i = r; i >= l; --i) |
| #define _SILENCE_CXX20_CISO646_REMOED_WARNING |
| typedef unsigned long long ull; |
| typedef long double doubleL; |
| typedef long long ll; |
| const long long N = 2e+5; |
| |
| int main() |
| { |
| int f1=0,f2=0; |
| char c; |
| int total=0; |
| int i=0; |
| char a[1000]; |
| while((c=getchar())!=EOF) |
| { |
| |
| if(c!=' ') f1=1; |
| |
| if(c==' '&&f1) f2=1; |
| else f2=0; |
| |
| if(f2&&f1) |
| { total++;f2=f1=0;} |
| if(c!='\n') {a[i]=c; i++;} |
| } |
| if(a[i-1]!=' ')++total; |
| printf("%d",total); |
| return 0; |
| } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」