想知道怎么改才能出正确的结果

努力做while循环但是循环结果只输出了一种



```c
#include
#include
#include
#include
int main()
{
    clock_t start,end;
    int x=100;
    int da=1, zhong=1, xiao=2;
    int cnt=0; 
    while(da<=33){
        while(zhong<=99){
            while(xiao<=199){
                if ( xiao*0.5 + zhong*2 + da*3 == 100 ) {
                    printf("可以用%d个小马加%d个中马加%d个大马扛100担物品\n", xiao, zhong, da );
                    cnt++;
                }
            xiao+=2;
            }
        zhong++;
        }
    da++;
    } 
    end=clock();
    printf("程序运行时间为:%5.lf time\n",difftime(end,start));
    printf("当每一种马至少有一只,共:%d种方法",cnt);
    return 0;
} 

我用for做出了答案但是while做不出来


![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/735933143466132.png "#left")


![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/104543143466124.png "#left")

#include<stdio.h>
#include<time.h>
#include<dos.h>
#include<conio.h>
int main()
{
    clock_t start=clock(),end;
    int x=100;
    int da=1, zhong=1, xiao=2;
    int cnt=0; 
    while(da<=33){
        zhong = 1;
        while(zhong<=99){
            xiao = 2;
            while(xiao<=199){
                if ( xiao*0.5 + zhong*2 + da*3 == 100 ) {
                    printf("可以用%d个小马加%d个中马加%d个大马扛100担物品\n", xiao, zhong, da );
                    cnt++;
                }
            xiao+=2;
            }
        zhong++;
        }
    da++;
    } 
    end=clock();
    printf("程序运行时间为:%5.lf time\n",difftime(end,start));
    printf("当每一种马至少有一只,共:%d种方法",cnt);
    return 0;
}