在 C 程序中实现楼梯
Implementing a staircase within a C program
我刚开始使用 C 编程,在实现一个提供阶梯 'Height' 步数的程序时遇到了一些困难。
#include <cs50.h>
#include <stdio.h>
int main(void)
{
int height;
do
{
height = get_int("Height: ");
}
while(height > 8 || height == 0 || height < 0);
int width = 0;
int length = height;
while(width < height)
{
printf(" ");
printf("@");
for(width = 0; width < height; width++)
{
printf("\n");
}
}
}
高度的第一行是有效的,但我在实际写楼梯时遇到了困难。我想要这样或类似的东西。
Height: 3
@
@
@
如果我将来遇到这样的问题,我只想学习如何实现这样的东西。如果有人能进一步帮助我,我将不胜感激!
#include <stdio.h>
int main(void)
{
int height = 5;
for(int i=0; i<height; printf("%*s\n", ++i, "@"));
}
输出:
Success #stdin #stdout 0s 5572KB
@
@
@
@
@
我在这里看到三个问题:
- 您正在打印换行符 (
\n
) 而不是 spaces (
)。
- 为什么打印单个 space 字符?
- 您在 space 之前(应该是什么)打印
"@"
。
- 在 space 和
@
后打印换行符。
另外...楼梯的宽度总是等于它的高度;只是您正在打印的行在前进...这有点令人困惑。
这个有效:
#include <stdio.h>
int main() {
// gets height input - replace with your get_int method
int height;
printf("Height: ");
scanf("%i",&height);
// loop over all the steps: 0 - height
for (int i = 0; i < height; i++) {
// add a space i number of times (where i is our current step number and so equal to width)
// notice that if we take top left as (0,0), we go 1 down and 1 right each time = current step
for (int j = 0; j < i; j++) {
printf(" ");
}
// finally, after the spaces add the character and newline
printf("@\n");
}
return 0;
}
我刚开始使用 C 编程,在实现一个提供阶梯 'Height' 步数的程序时遇到了一些困难。
#include <cs50.h>
#include <stdio.h>
int main(void)
{
int height;
do
{
height = get_int("Height: ");
}
while(height > 8 || height == 0 || height < 0);
int width = 0;
int length = height;
while(width < height)
{
printf(" ");
printf("@");
for(width = 0; width < height; width++)
{
printf("\n");
}
}
}
高度的第一行是有效的,但我在实际写楼梯时遇到了困难。我想要这样或类似的东西。
Height: 3
@
@
@
如果我将来遇到这样的问题,我只想学习如何实现这样的东西。如果有人能进一步帮助我,我将不胜感激!
#include <stdio.h>
int main(void)
{
int height = 5;
for(int i=0; i<height; printf("%*s\n", ++i, "@"));
}
输出:
Success #stdin #stdout 0s 5572KB
@
@
@
@
@
我在这里看到三个问题:
- 您正在打印换行符 (
\n
) 而不是 spaces ( - 为什么打印单个 space 字符?
- 您在 space 之前(应该是什么)打印
"@"
。 - 在 space 和
@
后打印换行符。
另外...楼梯的宽度总是等于它的高度;只是您正在打印的行在前进...这有点令人困惑。
这个有效:
#include <stdio.h>
int main() {
// gets height input - replace with your get_int method
int height;
printf("Height: ");
scanf("%i",&height);
// loop over all the steps: 0 - height
for (int i = 0; i < height; i++) {
// add a space i number of times (where i is our current step number and so equal to width)
// notice that if we take top left as (0,0), we go 1 down and 1 right each time = current step
for (int j = 0; j < i; j++) {
printf(" ");
}
// finally, after the spaces add the character and newline
printf("@\n");
}
return 0;
}