//Aim of this program is to print a hash pyramid
#include <stdio.h>
#include <cs50.h>
int main(void)
{
int height, spaces, hash;
do
{
printf("Enter the height of the wall:\n"); // Prompt the user for the height
height = get_int();
}
while(height<0 || height>23);
for (int i=0; i<height; i++)
{
for (spaces= height-i; spaces>1; spaces--)
{
printf(" "); //print spaces
for (hash= 0; hash<=height+1; hash++)
{
printf("#"); //print hashes
}
printf("\n"); //move to the next line
}
}
}
这是一个打印哈希金字塔的程序。 我是在edx上进行CS50x课程的一部分,因此我已经包括了CS50库。现在,关于程序,我知道我在第三个“ for循环”中弄乱了东西,但我没有知道是什么。
有人可以帮我吗?
答案 0 :(得分:2)
用1个循环来做。
您不需要3个循环!
#include <stdio.h>
int main(void) {
int height;
do
{
printf("Enter the height of the wall:\n"); // Prompt the user for the height
scanf("%d", &height);
}
while(height<0 || height>23);
for(int i = 0; i < height; ++i)
{
printf("%d: %*.*s\n", i+1, height+i, 2*i+1, "########################################");
}
return 0;
}
高度为6的样本输出:
Success #stdin #stdout 0s 4284KB
1: #
2: ###
3: #####
4: #######
5: #########
6: ###########
答案 1 :(得分:1)
我在您的代码中看到了三个问题
1)打印#
的循环应该不在循环打印空间内
2)打印#
的循环的停止条件不正确
3)似乎您搞砸了h
和height
。我只是假设它们应该都一样
尝试:
#include <stdio.h>
int main()
{
int h, spaces, hash;
h = 5; // Fixed input to simplify code example
for (int i=0; i<h; i++)
{
for (spaces= h-i; spaces>1; spaces--)
{
printf(" ");
}
for (hash= 0; hash<=2*i; hash++) // Notice: <= 2*i
{
printf("#");
}
printf("\n");
}
return 0;
}
输出:
#
###
#####
#######
#########
答案 2 :(得分:1)
以下代码应为您工作
#include <stdio.h>
#include <cs50.h>
int main(void)
{
int i, height, spaces, hash;
do
{
printf("Enter the height of the wall:\n");
// Prompt the user for the height
scanf("%d", &height);// = get_int();
}
while(height<0 || height >= 23);
for ( i=0; i<height; i++)
{
for (spaces= height - i; spaces>1; spaces--)
{
printf(" "); //print spaces
}
for (hash= 0; hash<=i; hash++)
{
printf("# "); //print hashes
}
printf("\n"); //move to the next line
// }
}
}
答案 3 :(得分:0)
问题很简单,您在名为“ height ”的变量中输入变量,在for循环中您使用了未初始化的变量h。 第三个 for循环将在第二个for循环
之外这将是您的循环:
for (int i=0; i<h; i++)
{
for (spaces= h-i; spaces>1; spaces--)
{
printf(" ");
}
for (hash= 0; hash<=h+1; hash++)
{
printf("#"); //print hashes
}
printf("\n"); //move to the next line
}
}