请用C语言自定义函数的形式编程实现,求s=m!+n!+k!,m、n、k从键盘输入(值均小于7)。

请用C语言自定义函数的形式编程实现,求s=m!+n!+k!,m、n、k从键盘输入(值均小于7)。


#include <stdio.h>
int factorial(int x) 
{
    int result = 1;
    for (int i = 1;i <= x;i++) {
        result *= i;
    }
    return result;
}
int main() {
    int m, n, k, s;
    printf("请输入m、n、k的值(均小于7):\n");
    scanf("%d%d%d", &m, &n, &k);
    s = factorial(m) + factorial(n) + factorial(k);
    printf("结果为:%d\n", s);
    return 0;
}

img

以上代码用C语言无法运行,请帮忙用C语言编译正确的代码

编译器不支持 for (int i = 1; i <= x; i++) 定义循环自变量 i 的原因,把 i 定义在函数代码开始的地方即可,修改如下,供参考:

#include <stdio.h>
int factorial(int x)
{
    int result = 1, i;       // 将 i 的定义移动到代码开始的地方
    for (i = 1; i <= x; i++) { // for (int i = 1; i <= x; i++)
        result *= i;
    }
    return result;
}
int main() {
    int m, n, k, s;
    printf("请输入m、n、k的值(均小于7):\n");
    scanf("%d%d%d", &m, &n, &k);
    s = factorial(m) + factorial(n) + factorial(k);
    printf("结果为:%d\n", s);
    return 0;
}

程序本身应该没什么问题,可能是你的编译器有问题,稍微对立面的中文字符做了修改,代码如下:

#include <stdio.h>
int factorial(int x) 
{
    int result = 1;
    for (int i = 1;i <= x;i++) {
        result *= i;
    }
    return result;
}
int main() 
{
    int m, n, k, s;
    printf("请输入m、n、k的值(均小于7):\n");
    scanf("%d%d%d", &m, &n, &k);
    s = factorial(m) + factorial(n) + factorial(k);
    printf("结果为:%d\n", s);
    return 0;
}

你是来秀代码的吗?