求阶乘最后输出为几阶

有什么问题吗

#include <stdio.h>

int main(){int a,b=1,c=1;
scanf("%d",&a);
do {b++;
c=c*b;
}while (c!=25);
printf("%d",b);
return 0;
}

阶乘数值太大,超出int范围了,应该用double类型
你题目是什么,你a变量没有使用啊,应该while (c<=a);吧
是不是这样

#include <stdio.h>

int main()
{
    double a,c=1;
    int b=0;
    scanf("%lf",&a);
    do {
        b++;
        c=c*b;
    }while (c<=a);
    printf("超过%.0lf的是%d的阶乘:%.0lf",a,b,c);
    return 0;
}

img

如果要求a以内最大的阶乘数

#include <stdio.h>

int main()
{
    double a,c=1;
    int b=0;
    scanf("%lf",&a);
    do {
        b++;
        c=c*b;
    }while (c*(b+1)<=a);
    printf("%.0lf以内最大的阶乘数是%d的阶乘:%.0lf",a,b,c);
    return 0;
}

img

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

死循环

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632