C语言多层循环问题如何解决

请问以下语句,为什么只运行了z那一层,结果只打印出了以下:
“x=1,y=1,z=92,price=100”

#include
int main()
{ int x,y,z,price;
  price=0;
  for(x=1;x<100;x++)
  { for (y=1;y<100;y++)
    {  for(z=1;price<100;z++)
         {price=5*x+3*y+z*1;
         if(price==100)printf("x=%d,y=%d,z=%d,price=%d\n",x,y,z,price);
         }      
    }     
  }

}

for (z = 1; price < 100; z++) 这里不对啊,你的price如果满足 if(price == 100)这个条件,price就是100了,for循环的条件price < 100就不成立了啊,printf 肯定只执行一次啊。
把 for (z = 1; price < 100; z++) 改成 for (z = 1; z < 100; z++)

修改后的运行结果(部分截图):

img

for(z=1;price<100;z++)之前要加上price = 0;才行,否则当满足一次price=100后,for(z=1;price<100;z++)就再也满足不了了,导致只执行了一次
根据你当前代码,修改为:

#include<stdio.h>
int main()
{ 
    int x,y,z,price;
    price=0;
    for(x=1;x<100;x++)
    { 
        for (y=1;y<100;y++)
        {  
            price = 0;
            for(z=1;price<100;z++)
            {
                price=5*x+3*y+z*1;
                if(price==100)printf("x=%d,y=%d,z=%d,price=%d\n",x,y,z,price);
            }      
        }     
    }
    return 0;
}


您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632