gpt4 book ai didi

c - #在C中定义一个输入数字

转载 作者:行者123 更新时间:2023-11-30 18:41:13 25 4
gpt4 key购买 nike

我需要让用户在程序中输入一个数字,然后需要能够在程序中的许多其他部分功能中使用该数字。有办法做到吗?

这是代码:

#include <stdio.h>
#include <math.h>
#define W 8.
#define H 4.

double ellipse(double);

typedef double (*DfD) (double);

double simpsons_int (DfD, double, double, int);

int main()
{
double len, w, h, volume;
printf("Please enter a length, width and height (in meters) of the an elliptical storage tank \n");
scanf("%lf %lf %lf", &len, &w, &h);

double a = h/2.*-1., r;
for (double depth=10; depth<=400; depth=depth+10)
{
r=a+(depth/100);
volume = len*simpsons_int(ellipse, a, r, 10000);
printf("depth is %.1f, volume is %f\n", depth, volume);
}
}

double ellipse(double y)
{
double x;
double A=W/2.;
double B=H/2.;
x=2*sqrt((1-(y*y)/(B*B))*(A*A));

return x;
}

double simpsons_int(DfD f, double y0, double y1, int n)
{
double y, sum, dy = (y1 - y0)/n;
sum = f(y1) + f(y0);
for(y = y0; y <= y1-dy; y += dy)
sum += 2.0 * f(y+dy) + 4.0 * f(y + dy/2);
return sum * dy / 6.0;
}

但我需要 H 和 W 是用户输入的数字,而不是 8 和 4。

最佳答案

您可以将其作为函数的参数传递,也可以将其声明为全局变量。我宁愿使用第一个,具体取决于应用程序。

1) 作为参数传递。你的函数应该是:

double ellipse(double y, double W, double H )
{
double x;
double A=W/2.;
double B=H/2.;
x=2*sqrt((1-(y*y)/(B*B))*(A*A));

return x;
}

然后在 main() 中声明并扫描 W 和 H

2) 只需在 main() 之前声明 W 和 H;

double W,H;
int main()
{
double len, w, h, volume;
printf("Please enter a length, width and height (in meters) of the an elliptical storage tank \n");
scanf("%lf %lf %lf", &len, &w, &h);
scanf("%lf %lf",&W,&H);

double a = h/2.*-1., r;
for (double depth=10; depth<=400; depth=depth+10)
{
r=a+(depth/100);
volume = len*simpsons_int(ellipse, a, r, 10000);
printf("depth is %.1f, volume is %f\n", depth, volume);
}

}

关于c - #在C中定义一个输入数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22748115/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com