有没有人能解释一下为什么这个不是输出10个ok

    int a,b;
    a=1;
    while (a<=10)
    {
        b=1;
        while (b<=a)
        {
            printf ("ok");
            b=b+1;
        }
        a=a+1;
    }

内外两层循环,修改下,供参考:

#include<stdio.h>

int main()
{
    int a,b,cnt=0;
    a=1;
    while (a<=10)
    {
        b=1; //每次外循环时,b都置1
        while (b<=a)
        {
            printf ("ok,a=%d,b=%d\n",a,b);
            cnt++;
            b=b+1;
        }
        a=a+1;
    }
    printf("%d\n",cnt);
    system("pause");
    return 0;
}
/*
ok,a=1,b=1
ok,a=2,b=1
ok,a=2,b=2
ok,a=3,b=1
ok,a=3,b=2
ok,a=3,b=3
ok,a=4,b=1
ok,a=4,b=2
ok,a=4,b=3
ok,a=4,b=4
ok,a=5,b=1
ok,a=5,b=2
ok,a=5,b=3
ok,a=5,b=4
ok,a=5,b=5
ok,a=6,b=1
ok,a=6,b=2
ok,a=6,b=3
ok,a=6,b=4
ok,a=6,b=5
ok,a=6,b=6
ok,a=7,b=1
ok,a=7,b=2
ok,a=7,b=3
ok,a=7,b=4
ok,a=7,b=5
ok,a=7,b=6
ok,a=7,b=7
ok,a=8,b=1
ok,a=8,b=2
ok,a=8,b=3
ok,a=8,b=4
ok,a=8,b=5
ok,a=8,b=6
ok,a=8,b=7
ok,a=8,b=8
ok,a=9,b=1
ok,a=9,b=2
ok,a=9,b=3
ok,a=9,b=4
ok,a=9,b=5
ok,a=9,b=6
ok,a=9,b=7
ok,a=9,b=8
ok,a=9,b=9
ok,a=10,b=1
ok,a=10,b=2
ok,a=10,b=3
ok,a=10,b=4
ok,a=10,b=5
ok,a=10,b=6
ok,a=10,b=7
ok,a=10,b=8
ok,a=10,b=9
ok,a=10,b=10
55
请按任意键继续. . .

*/

 

两层循环,这怕不是要无数个了

int main()
{
	 int a, b =1;
	 a = 1;
	 while (a <= 10)
	 {
		 while (b <= a)
		 {
			 printf("ok");
			 b = b + 1;
		 }
		 a = a + 1;
	 }
	 printf("\na: %d    b: %d",a,b);
	 getchar();
}