P4-3【应用数组进行程序设计 | 第三节】——知识要点:字符数组
知识要点:字符数组
视频:
P4-3【应用数组进行程序设计 | 第三节】——知识要点:字符数组
目录
一、任务分析
二、必备知识与理论
三、任务实施

一、任务分析
本任务要求输入一行字符,统计其中的单词数,单词之间用空格隔开。
1.输入一行字符,将这一行字符放到一个一维的字符数组中;
2.先从字符数组中读取一个字符赋给某个字符变量,然后再判断它是不是结束符;
3.下面就是判断新单词出现没有的算法问题了,新单词出现,计数器的值加1,新单词没出现,计数器的值不变。
二、必备知识与理论
1.字符数组的定义和引用
用来存放字符数据的数组是字符数组。字符数组中的一个元素存放一个字符。
(1)字符数组的定义
char 数组名[下标];
例如:char c[10];
字符是以ASCII码的形式存储在内存中,字符数组的任一元素相当于一个字符变量。
由于字符型与整型是互相通用的,因此上面的定义也可改为:
int c[10];
和数值数组一样,字符数组也可以是二维或多维数组。例如:
char e[8][9];
(2)字符数组的引用
可以引用字符数组中的一个元素,得到一个字符。
2.字符数组的初始化
字符数组的初始化和数值型数组初始化的规则一样。
对字符数组初始化,最容易理解的方式是将字符逐个赋给数组中各元素。例如:
char c[10]={ 'V','e','r','y',’','g','o','o','d','!' };
把10个字符依次赋值给c[0]到c[9]的10个元素。
3.字符串和字符串结束标志
在C语言中,不提供字符串数据类型,字符串是存放在字符数组中的。C语言规定:以'\0'作为字符串结束标志。因此,在用字符数组存放字符串时,系统会自动在最后一个字符后加上结束标志'\0',表示字符串到此结束。这样在定义字符数组时,数组长度至少要比字符串中字符个数多1,以便保存字符'\0'。
4.字符数组的输入、输出
关于字符数组的输入/输出,有两种方法:
(1)单个字符输入输出:
①用标准输入输出函数scanf()和printf(),使用格式符"%c",实现输入或输出一个字符。
②用单个字符输入输出函数getchar()和putchar()。
(2)整个字符串输入输出:
①用标准输入输出函数scanf()和printf(),使用格式符"%s",实现整个字符串一次性的输入或输出。
②用gets()函数和puts()函数实现字符串的输入输出。
格式:gets(字符数组名)
作用:从终端读入一个字符串到字符数组,直到遇到换行符,换行符不进入字符串, 它被转换为'\0',并作为字符串的结束标志。
格式:puts(字符数组名或字符串常量)
作用:将一个字符串(必须以'\0'作为结束标志)输出到终端,一次只能输出一个字符串。
scanf()函数和printf()函数的输入输出项是字符数组名,而不是数组元素名。
注意:用puts和gets函数只能输入或输出一个字符串,不能写成:puts(str1,str2)或gets(strl,str2)。
5.字符串处理函数
在C的函数库中提供了一些关于字符串的函数,使得处理字符串的操作十分简单方便。几乎所有版本的C都提供这些函数。这里介绍几种常用的字符串处理函数,字符串处理函数原型在string.h中。
(1)字符串长度测试函数strlen
格式:strlen(字符数组)
(2)字符串连接函数strcat
格式:strcat(字符数组1,字符数组2)
(3)字符串拷贝函数strcpy
格式:strcpy(字符数组1,字符串2)
(4)字符串比较函数strcmp
格式:strcmp(字符串1,字符串2)
(5)大写字母转换成小写字母函数strlwr
格式:strlwr(字符串)
(6)小写字母转换成大写字母函数strupr
格式:strupr(字符串)
三、任务实施
输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。
算法分析:
(1)程序中变量i作为循环变量,num用来统计单词个数,word作为判别是否单词的标志。若word=0表示未出现单词,如出现单词word就置成1。
(2)解题的思路是这样的:单词的数目可以由空格出现的次数决定(连续的若干个空格作为出现一次空格;一行开头的空格不统计在内)。如果测出某一个字符为非空格,而它的前面的字符是空格,则表示“新的单词开始了”此时使num(单词数)累加1。如果当前字符为非空格而其前面的字符也是非空格,则意味着仍然是原来那个单词的继续,num不应再累加1。前面一个字符是否空格可以从word的值看出来,若word=0,则表示前一个字符是空格,如果word=1,表示前一个字符为非空格。
#include <stdio.h>
main()
{char string[80];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 in the line.\n",num);
}
运行情况如下:
This is a c program.↙
There are 5 words in the line.
程序中for语句中的“循环条件”为
(c=string[i])!='\0'
它的作用是先将字符数组的某一元素(一个字符)赋给字符变量c。此时赋值表达式的值就是该字符,然后再判定它是否结束符。这个“循环条件”包含了一个赋值操作和一个关系运算。可以看到用for循环可以使程序简练。
相关文章:
P4-3【应用数组进行程序设计 | 第三节】——知识要点:字符数组
知识要点:字符数组 视频: P4-3【应用数组进行程序设计 | 第三节】——知识要点:字符数组 目录 一、任务分析 二、必备知识与理论 三、任务实施 一、任务分析 本任务要求输入一行字符,统计其中的单词数,单词之间用…...
彻底理解微服务配置中心的作用
常见的配置中心有SpringCloudConfig、Apollo、Nacos等,理解它的作用,无非两点,一是配置中心能做什么,不使用配置中心会出现什么问题。 作用:配置中心是用来集中管理服务的配置,它是用来提高系统配置的维护…...
SpringBoot开发——详细讲解 Spring Boot 项目中的 POM 配置
文章目录 一、POM 文件简介二、单模块项目的 POM 配置1. 创建基本的 Spring Boot 单模块项目2. 重点解析三、多模块项目的 POM 配置1. 多模块项目结构2. 父模块 POM 文件3. 子模块 POM 文件4. 重点解析结语在 Spring Boot 项目中,POM(Project Object Model)文件起着关键作用…...
pyspark实现基于协同过滤的电影推荐系统
最近在学一门大数据的课,课程要求很开放,任意做一个大数据相关的项目即可,不知道为什么我就想到推荐算法,一直到着手要做之前还没有新的更好的来代替,那就这个吧。 推荐算法 推荐算法的发展由来已久,但和…...
视觉语言模型(VLM)学习笔记
目录 应用场景举例 VLM 的总体架构包括: 深度解析:图像编码器的实现 图像编码器:视觉 Transformer 注意力机制 视觉-语言投影器 综合实现 训练及注意事项 总结 应用场景举例 基于文本的图像生成或编辑:你输入 “生成一张…...
学习笔记:黑马程序员JavaWeb开发教程(2024.11.29)
10.5 案例-部门管理-新增 如何接收来自前端的数据: 接收到json数据之后,利用RequestBody注解,将前端响应回来的json格式的数据封装到实体类中 对代码中Controller层的优化 发现路径中都有/depts,可以将每个方法对应请求路径中的…...
文档加密怎么做才安全?
公司的文档包含很多机密文件,这些文件不仅关乎公司的核心竞争力,还涉及到客户隐私、商业策略等敏感信息。因此,文档的保管和传递一直是我们工作的重中之重。 为了确保机密文件的安全,公司需要制定了一系列严格的保密措施。从文件的…...
使用Setup Factory将C#的程序打包成安装包
一、软件下载 https://download.csdn.net/download/qq_65356682/90042701 可以直接下载 二、软件使用 打开 1、创建一个新的项目 2、设置如下信息,也可以不设置,最好填非空的、 产品名就是你安装成功后生成文件的名称 3、如下文件夹路径就是你C#中ex…...
解决 java -jar 报错:xxx.jar 中没有主清单属性
问题复现 在使用 java -jar xxx.jar 命令运行 Java 应用程序时,遇到了以下错误: xxx.jar 中没有主清单属性这个错误表示 JAR 文件缺少必要的启动信息,Java 虚拟机无法找到应用程序的入口点。本文将介绍该错误的原因以及如何通过修改 pom.xm…...
Java HashSet 介绍
怀旧网个人博客网站地址:怀旧网,博客详情:Java HashSet 介绍 哈希值介绍 创建一个实体类 public class Student {private String name;private int age;public Student(String name, int age) {this.name name;this.age age;} }使用测试…...
2024年几款免费的AI对话工具介绍
目前几款免费的AI对话工具介绍 文章目录 目前几款免费的AI对话工具介绍一、前言二、AI对话工具介绍1、讯飞星火认知大模型2、百度文心一言3、通义千问4、豆包5、百川大模型6、智谱清言7、月子暗面-KIMI下面是国外的 AI 对话工具: 8、Replika8、Cleverbot9、Coze 三、…...
Gazebo构建模型(含GNSS、IMU、LiDAR、Camera传感器)
将GNSS、IMU、LiDAR、Camera传感器和机器人的base分别放在不同的文件中。这样可以提高模型的可维护性和模块化。下面是一个示例,展示如何将这些部分分别放在不同的.xacro文件中,然后通过导入的方式组合在一起。 1. 创建基础文件:my_robot.xa…...
#Js篇: 链式判断运算符 ?.和Null判断运算符 ??和逻辑赋值运算符||= = ??=
链式判断运算符 ?. ?.运算符,直接在链式调用的时候判断,左侧的对象是否为null或undefined。如果是的,就不再往下运算,而是返回undefined。 链判断运算符?.有三种写法。 obj?.prop // 对象属性是否存在 obj?.[expr] // 同上…...
IDEA敲Web前端快捷键
1.html基础格式 英文符号TAB键 <!doctype html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport"content"widthdevice-width, user-scalableno, initial-scale1.0, maximum-scale1.0, mini…...
【Vue3】【Naive UI】<NDropdown>标签
【Vue3】【Naive UI】 标签 基本设置自定义渲染交互事件其他属性 【VUE3】【Naive UI】<NCard> 标签 【VUE3】【Naive UI】<n-button> 标签 【VUE3】【Naive UI】<a> 标签 【VUE3】【Naive UI】<…...
技术总结(四十一)
一、MySQL 索引概述 索引的概念:索引就好比一本书的目录,它能帮助 MySQL 快速定位到表中的数据行,而不用全表扫描。通过创建合适的索引,可以大大提高查询的效率。例如,在一个存储了大量员工信息的表中,如果…...
Android布局
一、线性布局 属性:orientation vertical horizontal layout_weight【水平均分,width"0dp"】 layout_height layout_width 小动物连连看 1<?xml version"1.0" encoding"utf-8"?>2<LinearLayout xmlns:and…...
k8s集成skywalking
如果能科学上网的话,安装应该不难,如果有问题可以给我留言 本篇文章我将给大家介绍“分布式链路追踪”的内容,对于目前大部分采用微服务架构的公司来说,分布式链路追踪都是必备的,无论它是传统微服务体系亦或是新一代…...
如何写一份优质技术文档
作者简介: 本文作者拥有区块链创新专利30,是元宇宙标准化工作组成员、香港web3标准工作组成员,参与编写《数据资产确权与交易安全评价标准》、《链接元宇宙:应用与实践》、《香港Web3.0标准化白皮书》等标准,下面提供…...
LeetCode:206.反转链表
跟着carl学算法,本系列博客仅做个人记录,建议大家都去看carl本人的博客,写的真的很好的! 代码随想录 LeetCode:206.反转链表 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例…...
Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...
C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...
8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
srs linux
下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...
ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...
selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...
Springboot社区养老保险系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...
