按字母顺序排列(Visual studio 13)

时间:2018-02-22 15:05:47

标签: c++ c++11

我正在尝试制作一个程序,从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 ..你们有没有遇到过这个问题,你能帮助我吗?

3 个答案:

答案 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;
}