统计元音字母个数

任务描述

本关任务:输入一个字符串(少于80个字符),统计并输出其中元音字母(AEIOUaeiou)的个数(不区分大小写)。

编程要求

在右侧编辑器补充代码,输出字符串中元音字母的个数。

测试说明

平台会对你编写的代码进行测试:

测试输入:I have an apple 预期输出:Count=6

参考代码

#include <iostream>
using namespace std;

int main() {
    char str[90], t[12]="AEIOUaeiou";
    cin.getline(str, 80);
    int cnt = 0;
    for (int i=0;str[i];i++) {
        for (int j=0;j<10;j++) if (str[i]==t[j]) { cnt++; break; }
    }
    cout << "Count=" << cnt << endl;
    return 0;
}

字符重排序

任务描述

本关任务:输入一个字符串(少于80个字符),去掉重复的字符后,按照字符的ASCII码值从大到小输出。

编程要求

在右侧编辑器补充代码,去掉重复字符后按照字符的ASCII码从大到小输出。

测试说明

平台会对你编写的代码进行测试:

测试输入:ya7bb2tizx4m55n9q2 预期输出:zyxtqnmiba97542

参考代码

#include <iostream>
using namespace std;

int main()
{
    char str[81];
    cin.getline(str, 80);
    for (int i=0;str[i];i++) {
        for (int j=i+1;str[j];j++) {
            if (str[i]<str[j]) {
                str[i]^=str[j]^=str[i]^=str[j];
            }
        }
    }
    for (int i=0;str[i];i++) {
        if (i==0 || str[i]!=str[i-1]) cout << str[i];
    }

    return 0;
}

寻找字符串

任务描述

本关任务:输入两个字符串str1和str2,每个字符串是一行,查找str2在str1里首次出现的位置。

编程要求

在右侧编辑器补充代码,根据读入的两个字符串,实现查找功能。如果str2在str1中不存在,则输出-1。

注意:(1)每一行不超过160个字符,可以包含任意字符;(2)不使用字符串比较的库函数。

测试说明

平台会对你编写的代码进行测试:

测试输入:

To be, or not to be:that is the question,
To

预期输出:

0

测试输入:

To be, or not to be:that is the question,
Be

预期输出:

-1

参考代码

#include <iostream>
using namespace std;

int main()
{
    char str1[165], str2[165];
    cin.getline(str1, 161);
    cin.getline(str2, 161);

    bool is_exist = false;
    for (int i=0, j; str1[i]; i++) {
        for (j=0; str2[j]; j++)
            if (str1[i+j] != str2[j]) break;
        if (!str2[j]) {
            cout << i;
            is_exist = true;
            break;
        }
    }
    if (!is_exist) cout << -1;
    return 0;
}

摩尔斯电码

任务描述

本关任务:编写一个程序,读入一个英语短语,然后把它编码成摩尔斯码。每个摩尔斯编码字母之间用一个空格,每个摩尔斯编码单词之间用三个空格。

摩尔斯电码(又译为摩斯密码,Morse code)是一种时通时断的信号代码,用一系列圆点和破折号表示字母表中的每个英文字母,每个数字和一些特殊标点符号,如下图1所示。

图1

输入为一行,一个字符串,字符串中仅有大小写英文字母(大小写不作区分),数字,和空格。 输出为一行,对于输入的每个字符,如果是英文字母或数字,则输出对应的摩斯电码,否则输出原字符,两个输出间用一个空格相间。 例如:输入为

a0b 12

则输出为

.- ----- -...  .---- ..---

编程要求

在右侧编辑器补充代码,将英语短语编码成摩尔斯码。

测试说明

平台会对你编写的代码进行测试:

测试输入:SOS 预期输出:... --- ...

参考代码

#include <iostream>
#include <cstring>

using namespace std;

char alp[30][8] = {
    ".-", "-...", "-.-.", "-..",
    ".", "..-.", "--.", "....",
    "..", ".---", "-.-", ".-..",
    "--", "-.", "---", ".--.",
    "--.-", ".-.", "...", "-",
    "..-", "...-", ".--", "-..-",
    "-.--", "--.."
};
char num[15][8] = {
    "-----", ".----", "..---", "...--",
    "....-", ".....", "-....", "--...",
    "---..", "----."
};
int main()
{
    char s[101];
    cin.getline(s, 100);
    for (int i=0;s[i];i++) {
        if ('a' <= s[i] && s[i] <= 'z') cout << alp[s[i]-'a'] << " ";
        else if ('A' <= s[i] && s[i] <= 'Z') cout << alp[s[i]-'A'] << " ";
        else if ('0' <= s[i] && s[i] <= '9') cout << num[s[i]-'A'] << " ";
        else cout << s[i] << " ";
    }
    return 0;
}