解题思路:
在函数内部,定义了一个整型变量`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分
2 人评分
C语言训练-求矩阵的两对角线上的元素之和 (C++代码)浏览:779 |
十->二进制转换 (C++代码)(零和负数需要特殊处理)浏览:1024 |
点我有惊喜!你懂得!浏览:1376 |
川哥的吩咐 (C语言代码)浏览:857 |
C语言程序设计教程(第三版)课后习题8.4 (Java代码)浏览:725 |
C语言程序设计教程(第三版)课后习题8.8 (C语言代码)浏览:577 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:1281 |
C语言程序设计教程(第三版)课后习题10.3 (C语言代码)浏览:524 |
用筛法求之N内的素数。 (C语言代码)浏览:643 |
2003年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:570 |