在C语言环境下的算12问题

给定三个数,问你使用加减乘除能否得到12,要求三个数的顺序可以改变,计算的中间结果必须为整数。
输入:输入三个整数,均大于0,小于1000。
输出:输出为一个整数,当可以得到12时输出1,否则输出0。
输入样例:
2 2 3
输出样例:
1
提示:输出格式:printf("%d\n",1);
主要功能:
(1)从文件中读出题目的输入;
(2)向屏幕上打印出题目的计算结果。

PS:最好能有多文件结构多函数结构,能有界面处理
(这些我还不太会,所以只能附上一小部分代码,望能得到完善)
#include
#include
bool canBe12(float m, float n, float h)
{
int i, j, k;
float arr[3] = {m, n, h};

for(i = 0; i < 3; i++)
{
    for(j = (i + 1) % 3; j < 3; j++)
    {
        k = (j + 1) % 3;
        if(arr[i] + arr[j] + arr[k] == 12 ||
                arr[i] + arr[j] - arr[k] == 12 ||
                arr[i] - arr[j] + arr[k] == 12 ||
                arr[i] - arr[j] - arr[k] == 12 ||
                arr[i] * arr[j] + arr[k] == 12 ||
                arr[i] + arr[j] * arr[k] == 12 ||
                arr[i] / arr[j] + arr[k] == 12 ||
                arr[i] + arr[j] / arr[k] == 12 ||
                arr[i] * arr[j] - arr[k] == 12 ||
                arr[i] - arr[j] * arr[k] == 12 ||
                arr[i] * arr[j] * arr[k] == 12 ||
                arr[i] * arr[j] / arr[k] == 12 ||
                arr[i] / arr[j] * arr[k] == 12 ||
                arr[i] / arr[j] / arr[k] == 12 ||
                arr[i] / arr[j] - arr[k] == 12 ||
                arr[i] - arr[j] / arr[k] == 12
          )
        {
            return 1;
        }
    }
}

return 0;

}
int main()
{
FILE *fp;
float m, n, k;
int i;
if((fp=fopen("input.txt","r"))==NULL)
printf("ERROR");
while(fscanf(fp,"%f%f%f",&m,&n,&k)==3)
if((int)m==m&&(int)n==n&&(int)k==k)
{
printf("%f %f %f result is:\n",m,n,k);
if(canBe12(m,n,k))
printf("1\n");
else
printf("0\n");
}
return 0;
}