一道硬币面值组合问题。

假设一堆由1元、5角、1角组成的硬币总面值为0.5元~3元中任意钱数(钱数为带有1位小数的浮点数,如:2.5),输出所有的硬币组合(组合中的硬币数量可以为0),组合的输出格式:(2, 1, 1) 表示2枚1元,1枚5角,1枚1角的硬币组合,(1,0,1) 表示1枚1元,0枚5角,1枚1角的硬币组合。 输出格式:"(%d,%d,%d)\n"
为什么有些数据输不出来?

#include<stdio.h>
#include<stdlib.h>
int main()
{ float k;
scanf("%f",&k);
int x,y,z;
for(z=0;z<=30;z++)
for(y=0;y<=6;y++)
for(x=0;x<=3;x++)
if(k>=0.5&&k<=3)
if((1x+0.5y+0.1*z)==k)
printf("(%d,%d,%d)\n",x,y,z);

    return 0;

}


#include <stdio.h>
int main()
{    
    float k,x,y,z,t; 
    scanf("%f",&k);

    for(z=0;z<=30;z++){
        for(y=0;y<=6;y++)
            for(x=0;x<=3;x++)
                if(k>=0.5&&k<=3){
                    //printf("(%f)\n",k);
                    t = 1*x+0.5*y+0.1*z;
                    if(t==k){
                        printf("(%f,%f,%f)\n",x,y,z);
                        
                    }
                }
                    
        }

    return 0;
}

不过1x+0.5y+0.1*z==k这种我在在线编译器上运行0.6,1.6之类的不行,不知道visualstudio上能不能行,你可以是试试,按理说没啥区别

第二行if語句, 你是不是落下了乘號*,
if ((1 * x + 0.5 * y + 0.1 * z) == k)