我的c代码有什么问题(C初学者)

时间:2013-05-15 14:23:04

标签: c

int main(int argc, char *argv[]) {
    int x,i,j;
    printf("Enter X");
    scanf("%d",&x);

    for(i=0;i<x;i++){
        for (j=0;j<x;j++) {
            printf("*");
        }
        printf("\n");
        x=x-1;
    }
}

我的想法是以

的形式打印星号(*)
*****
****
***
**
*

但是如果我的(x = 5)为什么

,我的输出只停止打印前三行
*****
****
***

5 个答案:

答案 0 :(得分:3)

因为你正在递增i并递减x。因此,循环在三次迭代时终止。你可能想要一个“while(x&gt; 0)”,而不是一个单独的计数器。

while(x > 0){
    for (j=0;j<x;j++) {
        printf("*");
    }
  printf("\n");   
  x--;
}

答案 1 :(得分:1)

学习我认为为变量使用更具描述性的名称很有用,直到你真正学会了如何read C ...

//not ideal but better to get a correct version fist then optimise if needed
    int numberOfStars = 4;
    for(int counter = numberOfStars ; counter > 0 ; counter--){
        int numberOfStarsThisLine = counter;
        while (numberOfStarsThisLine)
        {
            printf("*");
            numberOfStarsThisLine--;
        }
        puts("");
    }
}

答案 2 :(得分:0)

您正在减小x的大小,这意味着外部循环:

for(i=0;i<x;i++){

终止于x / 2项......(因为您也在递增i

答案 3 :(得分:0)

for(i=0;x>0;i++,x--){
    for (j=0;j<x;j++){
        printf("*");
    }
    printf("\n");
}

答案 4 :(得分:0)

for(i=0;i<x;i++){
    for (j=i;j<x;j++) {
        printf("*");
    }
    printf("\n");
}