输入字母 f 或任何字母并计算字母表模式,如 abc abcd abcde abcdef 但它仅在我按 0 时有效

input the letter f or any letter and cout an alphabet pattern like a abc abcd abcde abcdef but it only works if i press 0

到目前为止,当你输入 f 时没有任何反应,它只在输入 0 时有效,但我想要它,所以当你按 f 时,你会得到这个 a ab abc abcd abcde abcdef

#include <iostream>
using namespace std;
int main()
{
int f = 0;
int z;
cout << "";
while(cin >> f)
{
    if(f == 0)
    {
        cout << "ABCDEF\nABCDE\nABCD\nABC\nAB\nA";
        break;
     }
   }
}

变量f是一个int。当您按下 'f' 键时,cin istream 尝试将 int 设置为 'f',这不是数字,因此从字符到数字的转换失败。

该失败在 cin 中设置了坏位,从而跳出了 while 循环。

将输入读入 char 很简单:std::cin >> c 读入 char c 即可。

有趣的一点是编写一个可移植 打印字母到特定字符的方法。这是一种方法:

// Prints up to and including 'c'.
// Outputs the alphabet if 'c' is not a lower case letter.
void print(char c)
{
    static const char s[] = "abcdefghijklmnopqrstuvwxyz";
    for (std::size_t i = 0; s[i]; ++i){
        std::cout << s[i];
        if (s[i] == c){
            std::cout << '\n';
            return;
        }
    }
}

如果输入 f 会导致错误,因为它需要一个整数。您可以将字符转换为整数。如果你想在输入 f 时转换结果,你必须选择:

1.

char input;
std:cin >> input;
if((int)input == 102){
   .....

2.

char input;
std:cin >> input;
if(input == 'f'){
    .....

编辑: 如果你想按降序打印字母表,Michael Roy 有一个很好的解决方案,但按顺序

 if....
    for(char i = input; i >= 'a'; --i)
       cout << i - 32; //the 32 is for converting the lower case char into upper case
    cout << '\n';

所以总的来说它看起来像这样:

char input;
std:cin >> input;
if('a' < input < 'z'){
     for(char i = input; i >= 'a'; --i)
        cout << i - 32;
     cout << '\n';
 }else{
     cout << "Not a valid input";
 }
 System("Pause");//so the console doesn't close automatically

这里有一种方法可以让你的程序做你想做的事:

#include <iostream>
using namespace std;
int main()
{
  char c = 0;  // we want chars, not integers.
  int z;
  cout << "";
  while (cin >> c)
  {
    if ('a' <= c && c <= 'z') // test for the range we want
    {
      // print all glyphs from a to 'c'
      for (char i = 'a'; i <= c; ++i)
        cout << i;
      cout << '\n';
      break;
    }
  }
}