while循环嵌套后无法进行循环里的输出,想知道犯了什么错误


#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<34){
        while(zhong<100){
            while(xiao<200){
                if ( xiao*0.5 + zhong*2 + da*3 == 100 ) {
                    printf("可以用%d个小马加%d个中马加%d个大马扛100担物品\n", xiao, zhong, da );
                    cnt++;
                    continue;
                }
            da++;
            }
        zhong++;
        }
    xiao+=2;
    } 
    end=clock();
    printf("程序运行时间为:%5.lf time\n",difftime(end,start));
    printf("当每一种马至少有一只,共:%d种方法",cnt);
    return 0;
}

还有一个编程用的for但是也不输出
家里电脑调试显示设置断点错误
不知道怎么做了

#include
int main()
{
    int n,i0,k;
    int i=1,i1=1,i2=1;
    double sum=1;
    printf("请输入正整数n\n");
    scanf("%d",&n);
    switch(n){
    case 1:sum=1;break;
    case 2:sum=sum+2;break;
    default:
    for(k=1;k<=n;k++){
        i0=i;
        i=i1+i2;
        i1=i2;
        i2=i;
        sum=sum+(1.0*i/i0);
    }
    } 
    printf("sum=%f",&sum);
    return 0;
 }

你++的位置写反了啊
xiao是最内层循环,所以xiao+=2要放到最内层,da++放到最外层
内层循环开始前,你需要将循环变量恢复为初始值才行

 
#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;
} 

第3个while循环的条件永远为真,因为再该循环中没有改变xiao的值

img


你应该将xiao++放入上面的while循环中