问题1:输入一行字符,统计其中有多少个单词

思考这一类问题的常用解决方法是什么?是这种形式的:
------》最终完整的代码:《------

#include <stdio.h>
// isalpha()用到的库。用来判断一个字符是否是英文字母。
#include <ctype.h>
#define OUT    0
#define IN    1// 返回字符串的单词数
unsigned countWords(char *str)
{int state = OUT;unsigned wc = 0;  // 单词数默认为0// 遍历字符串str的所有字符while (*str){// 如果下一个字符是单词的分割符则设置状态为OUTif (*str == ' ' || *str == '\n' || *str == '\t')state = OUT;// 如果下一个字符不是单词的分隔符且状态为OUT且是英文字母,则将状态设置为IN并增加单词计数else if ((state == OUT)&& isalpha(*str)){state = IN;printf("\n打印第%u单词:%c%c%c%c%c\n",wc+1,*str,*(str+1),*(str+2),*(str+3),*(str+4),*(str+5));++wc;}// 移动到下一个字符++str;}return wc;
}// 编程实现代码
int main(void)
{char str[] = "One  two  222  @@@  333  three\n  four\t  five  six  ";//注意我这是单词之间是2个空格的案例printf("\nThere are %u words\n", countWords(str));return 0;
}


可以看到:
示例
char str[] = "One two 222 @@@ 333 three\n four\t five six ";
最终只有 One two three four five six 这6个单词打印了出来。
像222 @@@ 333不是单词,所以单词数是6。
你可以加 444测试,例如
char str[] = "One two 222 @@@ 333 444 three\n four\t five six ";
单词数仍然是6。(我已经试过了)

眼睛看一眼以下注释:

            //我这是方便你直观地阅读感受程序的效果添加的一行,其实可不要,因为看起来笨了点哈哈//你把我的代码原封不动调试完后把这行代码删了,或注释掉。//然后你自己把char str[] = "你自己测试的字符串"//或者用gets()接受字符串//我这也好长时间没写c代码的,怎么简单就怎么来,期待后面的后浪们优化程序哈哈//printf("\n打印第%u单词:%c%c%c%c%c\n",wc+1,*str,*(str+1),*(str+2),*(str+3),*(str+4),*(str+5));//一定要记得调试完注释掉这一行代码!!!

------》网上不是太完整的代码:【可能是考试的"标准答案",唉。。。】《------

//输入一行字符,统计其中有多少个单词
#include<stdio.h>
#include<string.h>
int main()
{   char string[81]; int i,num=0,word=0; char c; gets(string); for(i=0;(c=string[i])!='\0';i++) if(c==' ')  word=0; else if(word==0) {   word=1;  num++;   } printf("There are %d words ",num);
}

调试的结果:

算法图解如下:

------》输入一行字符,统计其中有多少个单词 的问题到此解决了《------

升级问题如下:
问题2:有三个字符串,找出其中最大者
例如

搞清楚字符串的比较逻辑是什么?【问题是什么?问题的解决逻辑是什么?代码实现。】
字符串的比较逻辑:
当s1<s2时,返回为负数;
当s1=s2时,返回值= 0;
当s1>s2时,返回正数。
即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇’\0’为止。如:

/*
其中A=65,a=97
1."A"<"B"
2."A"<"AB"
3."Apple"<"Banana"
4."A"<"a"
5."compare"<"computer"
*/

搞清楚字符串的比较逻辑之后,那么how hello hinihao 这三个字符串大小的关系是:
how > hinihao > hello
所以输出最大的字符串就是输出how.
完整代码如下:

#include<stdio.h>
#include<string.h>int main()
{char str[3][20],  // 定义二维字符数组string[20];  // 定义一维字符数组,作为交换字符串时的临时字符数组int i;for(i=0;i<3;i++)gets(str[i]);if (strcmp(str[0], str[1])>0) {strcpy(string, str[0]);}else {strcpy(string,str[1]);}if(strcmp(str[2],string)>0) {strcpy(string,str[2]);}else {strcpy(string,string);}printf("The largest string is:%s\n", string);return 0;
}

输入:
how
hello
hinihao
代码应该执行输出:
how
截图:

------》搞定 问题2:有三个字符串,找出其中最大者 的问题到此解决了《------

秘籍思维:
编程就是解决问题。
解决问题就是找解决逻辑。
最终将逻辑转化为代码实现。【c语言代码,python代码,go代码】

C语言 输入一行字符,统计其中有多少个单词 和 有三个字符串(网上找的代码有瑕疵已解决),找出其中最大者的完整代码及分析过程相关推荐

  1. 输入一行字符统计英文字母,空格,数字和其他字符的个数

    使用c语言的三种循环分别写出输入一行字符统计英文字母,空格,数字和其他字符的个数的代码如下: **1. for循环实现** ```c #include <stdio.h> int main ...

  2. C语言输入一行字符,分别统计出其中英文字母,空格

    C语言输入一行字符,分别统计出其中英文字母,空格 注意:while((c=getchar())!='\n') 表示在终端输入一串字符串后,直到输入回车,然后将字符串添加到内存缓冲区中,再循环把字符取出 ...

  3. c语言 输入一行字符,分别统计出其中英文字母 空格 数字和其他字符的个数

    输入一行字符,分别统计出其中英文字母.空格.数字和其他字符的个数. 解:程序: #include <stdio.h> int main() { char c; int letters=0, ...

  4. C语言 输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数

    方法一:常规计算 #include <stdio.h> int main(){char c;int letters=0,space=0,digit=0,other=0;printf(&qu ...

  5. C语言 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

    要求: 1)用while循环及getchar()函数完成字符串输入,回车键结束. 2)分别统计英文字母.空格.数字和其它字符的个数. 3)打印统计结果. 运行参考示例: 输入1:long int sn ...

  6. 输入一行字符,判断单词数

    <程序设计基础-实训指导教程>杨莉 龚义建 ISBN 978-7-03-032846-5 p27 [实训内容9] 输入一行字符,判断有多少个单词数 #include<stdio.h& ...

  7. 输入一行字符,统计其中有多少个单词,单词间用空格分隔(C语言)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 题目: [实验案例3:字符数组] 输入一行字符,统计其中有多少个单词,单词间用空格分隔(当然这种统计是有局限性的). [实验指导] 解 ...

  8. c语言:输入一行字符,统计其中有多少个单词,单词之间用空格分隔开

    输入一行字符,统计其中有多少个单词,单词之间用空格分隔开. 解:如果测出某一个字符为非空格,而它前面的字符是空格,则表示新单词开始了,用变量word作为判别当前是否开始了一个新单词的标志,word=0 ...

  9. C语言:输入一行字符,统计其中有多少单词,单词之间用空格分隔开

    题目:输入一行字符,统计其中有多少单词,单词之间用空格分隔开. 下面是运行结果: 下面是我编写的源代码: #include <stdio.h> //输入一行字符,统计其中有多少单词,单词之 ...

最新文章

  1. 虚幻引擎5(UE5)实时VFX游戏特效制作入门到精通
  2. ORB-SLAM2地图存储加载系统
  3. jetty 添加basic auth
  4. php 分页类使用,php 分页 分页类 简单实用
  5. c语言编译及下载环境变量,windows 下使用g++ 编译器-Go语言中文社区
  6. AIX命令参考大全,卷 4,n - r
  7. 浅谈C#中的数组(一)
  8. DeDE 后台登陆广告
  9. seata分布式事务回滚机制是如何实现的
  10. 【SpringBoot_ANNOTATIONS】属性赋值 01 @Value赋值
  11. (售前)销售经理和产品经理的区别以及未来发展
  12. Latex 1: 解决latex中遇到一个常见错误:Improper alphabetic constant.
  13. 营业执照统一社会信用代码校验
  14. 多模态融合技术综述和应用
  15. 【夏令营保研经验】北理计算机,北航计算机夏令营,中科院霸面保研经验(2019.7)
  16. 【C#】C# List Sort 按照字母排序 多字段排序
  17. 网页二维码生成器纯js代码带logo图纯前端合成
  18. 交流充电桩电路图_详细剖析交流充电桩上电源和RS485隔离原理
  19. 英国开发者年龄歧视为29岁,女程序员幸福指数略高于男性 | 全球开发者幸福指数报告
  20. 大幅降低PUE绝非不可能 浪潮MDC如何打造梦幻王国?

热门文章

  1. 人机交互设计——评价谷歌拼音输入法(安卓版)
  2. python 爬取新浪微博
  3. 视频直播APP开发解决方案
  4. 支付宝支付(二):PC支付,H5支付,APP支付通用接口
  5. java基于ssm美食论坛系统发帖子系统美食论坛网站美食分享论坛源码
  6. 使用Java编写,写出1-100的偶数和奇数
  7. 占豪收评:2009完美收官 展望2010年市场
  8. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java焦作旅游网站q5msq
  9. msq(2)jdbc
  10. 英巴卡迪诺中国发布官方视频专栏