簡體   English   中英

使用 for 循環和 setw 打印出字母表

[英]Print out the alphabet using for loop and setw

當我編譯我的程序,運行它並輸入值時,我會得到一個相當奇怪和意想不到的 output:

所以如果我輸入:

Enter width and height: 9 5
Enter characters: X O
1  XOXOXOXOX
2  OXOXOXOXO
3  XOXOXOXOX
4  OXOXOXOXO
5  XOXOXOXOX
A   BCDEFGHI

當它應該是:

Enter width and height: 9 5
Enter characters: X O
1  XOXOXOXOX
2  OXOXOXOXO
3  XOXOXOXOX
4  OXOXOXOXO
5  XOXOXOXOX
   ABCDEFGHI

我的void print_alphabet什么時候在另一個程序中運行它會很好,所以我不知道問題所在。 我相信它與我的其他 function 有關,但我似乎無法讓它工作。 為什么它會那樣做? 為什么它打印出 A 然后它確實設置並打印出 rest?

這是我的代碼:

#include <iostream>
#include <iomanip>

using namespace std;

void print_chess_board (int const height,
                        int const width,
                        char const char_1,
                        char const char_2)
{
    
    int index {};
    
    for (int i = 1; i <= height; ++i)
    {
        if (i%2)
        {
            index = 0;
        }
        else
        {
            index = 1;
        }
        
        cout << left << setw(3) << i;
        
        for (int j {}; j < width; ++j)
        {
    
           
          if (++index%2 == 0)
          {
              cout << char_2;
          }
          
          else
          {
              cout << char_1;
          }
        }
        
        cout << endl;
    }
    

   
}

void print_alphabet (int const width)
{
  
  cout << setfill(' ') << setw(4);

    for (int i {}; i < width; ++i)
    {
        cout << char('A' + i);
    }
}

int main()
{
    int width {};
    int height {};
    char char_1 {};
    char char_2 {};
    
    cout << "Enter width and height: ";
    cin >> width >> height;
    
    cout << "Enter characters: ";
    cin >> char_1 >> char_2;
   
    print_chess_board(height,width,char_1,char_2);
    print_alphabet(width);
    return 0;
}

你需要改變

cout << setfill(' ') << setw(4);

cout << right << setfill(' ') << setw(4);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM