在 C 中用函数调用计算多项式

标签 c

我正在尝试编写一个依赖于函数调用来计算 3x^5+2x^4-5x^3-x^2+7x-6 的程序。但是,它一直为我的函数返回值 0。

#include <stdio.h>

int function(int x, int polynomial)
{
polynomial = (3 * x * x * x * x * x) + (2 * x * x * x * x) - (5 * x * x * x) - (2 * x * x) + (7 * x) - 6;
return polynomial; 
}

int main(void)
{
int x, polynomial;

printf("The program will compute the following polynomial: \n");
printf("3x^5 + 2x^4 - 5x^3 - x^2 + 7x - 6 \n");
printf("Please enter a value for x: ");
scanf("%d", &x);

function(x, polynomial);

return 0;

为什么要这样做?如何将函数的值返回到主函数中?

最佳答案

将变量的值赋给调用function 的函数返回的值:

#include <stdio.h>

int function(int x)
{
    polynomial = (3 * x * x * x * x * x) + (2 * x * x * x * x) - (5 * x * x * x) - (2 * x * x) + (7 * x) - 6;
    return polynomial; 
}

int main(void)
{
    int x, result;

    printf("The program will compute the following polynomial: \n");
    printf("3x^5 + 2x^4 - 5x^3 - x^2 + 7x - 6 \n");
    printf("Please enter a value for x: ");
    scanf("%d", &x);

    result = function(x);

    /* do something with result, like print it */

    return 0;
}

(理想情况下,您不会调用函数 function,而是调用其他东西。)

如果你真的想修改一个取消引用的指针,那么你需要做一些改变:

#include <stdio.h>

void function(int x, int* polynomial)
{
    *polynomial = (3 * x * x * x * x * x) + (2 * x * x * x * x) - (5 * x * x * x) - (2 * x * x) + (7 * x) - 6;
}

int main(void)
{
    int x, result;

    printf("The program will compute the following polynomial: \n");
    printf("3x^5 + 2x^4 - 5x^3 - x^2 + 7x - 6 \n");
    printf("Please enter a value for x: ");
    scanf("%d", &x);

    function(x, &result);

    /* do something with result, like print it */

    return 0;
}

在这种情况下,function 是一个 void,因此不会返回任何内容。您将值 xresult 的内存地址传递给它。该内存地址在 function 中被解除引用,然后解除引用的地址可以将其值设置为任何 多项式 最终成为的值。

离开 function 并返回 main 后,result 的值包含在 function 中执行的计算.

关于在 C 中用函数调用计算多项式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33426560/

相关文章:

python - Ctypes:解析参数并返回结果

c - 从不兼容指针类型/解引用指针到不完整类型的赋值

c - 来自命令行参数的段错误(核心转储)

c - 指向结构指针内字符串中的字符

c++ - 平面方程的多面体

c - 删除字符串中的所有重复字符 - c

c - 二叉树插入动画GIF

将宽字符的字符字符串转换为 ASCII

c - linux和windows关于颜色的问题

c++ - C 或 C++ 更适合制作可移植代码吗?