C语言 如何在另一个函数中使用 scanf 获得的参数


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

相关内容

  • 没有找到相关文章

最新更新