c++ - 我在使用 bool 函数时遇到问题,用户输入两个字母并输出哪个字母在字母表中最高

标签 c++ function char boolean runtime-error

我是学习函数的新手,我基本上是在做大学练习,用户输入两个字母,例如 j,然后字母表中的字母 1 高于字母 2,反之亦然。它必须是一个 bool 函数,这是问题所在。

4. A。为可以传递一对的函数 IsAlphaHigher 写一个原型(prototype) 字符,这将返回一个 boolean 值,指示是否 第一个字符按字母顺序排列较高。 (注意‘a’高于‘z’) b.为函数 IsAlphaHigher 写一个定义 C。编写一个将使用函数 IsAlphaHigher 的测试应用程序。

现在,如果用户输入类似 n 或大写字母 A N 的内容,就很容易了。 ASCII 表中最低的字母在字母表中较高。但是,当用户输入诸如大写字母 R 小写字母 a 之类的内容时,大写字母 R 在 ASCII 表中为 82,小写字母 a 为 97。

我发现如果任何小写字母 - 任何大写字母 = 大于 32,那么大写字母在字母表中的位置更高。

这背后的逻辑是 a - A = 32 , b - B = 32 , q - Q = 32 等。所以大于 32 的大写字母高于小写字母,低于 32 的任何字母,小写字母高于大写字母。

我使用了一系列 if 语句来解决这个问题,但是我遇到了一个错误,我不太确定它来自哪里或为什么,所以我非常感谢您的帮助。

谢谢。

#include <iostream>
using namespace std;
bool IsAlphaHigher(char letterOne, char letterTwo);

int main()
{
    char letter1, letter2;

    cout << "Enter two letters ";
    cin >> letter1 >> letter2;

    IsAlphaHigher(letter1, letter2);

    if (IsAlphaHigher(letter1,letter2) == 1)
        cout << "letter one is higher on the alphabet than letter two ";
    else
        cout << "letter two is higher on the alphabet than letter one ";
}


bool IsAlphaHigher(char letterOne, char letterTwo)
{

    bool status;

    if (letterOne < 90 && letterTwo < 90)
        {
            if (letterOne < letterTwo)
                status = true;
            else
                status = false;
        }

    if (letterOne > 90 && letterTwo < 90)
        {
            if (letterOne < letterTwo)
                status = true;
            else
                status = false;
        }

    if (letterOne < 90 && letterTwo > 90)
        {
            if (letterTwo - letterOne <= 32)
                status = true;
            else
                status = false;
        }

    if (letterOne > 90 && letterTwo < 90)
        {
            if (letterOne - letterTwo <= 32)
                status = true;
            else
                status = false;
        }
    return status;
}

当我构建它时,它说没有错误,但是当我进入命令 shell 并输入两个字母时,它给了我一个“运行时检查失败 #3 T” 我不知道为什么。

这是我的第一个 boolean 函数,所以我想我做错了什么,非常感谢任何关于我哪里出错的提示。

最佳答案

您可以先将两个字母转换为相同的大小写。不确定哪种情况你想返回 true。

bool IsAlphaHigher(char letterOne, char letterTwo)
{

    if (letterOne > 90) letterOne -= 32;
    if (letterTwo > 90) letterTwo -= 32;

    return letterOne > letterTwo;  // true if letterOne is higher.
}

关于c++ - 我在使用 bool 函数时遇到问题,用户输入两个字母并输出哪个字母在字母表中最高,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41798483/

相关文章:

c++ - 通过 make_unique/make_shared 调用 initializer_list 构造函数

c++ - 从 io_context 中删除工作或使用多个 io_context 对象

Java:无法调用带参数的函数

swift - 如何在 Swift 中调用函数?

c - 使用 boolean 标志检测输入错误,C

c++ - opengl 驱动程序如何在有限的 VRAM 中处理大型纹理阵列

function - 是否有任何宏不能表示为函数?

c++ - C/C++ 枚举和 char * 数组

c - 将变量地址传递给 C 函数

c++ - 在C++中实现栈