【发布时间】:2017-06-07 11:57:51
【问题描述】:
我是学习函数的新手,我基本上是在为大学做一个练习,用户输入两个字母,例如 j,然后字母 1 高于字母表中的字母 2,反之亦然。它必须是一个布尔函数,这是问题所在。
4。 一种。为函数 IsAlphaHigher 编写一个原型,该函数可以传递一对 字符,这将返回一个布尔值,指示是否 第一个字符按字母顺序较高。 (注意“a”高于“z”) 湾。为函数 IsAlphaHigher 写一个定义 C。编写一个将使用 IsAlphaHigher 函数的测试应用程序。
现在,如果用户输入类似 n 或大写字母 A N 之类的内容,这很容易。 ASCII 表中最低的字母在字母表中更高。但是当用户输入大写字母 R 小写 a 时,ASCII 表中的大写 R 是 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” 我不知道为什么。
这是我的第一个布尔函数,所以我想我做错了什么,任何关于我哪里出错的提示将不胜感激。
【问题讨论】:
-
您可以使用
toupper()或tolower()将字符转换为相同大小写,然后再进行比较。 -
使用调试器查看错误发生的位置。
-
很少需要写
if (condition) status = true; else status = false;。只需写status = condition;。而且由于您只是返回status,因此您可以执行return condition。 -
if (letterOne > 90 && letterTwo < 90)那么你可以保证(letterOne < letterTwo)是假的。另外,请注意输入字母的方式。如果您在字母之间放置一个空格或在字母之间按Enter,这与两个连续的字母不同。 -
@WillMannix 我猜你可能已经看到一些使用
BOOL的旧式代码,其中FALSE == 0和TRUE == 1。但严格来说,任何非零值都意味着真实; only 零表示错误。所以严格来说if (booleanValue == 1) ...是一个微妙的错误。而是直接写if (booleanValue) ...(不管类型是BOOL还是bool)。
标签: c++ function char boolean runtime-error