请问一下我为什么不能正确算出sinx的值

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图

#i

```c

#include<stdio.h>
#include<math.h>
float sinx(int x, int n);
float sn(int x, int m);
float power(float b, int m);
int fac(int f);
int main() {
int x, n;
printf("x=");
scanf_s("%d",&x);
printf("n=");
scanf_s("%d",&n);
float sum;
sum = sinx(x, n);
printf("sum=%f", sum);
}
float sinx(int x,int n) {
int m = 1;
int i;
for (i = 1; i <= n; i++)
m +=2;
float s;
s = sn(x, m);
return s;
}
float sn(int x,int m) {
float z;
z=power(x, m) / fac(m);
return z;
}
float power(float b,int m) {
float c;
c = pow(b, m);
return c;
}
int fac(int f) {
int s=0;
int k=1;
int i;
for (i = 1; i <= f; i++)
k *= i;
s += k;
return s;
}

```c

运行结果及报错内容

不能正确算出sinx的值比如sin1算出来是0.00833

我的解答思路和尝试过的方法
我想要达到的结果

正确算出sinx的值

#include<stdio.h>
#include<math.h>
float sinx(float x, int n);
float sn(float x, int m);
float power(float b, int m);
int fac(int f);
int main() {
    float x;
    int n;
    printf("x=");
    scanf("%f", &x);
    printf("n=");
    scanf("%d", &n);
    float sum = sinx(x, n);
    printf("sum=%f", sum);
}
float sinx(float x, int n) {
    int m = 1;
    int i;
    float s = 0;
    for (i = 1; i <= n; i++){
        s+=pow(-1,i+1)*sn(x, m);
        m += 2;
    }
    return s;
}
float sn(float x, int m) {
    float z;
    z = pow(x, m) / fac(m);
    return z;
}
int fac(int f) {
    int k = 1,i;
    for (i = 1; i <= f; i++)
        k *= i;
    return k;
}