避免最后一次循环迭代

时间:2016-12-27 07:51:10

标签: c loops while-loop

我构建了一个简单的函数,给定一个整数,返回每个较小的正方形。 ES:

input: 80
output:
1
4
9
:
64

所以我尝试使用whiledo..while循环:

int main(){
    int x;
    int y = 0;
    int z = 0;
    while(x < 1){
            printf("Insert an integer number greater than 0\n");
            scanf("%d", &x);
    }                                     #approach with do..while
    while(z <= x){                        #do{
            y += 1;                           
            z = y * y;
                printf("%d\n", z);
    }                                     #}while(z < x)
return 0;
}

我的输出达到:

    input: 80
    output:
    1
    4
    :
    81

如何使循环避免最后一次迭代,因为条件z <= x只有在那时才为真,实际上产生一个无效的输出?

1 个答案:

答案 0 :(得分:3)

只是说

int x = 0;
int z = 1;
int y = 1;

一开始,

printf("%d\n", z);
y += 1;                           
z = y * y;
循环中的

编辑:问题是你的陈述的顺序。先打印然后再检查。

完整答案如下:

int main(){
    int x = 0;
    int y = 1;
    int z = 1;

    while(x < 1){
            printf("Insert a positive integer number greater than 0\n");
            scanf("%d", &x);
    }                                     //approach with do..while
    while(z <= x){                        //do{
            printf("%d\n", z); 
            y += 1;                           
            z = y * y;
    }                                     //}while(z < x)
return 0;
}