打印出马里奥两个半金字塔 CS50
Print out mario two half pyramid 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;
}
为什么不在第一个循环中做类似的事情:
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("#");
}
嘿,我正在研究 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;
}
为什么不在第一个循环中做类似的事情:
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("#");
}