为什么我的 C 程序得不到预期的输出?
Why am I not getting the desired output of my C program?
//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 library.Now,关于这个程序,我知道我在第三个 'for loop' 中搞砸了一些东西,但我不知道是什么。
有人可以帮我解决这个问题吗?
循环 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) 打印 #
的循环应 而不是 在循环打印空格
内
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;
}
输出:
#
###
#####
#######
#########
以下代码应该适合您
#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
// }
}
}
问题很简单,您在名为“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
}
}
//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 library.Now,关于这个程序,我知道我在第三个 'for loop' 中搞砸了一些东西,但我不知道是什么。
有人可以帮我解决这个问题吗?
循环 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) 打印 #
的循环应 而不是 在循环打印空格
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;
}
输出:
#
###
#####
#######
#########
以下代码应该适合您
#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
// }
}
}
问题很简单,您在名为“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
}
}