请教:C输出问题 谢谢

来源:百度知道 编辑:UC知道 时间:2024/09/21 22:05:03
题目:将10元换成5角,2角,1角的零钱(至少各一枚),列出所有可能方案。
#include<stdio.h>
void main()
{
int x,y,z;
for(x=1;x<20;x++)
{
for(y=1;;y++)
{
z=100-5*x-2*y;
if(z<1) break;
else printf("%d %d %d\n",x,y,z);
}

}
}
可是显示的输出是从 x=4,y=30 开始
DUG很正常,从x=1,y=1输出
怪!
如果需要输出多余300行 有办法么?

应该太多了,前面的值被覆盖了
VC大概能显示300行信息

void main()
{
int x,y,z;
for(x=0;x<=20;x++)
{
for(y=0;y<=50;y++)
{
z=100-5*x-2*y;
if(z>=0) printf("%d %d %d\n",x,y,z);
}
puts("按任意键继续...");
getchar();
}
}

楼上的循环体内多运行99条语句
当然不省事

if(z<1) break; 判断的位置错了 这样的话Z一等于1就等于整个函数结束

#include<stdio.h>
void main()
{ int x,y,z;
for(x=1;x<20;x++)
for(y=1;y<50;y++)
for(z=1;z<100;z++)
if((x*20+y*50+z)==100) printf("%d %d %d\n",x,y,z);
}
这样多省事啊??

同意2楼的,但要注意他的问题
5角,2角,1角的零钱(至少各一枚),嘿嘿!
void main()
{
int x,y,z;
for(x=1;x<20;x++)
{
for(y=1;y<50;y++)
{
z=100-5*x-2*y;
if(z>0) printf("%d %d %d\n",x,y,z);
}
puts("按任意键继续...");
getchar();
}
}