2017-06-01 59 views
2

我在C中有一個問題,我需要在一個函數中插入二次方程的係數並返回解和結果的數目。返回一個值作爲輸出參數

編寫接受一系列3支的實數,這是一元二次方程的 係數的程序,該程序將打印出 方程的一些解決方案和解決方案本身。 準則

  • 功能必須與該 返回解決方案作爲返回值的數量的功能之一進行加工,並通過輸出參數返回 解決方案本身。
  • 每次收到3個號碼必須是 。輸入將是從一個文件(將在EOF結束)

在我建的功能,而不從文件中讀取其間只看到我的作品,我建立了一個返回號碼的功能解決辦法但還是糾結於如何返回結果作爲輸出參數 這裏是我的代碼現在:


int main() 
{ 

    double a, b, c, root1,root2,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); 
} 


int rootnumber (double a,double b, double c) 
{ 

    formula=b*b - 4*a*c; 

    if (formula<0) 

     return 0; 

    if (formula==0) 

     return 1; 
    else 
     return 2; 
} 
+0

'否則返回2' =>'否則返回2;'和'的printf( 「根數爲這個equationis」)'= >''printf(「這個方程式的根數是」);'也''rootnum =(rootnumber(a,b,c);'=>'rootnum = rootnumber(a,b,c);' – Badda

回答

0
從調用一個任性的括號和其他一些語法錯誤

除此之外,你有什麼迄今看起來很好。要打印出根數,你需要把format specifier和一個參數在printf聲明:

printf("the number of roots for this equation is %d\n", rootNum); 

%d是一個int格式說明。

0

這裏是您的工作代碼:

#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; 
} 
1

在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; 
} 

我故意提供了一個例子來說明「輸出參數」是什麼,但與您實際需要編寫的代碼沒有關係。對於您的問題,您需要提供兩個參數(即總共五個參數,三個您已經提供,另外兩個指針用於將值返回給調用者)。由於這是一項家庭作業練習,因此我不會解釋函數需要通過輸出參數返回的WHAT值。畢竟,這是練習的一部分,目的是通過解決這個問題來學習。

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; 
} 
+0

thanks,i修復了失蹤的「;」但這不是我的問題 –