理论教育 C语言程序设计:字符数组应用实例

C语言程序设计:字符数组应用实例

时间:2023-11-02 理论教育 版权反馈
【摘要】:例5.16输入一串字符存放在一维数组s中,从键盘输入一个字符存放变量ch中,请将数组s中的所有小写英文字母用ch中的字符替换,然后输出替换后的数组s。程序代码如下:例5.20输入一个英文字母,将该字母插入一个由英文字母组成的字符串中。程序代码如下:例5.22输入一行英文句子,两个单词之间用若干个空格隔开,英文句子前面无空格且句子全部由英文字符组成。

C语言程序设计:字符数组应用实例

例5.16 输入一串字符存放在一维数组s中,从键盘输入一个字符存放变量ch中,请将数组s中的所有小写英文字母用ch中的字符替换,然后输出替换后的数组s。

【分析】首先使用gets(s)输入一串字符,使用“ch=getchar();”输入一个字符。然后循环查找并替换s中的小写英文字母。最后使用puts(s)输出替换后的数组s。

程序代码如下:

例5.17 输入K个字符,用冒泡法将这K个字符从小到大排序。

【分析】冒泡法的编程思路如下:

①进行第1轮的比较(n=1),找出a[1]至a[K]范围内最大的字符,存放在a[K]中。

②进行第2轮的比较(n=2),找出a[1]至a[K-1]范围内最大的字符,存放在a[K-1]中。

③进行第3轮的比较(n=3),找出a[1]至a[K-2]范围内最大的字符,存放在a[K-2]中。

④照此类推。进行第K-2轮的比较(n=K-2),找出a[1]至a[3]的范围内最大的字符,存放在a[3]中。

⑤进行第K-1轮的比较(n=K-1),找出a[1]和a[2]中的最大的字符,存放在a[2]中。此时存放在a[1]中的就是最小的字符。

在进行每一轮的比较时,根据给定的n值,将a[1]至a[K-n]范围内的每个数组元素a[m]与它后面的相邻元素a[m+1]进行比较。比较时,若a[m]>a[m+1],则交换a[m]和a[m+1]这两个元素的值。这样经过若干次相邻元素的比较和交换,就能将本轮要比较的范围内的最大值找出来,并存放于a[K-n]中。

程序代码如下:

执行程序,若输入如下10个字符:

则程序的输出结果如下:

例5.18 使用冒泡法对K个字符串进行从小到大排序。

【分析】编程思路与例5.17基本相同。注意:比较两个字符串大小时,使用strcmp函数,将一个字符串复制到一个数组时,使用strcpy函数。

程序代码如下:

执行程序,若输入以下7个字符串:(www.daowen.com)

则程序的输出结果如下:

也可以使用冒泡法对数值型数据进行从小到大(或从大到小)的排序。

例5.19 输入100个英文单词,请输出其中最长的英文单词以及它的长度

【分析】可用strlen函数循环计算字符串长度并比较大小。

程序代码如下:

例5.20 输入一个英文字母,将该字母插入一个由英文字母组成的字符串中。该字符串已经按照从小到大的顺序将字母排列。插入后,使字符串中的所有字母仍按从小到大的顺序排列。最后输出插入字母后的字符串。

【分析】可将插入的字母存放在变量ch中,将从小到大排列的字符串存放数组a中。将变量ch与数组a的元素值(从下标0开始)顺序对比,如果ch>=a[j]并且没有比到a的最后一个字符,那么让变量j增1;否则循环结束,就确定了插入的位置,就是变量j的值代表的位置。然后,将a中从j位置以及该位置后面的所有字符平行后移一位,将ch的值放在该位置。最后,输出插入字符后的数组a。

程序代码如下:

例5.21 将1000种商品的编号、名称、产地、数量等信息存储在数组中。从键盘输入一个编号,查找并输出具有该编号的商品的信息。

【分析】可用3个二维char型数组存放商品的编号、名称、产地,用1个一维int型数组存放商品的数量。每个二维数组的第k(k=0,1,2,…,999)行,存放第k种商品的编号、名称、产地,一维数组的第k(k=0,1,2,…,999)个元素存放第k种商品的数量。输入被查找的编号后,将该编号与存放商品编号数组中的编号对照,确定是否找到。

程序代码如下:

例5.22 输入一行英文句子(小于100个字符),两个单词之间用若干个空格隔开,英文句子前面无空格且句子全部由英文字符组成。请统计英文句子中有多少个单词。

【分析】将英文句子存放数组中。若句子长度为0,则包含0个单词;若句子长度大于0,则至少有一个单词。可以从前向后逐个字符判断,若在一个空格后连接一个字符,则表示又出现了一个单词。对于符合“在一个空格后连接一个字符”的情况,让单词个数加1,直到句子结束。

程序代码如下:

执行程序,若输入如下字符:

则程序的输出如下:

执行程序,若直接按回车键或输入几个空格后按回车键(即输入的句子是空的),则程序的输出如下:

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈