2017-04-01 18 views
-1
#include <-stdio.h> 
float q, w, e, v1, v2; 
int h, j; 

int eqn(float q, float w, float e); 
float val(int x); 

int main(){ 

    eqn(q,w,e); 
    scanf("%d%d",&h,&j); 

return 0; 
} 

int eqn(float q, float w, float e) { 
    scanf("%f %f %f", &q, &w, &e); 
    printf("Entered equation: %.2fx^2 + %.2fx + %.2f\n", q, w, e); 
    v1=val(h); 
    v2=val(j); 
    printf("values %f %f", value1, value2); 
} 

float val(int x){ 
    float value = q*x*x+w*x+e; 
    return value; 
} 

因此,我想从用户获得h和j值,并在eqn函数中使用它们以获取值。我也在向用户请求q,w,e值。 如何获得方程的系数和我想要计算的值?如何在另一个函数中使用scanf获取的参数?

+2

'eqn'在'scanf'-ed之前使用'h'和'j',所以它们仍然具有值'0'。 – aschepler

+0

正如注意:eqn()的参数'q','w','e'将全局定义的变量'q','w'和'e'映射出去。 – alk

+0

是的,但有没有办法使变量全局,所以他们的价值是有效的所有其他功能? – Rossie

回答

0

避免使用全局变量,因为迟早你的代码会变得很混乱。

只要把所有以正确的顺序,并通过什么必要:

#include <stdio.h> 

int eqn(int h, int j); 
float val(float q, float w, float e, int x); 

int main(void) 
{ 
    int h, j; 

    scanf("%d%d", &h, &j); 
    eqn(h, j); 

    return 0; 
} 

int eqn(int h, int j) 
{ 
    float v1, v2; 
    float q, w, e; 

    scanf("%f %f %f", &q, &w, &e); 

    printf("Entered equation: %.2fx^2 + %.2fx + %.2f\n", q, w, e); 

    v1 = val(q, w, e, h); 
    v2 = val(q, w, e, j); 

    printf("values %f %f\n", v1, v2); 
} 

float val(float q, float w, float e, int x) 
{ 
    float value = q*x*x + w*x + e; 
    return value; 
} 

如果你想打电话val()从主,将之传给地址,以允许呼叫者看到分配一下被叫:

#include <stdio.h> 

int eqn(float * pq, float * pw, float * pe); 
float val(float q, float w, float e, int x); 

int main(void) 
{ 
    float q, w, e; 
    int h, j; 
    float v1, v2; 

    eqn(&q, &w, &e); 

    scanf("%d%d", &h, &j); 

    v1 = val(q, w, e, h); 
    v2 = val(q, w, e, j); 

    printf("values %f %f\n", v1, v2); 

    return 0; 
} 

int eqn(float * pq, float * pw, float * pe) 
{ 
    scanf("%f %f %f", pq, pw, pe); 

    printf("Entered equation: %.2fx^2 + %.2fx + %.2f\n", *pq, *pw, *pe); 
} 

float val(float q, float w, float e, int x) 
{ 
    float value = q*x*x + w*x + e; 
    return value; 
} 

要定义变量的作用域得更紧变化main()看起来像这样:

int main(void) 
{ 
    float q, w, e; 
    eqn(&q, &w, &e); 

    { 
    int h, j; 
    scanf("%d%d", &h, &j); 

    { 
     float v1 = val(q, w, e, h); 
     float v2 = val(q, w, e, j); 

     printf("values %f %f\n", v1, v2); 
    } 
    } 

    return 0; 
} 
相关问题