我的朋友创建了一个程序,该程序可以在控制台上打印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
答案 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
答案 3 :(得分:1)
53是字符“ 5”的ASCII值,将功能签名更改为
void triforce_up (int Size, char character)
void triforce_up (int Size, char character)