在 C 中使用循环制作 x 的阶梯,但我不断得到正方形
making a staircase of x's using loops in C, but I keep getting squares
所以我需要做一个楼梯,但我的逻辑显然有问题。关于如何处理这个问题的任何建议?我最终只会得到正方形。
#include <stdio.h>
int main()
{
int a,b,z,y,p;
char x;
scanf("%i ", &a);
printf("Number of stairs is: %i\n", a);
printf("up: \n");
for(b=0; b<a; b++) {
for(z=1; a>=z; z++) {
x='x';
p=1;
if ((p=z)) {
printf("%c", x);
}
else {
printf(" ");
}
p++;
}
printf("\n");
}
}
您的代码有很多缺陷,不够清晰就是其中之一。然而,你有一个正方形的原因是因为 p=z
总是正确的(将 p
的值设置为 z
returns z
的值和这个,在您的代码中始终为 1 或更高 - C 标准的真实值)。
这是一个有效的代码,大致基于您的示例:
#include <stdio.h>
int main() {
int numberSteps,currentStep,currentColumn;
scanf("%i", &numberSteps);
printf("Number of stairs is: %i\n", numberSteps);
printf("up: \n");
for(currentStep=0; currentStep<numberSteps; currentStep++) {
for(currentColumn=0; currentStep>=currentColumn; currentColumn++) {
printf("x");
}
printf("\n");
}
}
请注意,我更改了变量名称,使它们变得有意义,并且还删除了不必要的变量和不必要的测试 if ((p=z))
,它们使您的代码变得混乱。
所以我需要做一个楼梯,但我的逻辑显然有问题。关于如何处理这个问题的任何建议?我最终只会得到正方形。
#include <stdio.h>
int main()
{
int a,b,z,y,p;
char x;
scanf("%i ", &a);
printf("Number of stairs is: %i\n", a);
printf("up: \n");
for(b=0; b<a; b++) {
for(z=1; a>=z; z++) {
x='x';
p=1;
if ((p=z)) {
printf("%c", x);
}
else {
printf(" ");
}
p++;
}
printf("\n");
}
}
您的代码有很多缺陷,不够清晰就是其中之一。然而,你有一个正方形的原因是因为 p=z
总是正确的(将 p
的值设置为 z
returns z
的值和这个,在您的代码中始终为 1 或更高 - C 标准的真实值)。
这是一个有效的代码,大致基于您的示例:
#include <stdio.h>
int main() {
int numberSteps,currentStep,currentColumn;
scanf("%i", &numberSteps);
printf("Number of stairs is: %i\n", numberSteps);
printf("up: \n");
for(currentStep=0; currentStep<numberSteps; currentStep++) {
for(currentColumn=0; currentStep>=currentColumn; currentColumn++) {
printf("x");
}
printf("\n");
}
}
请注意,我更改了变量名称,使它们变得有意义,并且还删除了不必要的变量和不必要的测试 if ((p=z))
,它们使您的代码变得混乱。