为什么我编写的简易计算器结果一直为0?

代码如下

#include <bits/stdc++.h>
using namespace std;
int chengfang(int a,int b)
{
    int i,sum=1;
    if(a==0&&b!=0) return 0;
    if(b>0)
    {
        for(i=1;i<=b;i++)
        sum*=a;
    }
    else{
        if(b==0) return 1;
        else{
            for(i=1;i<=0-b;i++)
                sum*=a;
            sum=1/sum;    
        }
    }
    return sum;
}
int jiecheng(int a)
{
    int i,sum=1;
    for(i=1;i<=a;i++)
    {
        sum*=i;
    }
    return sum;
}
int main()
{
    printf("该计算器使用指南:\n");
    printf("1.阶乘输入格式:你要运算的数字 6 0\n");
    printf("2.其余输入格式:数字 符号 数字\n");
    printf("3.计算完一个式子后,默认计算下一个式子\n");
    printf("4.加号:1   减号:2    乘号:3   除号:4    乘方:5   阶乘:6\n");
    printf("5.不支持无理数运算,乘方的指数需为整数\n");
    printf("6.结果不大于2^32-1且不小于-(2^32)-1\n"); 
    printf("7.结果精确到第6位\n");
    printf("8.计算器使用例子:计算1+1 式子:1 1 1。计算2^3 式子:2 5 3\n");
    printf("________________________________________________________________________________________________________________________");
    while(true)
    {
        float x,y,ans;
        char a;
        scanf("%f",&x);a=getchar();scanf("%f",&y);
        if(x==0&&y==0&&a=='^'||y==0&&a=='/')
        printf("False\n");
        else
        {
            if(a=='+') ans=x+y;
            if(a=='-') ans=x-y;
            if(a=='*') ans=x*y;
            if(a=='/') ans=x/y;
            if(a=='^') ans=chengfang(x,y);
            if(a=='!') ans=jiecheng(x);
            printf("%f",ans);
        }
    }
}

学会调试