使用C中的循环制作x的阶梯,但我继续得到正方形

时间:2015-09-18 20:16:16

标签: c loops for-loop nested

所以我需要做一个楼梯,但我的逻辑显然有问题。关于如何处理这个问题的任何建议?我最终只得到了正方形。

#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");
    }
}

1 个答案:

答案 0 :(得分:0)

您的代码存在许多缺陷,缺乏明确性就是其中之一。然而,你有一个正方形的原因是因为p=z始终为真(将p的值设置为z会返回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))