C语言 输入一行字符,统计其中有多少个单词 和 有三个字符串(网上找的代码有瑕疵已解决),找出其中最大者的完整代码及分析过程
问题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语言 输入一行字符,统计其中有多少个单词 和 有三个字符串(网上找的代码有瑕疵已解决),找出其中最大者的完整代码及分析过程相关推荐
- 输入一行字符统计英文字母,空格,数字和其他字符的个数
使用c语言的三种循环分别写出输入一行字符统计英文字母,空格,数字和其他字符的个数的代码如下: **1. for循环实现** ```c #include <stdio.h> int main ...
- C语言输入一行字符,分别统计出其中英文字母,空格
C语言输入一行字符,分别统计出其中英文字母,空格 注意:while((c=getchar())!='\n') 表示在终端输入一串字符串后,直到输入回车,然后将字符串添加到内存缓冲区中,再循环把字符取出 ...
- c语言 输入一行字符,分别统计出其中英文字母 空格 数字和其他字符的个数
输入一行字符,分别统计出其中英文字母.空格.数字和其他字符的个数. 解:程序: #include <stdio.h> int main() { char c; int letters=0, ...
- C语言 输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数
方法一:常规计算 #include <stdio.h> int main(){char c;int letters=0,space=0,digit=0,other=0;printf(&qu ...
- C语言 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
要求: 1)用while循环及getchar()函数完成字符串输入,回车键结束. 2)分别统计英文字母.空格.数字和其它字符的个数. 3)打印统计结果. 运行参考示例: 输入1:long int sn ...
- 输入一行字符,判断单词数
<程序设计基础-实训指导教程>杨莉 龚义建 ISBN 978-7-03-032846-5 p27 [实训内容9] 输入一行字符,判断有多少个单词数 #include<stdio.h& ...
- 输入一行字符,统计其中有多少个单词,单词间用空格分隔(C语言)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 题目: [实验案例3:字符数组] 输入一行字符,统计其中有多少个单词,单词间用空格分隔(当然这种统计是有局限性的). [实验指导] 解 ...
- c语言:输入一行字符,统计其中有多少个单词,单词之间用空格分隔开
输入一行字符,统计其中有多少个单词,单词之间用空格分隔开. 解:如果测出某一个字符为非空格,而它前面的字符是空格,则表示新单词开始了,用变量word作为判别当前是否开始了一个新单词的标志,word=0 ...
- C语言:输入一行字符,统计其中有多少单词,单词之间用空格分隔开
题目:输入一行字符,统计其中有多少单词,单词之间用空格分隔开. 下面是运行结果: 下面是我编写的源代码: #include <stdio.h> //输入一行字符,统计其中有多少单词,单词之 ...
最新文章
- 虚幻引擎5(UE5)实时VFX游戏特效制作入门到精通
- ORB-SLAM2地图存储加载系统
- jetty 添加basic auth
- php 分页类使用,php 分页 分页类 简单实用
- c语言编译及下载环境变量,windows 下使用g++ 编译器-Go语言中文社区
- AIX命令参考大全,卷 4,n - r
- 浅谈C#中的数组(一)
- DeDE 后台登陆广告
- seata分布式事务回滚机制是如何实现的
- 【SpringBoot_ANNOTATIONS】属性赋值 01 @Value赋值
- (售前)销售经理和产品经理的区别以及未来发展
- Latex 1: 解决latex中遇到一个常见错误:Improper alphabetic constant.
- 营业执照统一社会信用代码校验
- 多模态融合技术综述和应用
- 【夏令营保研经验】北理计算机,北航计算机夏令营,中科院霸面保研经验(2019.7)
- 【C#】C# List Sort 按照字母排序 多字段排序
- 网页二维码生成器纯js代码带logo图纯前端合成
- 交流充电桩电路图_详细剖析交流充电桩上电源和RS485隔离原理
- 英国开发者年龄歧视为29岁,女程序员幸福指数略高于男性 | 全球开发者幸福指数报告
- 大幅降低PUE绝非不可能 浪潮MDC如何打造梦幻王国?