📜  门| GATE CS 2019 |问题 5(1)

📅  最后修改于: 2023-12-03 14:58:20.802000             🧑  作者: Mango

门| GATE CS 2019 |问题 5

该题目是GATE CS 2019的第5个问题,要求程序员使用C语言编写一个程序,实现以下功能:

给定一个字符串,将其中所有的元音字母(包括大小写)替换为一个下划线字符 "_"

要求
  • 输入字符串长度不超过100个字符。
  • 输出的字符串长度应和输入字符串长度相同。
  • 只替换元音字母,而保留其他字符不变。
  • 大小写字母均视为同一种元音字母。
示例
输入
The quick brown fox jumps over a lazy dog.
输出
Th_ q__ck br_wn f_x j_mps _v_r _ l_zy d_g.
代码实现
#include <stdio.h>
#include <string.h>

int main()
{
    char str[101];
    int length, i;

    printf("请输入字符串:");
    gets(str);
    length = strlen(str);

    for (i = 0; i < length; i++)
    {
        if (str[i] == 'a' || str[i] == 'e' || str[i] == 'i' || str[i] == 'o' || str[i] == 'u' || str[i] == 'A' || str[i] == 'E' || str[i] == 'I' || str[i] == 'O' || str[i] == 'U')
        {
            str[i] = '_';
        }
    }

    printf("替换后的字符串:%s", str);

    return 0;
}

代码思路:

  1. 首先定义了一个char类型的字符串数组str和两个int类型的变量length和i。
  2. 使用gets()函数从用户处获取一个字符串,并使用strlen()函数计算出字符串长度。
  3. 在for循环语句中,使用if语句判断当前字符是否属于元音字母(包括大小写),若是,则将其替换为下划线字符 "_"。
  4. 最后使用printf()函数输出替换后的字符串。

注:该代码使用了gets()函数获取用户输入的字符串,但该函数不安全,容易出现缓冲区溢出等问题,实际开发中应该使用更为安全的fgets()函数来代替。