当我在C ++中运行函数时,为什么我的代码显示数字53

时间:2019-11-29 05:43:45

标签: c++

我的朋友创建了一个程序,该程序可以在控制台上打印triforce,但是当他运行代码时,他意识到它打印的是奇怪的数字,而不是应该运行的数字。

代码如下:

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字符”更改为“ string字符”,以防止发生错误,但显示的断线力看起来与应有的样子不符。

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

4 个答案:

答案 0 :(得分:3)

“无效的ZeldaTriangle(int大小)”

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的某些字符有关。

答案 1 :(得分:1)

您将5作为char传递,但是您的函数接受整数值。传递char值时,函数将使用ASCII值作为int值。如果您查看ASCII表,“ 5”代表53。请参见以下链接: https://www.ascii-code.com/

答案 2 :(得分:1)

我猜,正如您所期望的

print_ZeldaTriangle (int Size, int character) {

}

并输入

print_ZeldaTriangle(Size, '5');

char转换为int,这很糟糕 转换为int时,字符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

答案 3 :(得分:1)

53是字符“ 5”的ASCII值,将功能签名更改为

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