#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值。 如何得到方程的系数和我想要计算的值?
答案 0 :(得分: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;
}
如果要从main呼叫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;
}