运行结果怎么都是0 求解答

编写一个函数,输入 n 为偶数时,调用函数求 1/2+1/4+到+1/n, 当输入 n 为奇数时,调 用函数 1/1+1/3+……1/n


#include<stdio.h>
float sum(int n){
    float a=0,b=0;
    int i;
    int t,p;
    if(n%2==0){
        for(i=2;i<=n;i+=2){
            t=i;
            a=a+1/t*1.0;
        }
        return a;
    }
    else{
    for(i=1;i<=n;i+=2){
        p=i;
        b=b+1/p*1.0;
    }
    return b;
}
}
int main(){
    int n; 
    printf("请输入n的值");
    scanf("%d",&n);
    printf("该数列的和为%f",sum(n));
    return 0;
     
}


#include <stdio.h>
float sum(int n)
{
    float a = 0, b = 0;
    int i;
    int t, p;
    if (n % 2 == 0)
    {
        for (i = 2; i <= n; i += 2)
        {
            t = i;
            a = a + 1.0 / t;
        }
        return a;
    }
    else
    {
        for (i = 1; i <= n; i += 2)
        {
            p = i;
            b = b + 1.0 / p;
        }
        return b;
    }
}
int main()
{
    int n;
    printf("请输入n的值");
    scanf("%d", &n);
    printf("该数列的和为%f", sum(n));
    return 0;
}


#include<stdio.h>
float sum(int n) {
    float a = 0, b = 0;
    int i;
    int t, p;
    if (n % 2 == 0) {
        for (i = 2; i <= n; i += 2) {
            t = i;
            a = a + 1.0 / (float)t * 1.0; //改动点1
        }
        return a;
    }
    else {
        for (i = 1; i <= n; i += 2) {
            p = i;
            b = b + 1.0 / (float)p * 1.0; //改动点1
        }
        return b;
    }
}
int main() {
    int n;
    printf("请输入n的值");
    scanf("%d", &n);
    printf("该数列的和为%f", sum(n));
    return 0;
}