H2330819027


私信TA

用户名:dotcpp0701405

访问量:1006

签 名:

Just a little wind and frost

等  级
排  名 363
经  验 4931
参赛次数 0
文章发表 58
年  龄 18
在职情况 学生
学  校 Hzu university
专  业 软件工程

  自我简介:

解题思路:

在函数内部,定义了一个整型变量`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 人评分

  评论区