我正在尝试制作一个程序,从a到z和数字按字母顺序显示字母 适合每一封信。这是我的代码:
int main(){
int i = 97; //starting point
int v = 0; //increment with this value
while (i<=122)
{
cout << char('a' + v) << "\t" << i << endl;
++i;
++v;
}
现在的问题是,只显示100到122之间的数字以及我尝试的任何内容,不会显示97,98和99 ..你们有没有遇到过这个问题,你能帮助我吗?
答案 0 :(得分:3)
不要使用魔法数字,它们只会让你遇到麻烦。你有两种方法可以做到这一点。第一个不完全可移植的是使用像
这样的for循环for (char letter = 'a', letter <= 'z'; ++letter)
std::cout << letter << " " << static_cast<int>(letter) << "\n";
如果您使用a-z不连续的字符集,这将会破坏。如果你真的想要做得对,你可以使用
std::string alphabet = "abcdefghijklmnopqrstuvwxyz";
for (auto letter : alphabet)
std::cout << letter << " " << static_cast<int>(letter) << "\n";
答案 1 :(得分:0)
这对我来说很好用:
#include <iostream>
using std::cout;
int main() {
int i = 97; // starting point
int v = 0; // increment with this value
while (i <= 122) {
cout << char('a' + v) << '\t' << i << '\n';
++i;
++v;
}
}
结果:
a 97
b 98
c 99
d 100
e 101
f 102
g 103
h 104
i 105
j 106
k 107
l 108
m 109
n 110
o 111
p 112
q 113
r 114
s 115
t 116
u 117
v 118
w 119
x 120
y 121
z 122
顺便提一下性能,请使用&#39; \ n&#39;在std :: endl
答案 2 :(得分:0)
我喜欢Nathan给出的解决方案,这是另一个,非常相似:
#include <iostream>
const int ALPHABET_LETTERS_COUNT = 26;
int main()
{
for(int i = 0; i < ALPHABET_LETTERS_COUNT; i++)
std::cout << static_cast<char>('a' + i) << '\t' << static_cast<int>('a' + i) << '\n';
return 0;
}