打印出马里奥两个半金字塔CS50

问题描述:

嘿,我正在研究CS50更舒适的问题,我无法弄清楚如何在同一行上打印第二个马里奥金字塔。在我的代码中它已经打印出来,但它不在同一行。打印出马里奥两个半金字塔CS50

如果你指导我或告诉我如何去做,那并不重要。我正在使用CS50作为练习,我没有打开任何东西,所以这不会作弊。

#include <stdio.h> 
#include <ctype.h> 

int main(void) 
{ 
    int height = 0; 

    // left pyramid variables 
    int i = 0; 
    int j = 0; 
    int k = 0; 

    // variable for gap 
    int g = 0; 

    // right pyramid variables 
    int l = 0; 
    int m = 0; 
    int n = 0; 


    //do - while loop -- works 

    do 
    { 
     printf("Height: "); 
     scanf("%d", &height); 
    } 

    while (height < 0 || height > 23); 

    // Print pyramids 

     // print spaces for left pyramid (less spaces needed with time) ✓ 
     // print hashes for left pyramid ✓ 
     // print gap (2) 
     // print hashes for right pyramid 
     // print new line - for next row 

    // Left Pyramid 

    // Rows -- determines the height 
    for (i = 0; i < height; i++) 
    { 
     // Cols -- in this one we are doing the spaces 

     // the -i makes it left aligned -- to make it right aligned remove the "-1" 
     for (j = 0; j < height-i; j++) 
     { 
      // Printing Spaces 
      printf(" "); 
     } 
     // "i+1" - we want i to be 1 whenever height is 0, and we want i to increase by one 
     // whenever the height increases, so that's why we add + 1 to it 
     // if I don't add 1 to it what it does is that prints a new line, and then it prints 
     // 4 things instead of 5 for example. 
     for (k = 0; k < i + 1; k++) 
     { 
      printf("#"); 
     } 

     // Print new line 
     printf("\n"); 
    } 

    // Gap -- fix gap, the rest works how it should -- I think I need to make everything 
    // inside one loop 

    // for (g = 0; g < height; g++) 
    // { 
    //  printf(" "); 
    // } 

    // Right Pyramid 

     // Rows -- determines the height 
    for (l = 0; l < height; l++) 
    { 

     // Cols -- in this one we are doing the spaces 

     // right aligned 
     for (m = 0; m < height; m++) 
     { 
      // Printing Spaces 
      printf(" "); 
     } 
     // "i+1" - we want i to be 1 whenever height is 0, and we want i to increase by one 
     // whenever the height increases, so that's why we add + 1 to it 
     // if I don't add 1 to it what it does is that prints a new line, and then it prints 
     // 4 things instead of 5 for example. 
     for (n = 0; n < l + 1; n++) 
     { 
      printf("#"); 
     } 

     // Print new line 
     printf("\n"); 
    } 


    return 0; 
} 
+0

名变量为正确的:不是,指出“//为缺口变量” ..致电变量“空隙”评论!或者更具描述性的东西 –

+0

我在代码评论中溺水! – paddy

+0

由于换行符结束一行,并且没有选项返回到上一行(当然,不使用基本操作),您只需要同时向左和向右打印出来。 – Evert

为什么不这样做在第一循环:

for (k = 0; k < i + 1; k++) 
{ 
    printf("#"); 
} 

/* this is new */ 
/* Draw the gap */ 
for (k = 0; k < gap; k++) { 
    printf(" "); 
} 
/* Draw the left part*/ 
for (k = 0; k < i + 1; k++) 
{ 
    printf("#"); 
} 
+0

我会尝试。我还必须包括每个#和左右金字塔之间的两个空格之间的空格。感谢您的输入。我很感激 –

+0

谢谢你。有效。唯一不起作用的是两个金字塔之间的两个空隙。但其余的作品:D 你能帮助我解决两个空间的差距吗? –

+0

NVM我想出了差距 我做了以下操作: for(k = 0; k