我正在尝试编写一个依赖于函数调用来计算 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
,因此不会返回任何内容。您将值 x
和 result
的内存地址传递给它。该内存地址在 function
中被解除引用,然后解除引用的地址可以将其值设置为任何 多项式
最终成为的值。
离开 function
并返回 main
后,result
的值包含在 function
中执行的计算.
关于在 C 中用函数调用计算多项式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33426560/