当前位置: 首页 > news >正文

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循环可以使程序简练。

http://www.lryc.cn/news/494200.html

相关文章:

  • 彻底理解微服务配置中心的作用
  • SpringBoot开发——详细讲解 Spring Boot 项目中的 POM 配置
  • pyspark实现基于协同过滤的电影推荐系统
  • 视觉语言模型(VLM)学习笔记
  • 学习笔记:黑马程序员JavaWeb开发教程(2024.11.29)
  • 文档加密怎么做才安全?
  • 使用Setup Factory将C#的程序打包成安装包
  • 解决 java -jar 报错:xxx.jar 中没有主清单属性
  • Java HashSet 介绍
  • 2024年几款免费的AI对话工具介绍
  • Gazebo构建模型(含GNSS、IMU、LiDAR、Camera传感器)
  • #Js篇: 链式判断运算符 ?.和Null判断运算符 ??和逻辑赋值运算符||= = ??=
  • IDEA敲Web前端快捷键
  • 【Vue3】【Naive UI】<NDropdown>标签
  • 技术总结(四十一)
  • Android布局
  • k8s集成skywalking
  • 如何写一份优质技术文档
  • LeetCode:206.反转链表
  • 详解高斯消元
  • Maven - 优雅的管理多模块应用的统一版本号
  • 国际网络安全趋势
  • 基于米尔全志T527开发板的FacenetPytorch人脸识别方案
  • Altium Designer脚本工具定制
  • 贝锐自研智慧网关系统OrayOS升级,适配Banana PI开发板BPI-R3 Mini
  • 搭建环境-PHP简介及环境搭建教程
  • Maven 配置
  • js常见函数实现
  • 点云3DHarris角点检测算法推导
  • mysql-binlog的三种模式