C 返回一个值作为输出参数
我在C中有一个问题,我需要在函数中插入一个二次方程的系数,并返回解的数目和结果 编写一个程序,接受一系列3个实数,它们是 一个二次方程的系数,程序会打印出来 方程的一些解和解本身。 指南:C 返回一个值作为输出参数,c,parameters,output,C,Parameters,Output,我在C中有一个问题,我需要在函数中插入一个二次方程的系数,并返回解的数目和结果 编写一个程序,接受一系列3个实数,它们是 一个二次方程的系数,程序会打印出来 方程的一些解和解本身。 指南: 函数必须与以下函数之一一起使用: 将解决方案数作为返回值返回,并返回 通过输出参数解决方案本身 3个数字必须是 每次都收到。输入将来自文件(将以EOF结尾) 同时,我构建了一个函数,没有读取文件,只是为了看看它是否适合我。我构建了一个函数,返回解的数量,但是我陷入了如何将结果作为输出参数返回的困境 以下是
- 函数必须与以下函数之一一起使用: 将解决方案数作为返回值返回,并返回 通过输出参数解决方案本身
- 3个数字必须是 每次都收到。输入将来自文件(将以EOF结尾)
int main()
{
双a,b,c,root1,root2,rootnum;
printf(“输入系数a、b和c:”);
扫描(“%lf%lf%lf”、&a、&b和&c);
rootnum=(rootnumber(a,b,c);
printf(“此方程的根数为%d”,rootnum);
}
int rootnumber(双a、双b、双c)
{
公式=b*b-4*a*c;
如果(公式除了调用中的任意括号和一些其他语法错误外,您目前所拥有的看起来还不错。要打印出根数,您需要在printf
语句中添加一个和一个参数:
printf("the number of roots for this equation is %d\n", rootNum);
%d
是int的格式说明符。这是您的工作代码:
#include <stdio.h>
int rootnumber (double a,double b, double c)
{
double formula = (b*b) - (4*(a)*(c));
if (formula > 0) {
return 2;
}
else if (formula < 0) {
return 0;
}
else {
return 1;
}
}
int main (void)
{
double a, b, c;
printf("Enter coefficients a, b and c: ");
scanf("%lf %lf %lf",&a, &b, &c);
printf("The number of roots for this equation is %d ", rootnumber(a,b,c));
return 0;
}
#包括
int rootnumber(双a、双b、双c)
{
双公式=(b*b)-(4*(a)*(c));
如果(公式>0){
返回2;
}
else if(公式<0){
返回0;
}
否则{
返回1;
}
}
内部主(空)
{
双a、b、c;
printf(“输入系数a、b和c:”);
扫描(“%lf%lf%lf”、&a、&b和&c);
printf(“该方程的根数为%d”,根数(a,b,c));
返回0;
}
在C语言中,提供“输出参数”通常相当于提供一个作为指针的参数。函数将取消对该指针的引用并写入结果。例如
int some_func(double x, double *y)
{
*y = 2*x;
return 1;
}
int main()
{
double result;
if (some_func(2.0, &result) == 1)
printf("%lf\n", result);
else
printf("Uh oh!\n");
return 0;
}
调用方通常必须提供接收结果的地址(例如变量的地址)
int some_func(double x, double *y)
{
*y = 2*x;
return 1;
}
int main()
{
double result;
if (some_func(2.0, &result) == 1)
printf("%lf\n", result);
else
printf("Uh oh!\n");
return 0;
}
我特意提供了一个示例,说明了“输出参数”是什么,但与实际需要编写的代码没有关系。对于您的问题,您需要提供两个参数(即总共五个参数,您已经提供了三个参数,另外两个用于向调用方返回值的指针)
由于这是一个家庭作业练习,我不会解释您的函数需要通过输出参数返回哪些值。毕竟,这是练习的一部分,目的是让您通过计算来学习。它只需要一些健全性检查,现在可以工作了:
#include<stdio.h>
int rootnumber(double a, double b, double c);
int main ()
{
double a, b, c, root1,root2;
int rootnum;
printf("Enter coefficients a, b and c: ");
scanf("%lf %lf %lf",&a, &b, &c);
rootnum=rootnumber(a,b,c);
printf("the number of roots for this equation is %d", rootnum);
return 0;
}
int rootnumber(double a, double b, double c)
{
int formula= (b*b) - (4*a*c);
if (formula<0)
return 0;
if (formula==0)
return 1;
else
return 2;
}
#包括
int rootnumber(双a、双b、双c);
int main()
{
双a,b,c,根1,根2;
int rootnum;
printf(“输入系数a、b和c:”);
扫描(“%lf%lf%lf”、&a、&b和&c);
rootnum=rootnumber(a、b、c);
printf(“此方程的根数为%d”,rootnum);
返回0;
}
int rootnumber(双a、双b、双c)
{
int公式=(b*b)-(4*a*c);
if(formulaelse返回2
=>else返回2;
和printf(“此方程的根数”)
=>printf(“此方程的根数”);
也rootnum=(rootnum(a,b,c);
rootnum=rootnum(a,b,c);
谢谢,我修复了丢失的根数“;”但这不是我的问题