[英]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
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.