c - 如何在另一个函数中使用通过 scanf 获得的参数?

标签 c function user-defined-functions

#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 值。 如何获得方程的系数和我想要计算值的点?

最佳答案

不要使用全局变量,因为这样做迟早会让你的代码变得困惑。

只需将所有内容按正确顺序排列并传递必要的内容即可:

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

关于c - 如何在另一个函数中使用通过 scanf 获得的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43157855/

相关文章:

mysql - 为什么我不能在存储过程中使用 mysqldump 命令?

c - 在 do..while 循环中递增 sscanf() 并将行存储到结构中

C 指针 : char to binary value

javascript - 再次运行函数时,它不会读取全局数组

python - 需要帮助返回在函数外部使用的变量 (Python)

javascript - 在react-native功能组件中哪里实现初始化代码

scala - 创建 Spark 存在用户定义的函数,其工作方式类似于 Scala Array#exists 函数

sql-server - SQL Server 用户定义的函数返回表——无法从选择查询中调用它

C、如何从另一个结构访问一个结构?

c - 不可读的输出