while循环嵌套语句

#include<stdio.h>
main(){
    int n,i=1,b=1,a=1;
    scanf("%d",&n);
    if(n==3){
        while(i<=3){
        while(b<=i)
        printf("%d",a);
        a=a+1;
        printf("\n");
        i++;}
    }
     }

请问这个程序有结束的语句,为什么一直是1的循环?不知道哪里出现了问题,麻烦高人指点,谢谢 !

img


因为b恒小于等于i,b的值在后续循环中并没有得到变化,因此一直循环如此,进入了死循环。

如有帮助,还请帮忙点下采纳!感谢!

while(b <= i)那里没大括号,所以一直执行下一句,跟
while(b <= i)

printf("%d",a);

是一个意思

while(b<=i) printf("%d",a); ,这里 b 没有变化,所以 b <= i 恒成立,死循环。

while(b<=i)这个循环里面没有能够让b和i值改变的语句,b和i一直不变所以就是死循环


可以看下cpp参考手册中的 c++-语句

原来是其中一个while语句没有大括号,所以只执行其后一条语句,一直输出1。



```c
#include<stdio.h>
main(){
    int n,i=1,b=1,a=1;
    scanf("%d",&n);
    if(n==3){
        while(i<=3){


        while(b<=i)
        printf("%d",a);


        a=a+1;
        printf("\n");
        i++;}
    }
     }

```

你把第二个while 循环前后多加几行空白行。。。应该就会发现问题的。。。。第二个while 在第一次执行到的时候条件就无限为true,所以,成功进入死循环。。。