问答详情
源自:4-12 循环结构之多重循环

请问有什么错误,为什么是无限循环

#include <stdio.h>
int main()
{
    int i, j, k;
    for(i=1; i<5; i++)
    {
        /* 观察每行的空格数量,补全循环条件 */
        for(   j=5  ; j>i   ;j--    ) 
        {
            printf(" ");    //输出空格
        }
        /* 观察每行*号的数量,补全循环条件 */
        for( k=0.5  ; k<i   ;k+=0.5     )
        {
            printf("*");   //每行输出的*号
        }
        printf("\n");     //每次循环换行
    }
    return 0;
}

提问者:慕UI30236 2018-10-10 20:44

个回答

  • FNH
    2018-10-11 01:11:38

    因为一开始申明k是int,所以在for(k=0.5;k<1;k+=0.5)时,开始k被赋的值不是0.5,而是0,你可以在循环中加一个printf("%f",k);来观察k值的变化,你这时就会发现在你这个语句里k一直等于0,所以k<i恒成立,也就成了死循环,

    你可以把k变成浮点数再运行这个程序,这时应该就是对的