C 返回一个值作为输出参数

C 返回一个值作为输出参数,c,parameters,output,C,Parameters,Output,我在C中有一个问题,我需要在函数中插入一个二次方程的系数,并返回解的数目和结果 编写一个程序,接受一系列3个实数,它们是 一个二次方程的系数,程序会打印出来 方程的一些解和解本身。 指南: 函数必须与以下函数之一一起使用: 将解决方案数作为返回值返回,并返回 通过输出参数解决方案本身 3个数字必须是 每次都收到。输入将来自文件(将以EOF结尾) 同时,我构建了一个函数,没有读取文件,只是为了看看它是否适合我。我构建了一个函数,返回解的数量,但是我陷入了如何将结果作为输出参数返回的困境 以下是

我在C中有一个问题,我需要在函数中插入一个二次方程的系数,并返回解的数目和结果

编写一个程序,接受一系列3个实数,它们是 一个二次方程的系数,程序会打印出来 方程的一些解和解本身。 指南

  • 函数必须与以下函数之一一起使用: 将解决方案数作为返回值返回,并返回 通过输出参数解决方案本身
  • 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(formula
else返回2
=>
else返回2;
printf(“此方程的根数”)
=>
printf(“此方程的根数”);
rootnum=(rootnum(a,b,c);
rootnum=rootnum(a,b,c);
谢谢,我修复了丢失的根数“;”但这不是我的问题