【蓝桥杯算法题】字符串匹配算法

news/2024/10/22 14:03:14/

题目:用C语言写一个程序,输入一个字符串,过滤此串,只保留字符串中的字母字符,并统计新生成的字符串中包含的字母个数,要求用指针实现。

实现:

#include <stdio.h>
#include <ctype.h>int filterLetters(char *str);int main() {char str[100];printf("请输入一个字符串: ");fgets(str, 100, stdin); // 获取用户输入的字符串int letters_count = filterLetters(str); // 调用函数过滤字母字符并统计个数printf("过滤后的结果为: %s\n", str);printf("过滤后的字符串中包含 %d 个字母\n", letters_count);return 0;
}int filterLetters(char *str) {char *p1 = str, *p2 = str;int count = 0;while (*p2 != '\0') {if (isalpha(*p2)) { // 判断字符是否为字母*p1++ = *p2; // 指针 p1 和 p2 分别指向相同的字母字符count++; // 统计字母个数}p2++; // p2 每次移动指向下一个字符}*p1 = '\0'; // 将 p1 所在的位置赋值为 NULL,结束字符串return count;
}

解释1:

这段代码实现了一个过滤字符串中非字母字符的功能,并统计字母个数。

  • 首先,在主函数中,定义一个长度为100的字符数组str,用fgets函数从标准输入获取用户输入的字符串。
  • 然后调用filterLetters函数,利用指针p1和p2遍历字符串中的每个字符,判断是否为字母字符,
  • 若是,则将其赋值给p1所指向的位置,并让p1指向下一个位置,同时统计字母个数count;
  • 若不是,则直接跳过该字符,继续向后遍历。最后,在filterLetters函数中,将p1所在的位置赋值为NULL,结束字符串,并返回字母个数count。
  • 需要注意的是,isalpha函数是ctype.h头文件中的一个函数,用来判断字符是否为字母,如果是则返回非零值(true),否则返回0(false)。此外,在使用fgets函数时,需要注意输入字符串的长度不要超过数组str的长度,否则会导致数组越界的问题。

解释2:

这段代码的功能是从用户输入的字符串中过滤出字母字符,并统计字母字符的个数,最后输出过滤后的结果和字母字符的个数。

  • 具体来说,代码中首先包含了两个头文件:stdio.h 和 ctype.h。stdio.h 包含了一些标准输入输出函数,而 ctype.h
    包含了一些字符处理函数,例如判断一个字符是否为字母字符。
  • 在 main 函数中,首先定义了一个 char 类型的数组 str,用于存储用户输入的字符串。然后通过 fgets 函数从标准输入流
    stdin 中获取用户输入的字符串,最多读取 100 个字符,将其存储在 str 数组中。
  • 接着调用 filterLetters函数对字符串进行过滤,该函数的作用是将字符串中的字母字符保留下来,并且将它们移动到数组的前面,非字母字符则被忽略掉。该函数返回被保留下来的字母字符的个数。
  • 在 filterLetters 函数中,首先定义两个指针 p1 和 p2,分别指向字符串的开头。然后使用一个 while循环遍历整个字符串,如果当前字符是字母字符,则将其移动到 p1 所指向的位置,并将 p1 后移一位,同时统计字母字符的个数count。如果当前字符不是字母字符,则直接将 p2 后移一位。
  • 最后,在字符串的末尾加上一个 NULL 字符,以表示字符串的结束。在 main 函数中,输出过滤后的结果和字母字符的个数即可。

总之,这段代码实现了一个简单的字符串处理功能,能够对用户输入的字符串进行一定的过滤和统计。


http://www.ppmy.cn/news/283448.html

相关文章

水滴屏壁纸来了!有你喜欢的吗?

高清原图下载地址在小程序宅哥工具箱哦&#xff01;

江南水乡

2004年夏天走访周庄,西塘等水乡, 相机是NiKon775 200万象&#xff0e;

梦中江南水乡

梦中江南水乡 最美是梦中江南水乡&#xff0c;乌篷船&#xff0c;青绿色的水&#xff0c;在江南烟雨中挺立千年的古木桥&#xff0c;斑驳的青石板路&#xff0c;木制的亭柱&#xff0c;红红的灯笼&#xff0c;两道砖墙间狭窄的路&#xff0c;说着轻柔的吴侬语走过后留下淡淡清…

简单家乡风景静态HTML网页设计作品 DIV布局家乡介绍网页模板代码-家乡佛山

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材&#xff0c;DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 家乡旅游景点 | 家乡民生变化 | 介绍自己的家乡 | 我的家乡 | 家乡主题 | HTML期末大学生网页设计作业 HTML&#xff1a;结构 CSS&#xff1a;样式 在…

PSP - 更新 MSA 搜索的全部 UniProt 蛋白序列库

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/131115471 UniProt 是一个提供蛋白质序列和功能信息的数据库,由欧洲生物信息学研究所(EMBL-EBI)、美国瑞士生物技术信息中心(SIB)和美国蛋白质信息资源(…

我的家乡主题网页设计

目录 首页 家乡历史 家乡方言 白话部分 壮话部分 家乡民俗 家乡美食 家乡建筑 这个网页是期末考核作业&#xff0c;介绍了我的家乡-广西南宁&#xff0c;我只用了htmlcssjavascript实现。 图片来自站酷、百度百科、小红书&#xff0c;如果图片侵权&#xff0c;请联系我删…

这个API Hub太厉害了,太适合接口测试了,收录了钉钉企业微信等开放Api的利器

目录 前言&#xff1a; 01API Hub的项目 02API Hub 03调试 04 API 调试 05 API mock 06 针对开放项目功提供者 08 下载 前言&#xff1a; API Hub 的优势在于它提供了完整的 API 管理解决方案&#xff0c;包括API的设计、接口调试、测试和文档管理等。通过集中管理API…

在 Android 上恢复已删除的通话记录 - 安卓手机通话记录恢复技巧

有时&#xff0c;Android 用户会在内存空间用完时删除他们的通话记录。他们认为那些电话通话记录将不再需要了&#xff0c;但突然出于某些原因他们需要恢复那些已删除的通话记录。 恢复已删除的照片、视频、音乐、短信和通话记录等数据在以前是一件很难的事情。但是现在如果你…