【发布时间】:2019-03-18 18:40:48
【问题描述】:
我是马特,第一次发帖。我现在在学校学习 c++,我被这个问题困住了。我似乎找不到解决方案,所以我正在寻求帮助。
#include <iostream>
using namespace std;
int main()
{
char ch;
cin >> ch;
if(ch <= 122){
cout << ++ch;
cout << ++ch;
}else if (ch > 122){
cout << static_cast<char>(97)++ch;
cout << static_cast<char>(97)++ch;
}
}
该程序非常基础。它需要做的就是输入一个小写字母,程序只需要吐出接下来的两个字符。我的问题是在'z'之后我不知道如何回到'a'。我试过 static_cast 但它说我可以'。我试过重新分配变量,它说我不能。我已经尝试了其他几个基本的东西,但似乎没有一个工作。
提前感谢您的帮助!
【问题讨论】:
-
先用数字试试。如果我给你
25,你知道如何生成26 1吗? -
try = (char) 'a';
-
首先,不要使用像 122 和 97 这样的幻数。使用实际的字符值。其次,只需声明一个字符串“abcdefghijklmnopqrstuvwxyz”,并索引到该字符串。这消除了对 122、97 或任何其他数字的需要。不仅如此,在处理 0、1、25 等而不是 122、97 等索引时,您可能会看到如何更轻松地解决问题。
-
@PaulMcKenzie IIRC C++ 标准保证
'a'-'z'将由连续值编码,即使它不是基于 ASCII 的编码(几乎肯定会如此)。因此,您可以安全地使用'a'并从中偏移。 -
static_cast<char>(97)++ch不好,++ 不是中缀运算符。
标签: c++ ascii computer-science word-wrap