#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 + %.2fn", 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 值。如何获得方程的系数和我想计算值的点?
避免使用全局变量,因为这样做时,您的代码迟早会变得混乱。
只需将所有内容按正确的顺序排列并传递必要的内容:
#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 + %.2fn", q, w, e);
v1 = val(q, w, e, h);
v2 = val(q, w, e, j);
printf("values %f %fn", 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 %fn", 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 + %.2fn", *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 %fn", v1, v2);
}
}
return 0;
}