原题链接:[编程入门]自定义函数之字符提取
解题思路:
在函数内部,定义了一个整型变量`i`并初始化为0。`i`将用于记录在`ch2`数组中插入的位置。
接下来是一个`while`循环,循环条件是`*ch1`指向的字符不是空字符`\0`。在循环体内,使用`switch`语句检查当前字符`*ch1`是否是元音字母。
如果`*ch1`是元音字母(即'a'、'e'、'i'、'o'、'u'中的一个),则将该字符存储到`ch2`数组的当前位置`*(ch2+i)`,然后`i`自增1,表示下一个元音字母要插入到`ch2`数组的下一个位置。
接着,将指针`ch1`向后移动一位,指向下一个字符。
循环结束后,插入结束符号`\0`到`ch2`数组的当前位置`*(ch2+i)`,表示字符数组的结束。
注意事项:
参考代码:
#include <stdio.h> // 包含标准输入输出库的头文件 #include <string.h> // 包含字符串处理函数库的头文件 // 函数声明:从输入字符串 ch1 中筛选出元音字母,并存储在 ch2 中 void refine(char *ch1, char *ch2) { int i = 0; // 初始化索引 i // 遍历字符串 ch1,直到遇到字符串结束符 '\0' while (*ch1 != '\0') { // 使用 switch 语句检查当前字符是否是元音字母 switch (*ch1) { case 'a': case 'e': case 'i': case 'o': case 'u': *(ch2 + i) = *ch1; // 如果是元音字母,则将其存储在 ch2 中 i++; // 增加索引 i,准备存储下一个元音字母 break; // 跳出 switch 语句 } ch1++; // 移动指针 ch1 到下一个字符 } *(ch2 + i) = '\0'; // 在 ch2 的末尾添加字符串结束符 return; // 函数返回 } int main() { char ch1[100]; // 声明一个字符数组 ch1,用于存储输入的字符串 char ch2[100]; // 声明一个字符数组 ch2,用于存储筛选后的元音字母 scanf("%s", &ch1); // 从标准输入读取一个字符串并存储在 ch1 中 refine(ch1, ch2); // 调用 refine 函数,将筛选后的结果存储在 ch2 中 printf("%s", ch2); // 打印 ch2 中的结果 return 0; // 返回程序的退出状态码,表示成功运行 }
0.0分
15 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复