计算机二级C语言当中的程序设计题

img

img


上面是题目,下面蓝色圈圈是我写的答案,但是不知道为什么他不对,运行的结果和要求的结果不一样,哪里出错了呀?

p=m0/(n0*p0);
加上括号

【相关推荐】




如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

楼上说得加上括号,或改成下面这样也可以,化简少了一个循环。
仅供参考。

img

img

#include <stdio.h>

double fun(int m, int n) {
    if (m < 0 || n < 0 || m < n)
    return -1.0;
    unsigned long m0 = 1UL,
    n0 = 1UL;
    for(int i = n+1; i <= m; i++)
    m0 *= i;

    for(int i = 1; i <= m-n; i++)
    n0 *= i;
    return 1.0*m0/n0;
}
int main(void) {
    printf("%lf\n", fun(12, 8));
    getchar();
    return 0;
}