C运算结果出现很大的负数

有人能告知一下,为什么我输入很小的数字 结果还是得很大的负数吗,int应该也没有超范围吧,输入0.1.2也一样 ,结果都是很大的负数。

img

你是想求阶乘吧:这么写就行了,哪里不明白可以再问我

#include<stdio.h>
int jc(int n){
    int y;
    if(n==1){
        return 1;
    }
    else
        y=jc(n-1)*n;
    return y;
}
int main()
{
    int i,x,n;
    scanf("%d",&n);
    x=jc(n);
    printf("%d!=%d",n,x);

    return 0;
}

img

x改成x(n)

你没对x赋值啊

x是函数,需要用()调用

printf("%d!=%d",n,x);

改成

printf("%d!=%d",n,x(n));

你题目的解答代码如下:(如有帮助,望采纳!谢谢! 点击我这个回答右上方的【采纳】按钮)

#include<stdio.h>
int main()
{
    int x(int n);
    int n;
    printf("请输入一个整数:");
    scanf("%d",&n);
    printf("%d!=%d",n,x(n));
    return 0;
}
int x(int n){
    int y;
    if(n<0)
        printf("不能是负数");
    else if(n==0 || n==1)
        y = 1;
    else
        y=x(n-1)*n;
    return y;
}

img