簡體   English   中英

當我在 C++ 中運行我的函數時,為什么我的代碼顯示數字 53

[英]Why is my code displaying a number 53 when I'm running my functions in c++

我的朋友創建了一個向控制台打印三角力的程序,但是當他運行他的代碼時,他意識到它打印了奇怪的數字而不是應該運行的數字。

代碼如下所示:

using namespace std;

#include <iostream>

void ZeldaTriangle(int Size){
    for (int  row = 0; row < Size; row++)
    {
        for (int spa = 0; spa < (Size-row-1); spa++)
        {
            cout << (" ");
        }
        for (int col = 0; col < (row +1); col++)
        {
            cout << ("@");
        }
        cout << "" << endl;
    }

}
void triforce_up (int Size, int character){
    for (int row = 0; row < (Size); row++)
    {
        for (int spa = 0; spa < (Size*2-row-1); spa++)
        {
            cout << (" ") << flush;
        }
        for (int col = 0; col < (row +1); col++)
        {
            cout << character << flush;
        }
        cout << "" << endl;
    }
}
void triforce_down (int Size, int character){
    for (int row = 0; row < (Size); row++)
    {
        for (int spa = 0; spa < (Size-row-1); spa++)
        {
            cout << (" ");
        }
        for (int col = 0; col < (row +1); col++)
        {
            cout << character;
        }
        for (int spa = 0; spa < ((Size-row-1)*2); spa++)
        {
            cout << (" ");
        }
        for (int col = 0; col < (row +1); col++)
        {
            cout << character;
        }
        cout << "" << endl;
    }
}
void print_ZeldaTriangle (int Size, int character){
    triforce_up (Size, character);
    triforce_down (Size, character);
}
int main() {
    int Size = 6;
    print_ZeldaTriangle(Size, '5');
}

它應該顯示用數字“5”創建的三角力,但它顯示的是數字 53。

           53
          5353
         535353
        53535353
       5353535353
      535353535353
     53          53
    5353        5353
   535353      535353
  53535353    53535353
 5353535353  5353535353
535353535353535353535353

我試圖將“int character”更改為“string character”以防止錯誤發生,但它顯示了一個損壞的三角力,看起來不像它應該看起來的樣子。

           5
          55
         555
        5555
       55555
      555555
     5          5
    55        55
   555      555
  5555    5555
 55555  55555
555555555555

“void ZeldaTriangle(int Size)”

You don't need this function

當您將 char 轉換為 int 時

你的輸出有點像這樣:

5                    5
55       or         55
555                555
5555              5555
55555            55555
555555          555555

那么你的代碼在語法上是正確的,它正在打印它要打印的內容。 但邏輯上你自己缺乏基本的想象力。

  • 您可以在兩者之間插入空格或為其插入額外的值

如果你想要這樣或那樣的輸出......

     5                              5
    5 5                            555
   5 5 5                          55555
  5 5 5 5                        5555555
 5 5 5 5 5                      555555555
5 5 5 5 5 5                    55555555555

你的代碼很好你唯一需要的是一些結果想象力:)

我簡化了代碼: https ://repl.it/repls/FluffyMildMenu

關於“53”錯誤,我不確定,但我認為它與代碼中轉換為 int 的某些字符有關。

您將5作為 char 傳遞,但您的函數接受整數值。 當您傳遞一個 char 值時,您的函數將使用 ASCII 值作為 int 值。 如果您查看 ASCII 表,“5”代表 53。請參考以下鏈接: https ://www.ascii-code.com/

我想,正如您所期望的那樣

print_ZeldaTriangle (int Size, int character) {

}

並輸入這個

print_ZeldaTriangle(Size, '5');

char轉換成int,轉換成int的時候壞的是Char 5是53 參考這個表https://www.cs.cmu.edu/~pattis/15-1XX/common/handouts/ascii.html

所以,要解決這個問題,請執行此操作

int main() {
    int Size = 6;
    print_ZeldaTriangle(Size, 55);
}

編輯:- 做 55,而不是 5

https://repl.it/repls/NoteworthyEnviousFactor

53 是字符 '5' 的 ASCII 值,將函數簽名更改為

 void triforce_up (int Size, char character)
 void triforce_up (int Size, char character)

暫無
暫無

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

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