C程序,通过键盘输入多个数值,用于程序方程
这可能是一个简单的解决办法,但我只是在为这件事发愁 我需要我的输出像这样,但我不知道如何在键盘上输入一个值,用于计算冻伤时间和风寒。请帮助我,我是编程新手C程序,通过键盘输入多个数值,用于程序方程,c,C,这可能是一个简单的解决办法,但我只是在为这件事发愁 我需要我的输出像这样,但我不知道如何在键盘上输入一个值,用于计算冻伤时间和风寒。请帮助我,我是编程新手 /*预处理器指令*/ #包括 #包括 /*主要功能*/ 内部主(空) { /*声明和初始化标识符*/ 双风寒、霜冻时间、气温、风速; /*声明和初始化标识符*/ /*计算风寒*/ 风寒=35.74+(.6215*空气温度)-(35.75*(功率(风速,0.16)))+ (0.4275*空气温度*(功率(风速,0.16)); /*计算霜冻时间*
/*预处理器指令*/
#包括
#包括
/*主要功能*/
内部主(空)
{
/*声明和初始化标识符*/
双风寒、霜冻时间、气温、风速;
/*声明和初始化标识符*/
/*计算风寒*/
风寒=35.74+(.6215*空气温度)-(35.75*(功率(风速,0.16)))+
(0.4275*空气温度*(功率(风速,0.16));
/*计算霜冻时间*/
霜冻时间=((-24.5*(0.667*风速*(1.6))+4.8)+2111.0)*
((功率(-4.8-((气温-32.0)*(.5556)),-1.668));
/*打印气温、风速、风寒和霜冻时间*/
printf(“01234567890123456789012345678901234567890123456789012345678901234567890\n”);
printf(“01********************************************************************\n”);
printf(“02风寒和冻伤计算程序”);
printf(“03\n”);
printf(“04输入空气温度(华氏度):%d”,airtemp);scanf(“%d”,airtemp);
printf(“05输入风速(英里/小时):%d”,风速;scanf(“%d”,风速);
printf(“06\n”);
printf(“07\n”);
printf(“08Results\n”);
printf(“09气温=%5.1华氏度/小时\n10风速=%5.1华氏度\n”
“11风寒=%5.1f\n12霜冻时间=%5.1f分钟\n”,
气温、风速、风寒、霜冻时间);
printf(“13********************************************************************\n”);
printf(“14\n”);
printf(“15\n”);
/*退出程序*/
printf(“16按Enter键退出。\n”);
getchar();
返回0;
我应该能够输入气温和风速的值,例如气温为5,风速为15,并得到-13.0度风寒和33.3分钟冻伤时间的结果。读取值后,您必须定义计算 目前,您有:
/* Compute windchill */
windchill = 35.74+(.6215* airtemp)-(35.75*(pow(windspeed, 0.16)))+
(0.4275*airtemp*(pow(windspeed, 0.16)));
/* Compute frostbitetime */
frostbitetime = (((-24.5*(0.667*windspeed*(1.6)))+4.8)+2111.0)*
((pow(-4.8-((airtemp-32.0)*(.5556)), -1.668)));
...
scanf("%d",&airtemp);
scanf("%d",&windspeed);
问题是,您正在使用垃圾值来计算您的windchill
和frostbitime
。要使其正常工作,请将这些计算放在scanf
之后
另一个问题是使用的格式类型。手册中:
L
指示转换将是d、i、o中的一个,
u、 下一个指针是指向长整型的指针
或无符号长整型(而非整型),或转换
将是e、f或g中的一个,下一个指针是指向
双精度(而非浮点)。指定两个l字符是不正确的
相当于L。如果与%c或%s一起使用,则相应的
参数被视为指向宽字符或
分别为宽字符串
因此,您需要将%d
更改为%lf
。您的代码如下所示:
...
scanf("%lf",&airtemp);
scanf("%lf",&windspeed);
/* Compute windchill */
windchill = 35.74+(.6215* airtemp)-(35.75*(pow(windspeed, 0.16)))+
(0.4275*airtemp*(pow(windspeed, 0.16)));
/* Compute frostbitetime */
frostbitetime = (((-24.5*(0.667*windspeed*(1.6)))+4.8)+2111.0)*
((pow(-4.8-((airtemp-32.0)*(.5556)), -1.668)));
有关更多信息,请参见
fgets()
,或搜索“字符串条目“C”你计算<代码> WrcHILI/<代码>和<代码> FrasBITESTE> <代码>使用<代码> AIR(ToMTEP < /COD>)和getopt_long
查看传递命令行参数,您可以让用户将airtemp和windspeed作为程序参数传递。