我正在创建一个简单的程序来转换单位。 while循环调用n次scanf(),每次都输出一个单位转换。在下面的代码中,它似乎偶尔会随机工作。
这是正在发生的事情:
多少?2num转换,单位转换?4楼num转换,单位转换?3克0.006615磅
注意:用户首先输入2
,因此理想情况下它将可以进行2个单位转换。但是随后用户输入4 f
为什么不输出返回值[这意味着它将传递给函数double feet(double m)
?它似乎没有传递给函数f()
....
#include <stdio.h>
double feet(double m);
double lbs(double g);
double f(double c);
int main()
{
int num, i;
i = 0;
printf("how many?\n");
scanf("%i", &num);
for(i = 0; i < num; i++)
{
double input = 0.0;
double output;
char unit = '\0';
printf("num to convert, units to convert?\n");
if(scanf("%lf %c", &input, &unit) != 2) break;
//meters to feet
if(unit == 'm')
{
output = feet(input);
printf("%lf ft\n",output);
}
//grams to lbs
if(unit == 'g')
{
output = lbs(input);
printf("%lf lbs\n",output);
}
//c to f
if(unit == 'c')
{
output = f(input);
printf("%lf f\n",output);
}
}
return 0;
}
double feet(double m)
{
double feet = 3.3808*m;
return feet;
}
double lbs(double g)
{
double lbs = 0.002205*g;
return lbs;
}
double f(double c)
{
double f = 32 + 1.8*c;
return f;
}
我已经尝试过很多事情,例如将print语句放入函数中[但是似乎没有在调用函数]。我可能不正确地使用scanf。谢谢!
在if语句中,没有将unit
与字符'f'
进行比较的语句。
因此是第一个输入
num to convert, units to convert?
4 f
均未调用。
所以看来程序有错字。
代替
//meters to feet
if(unit == 'm')
{
output = feet(input);
printf("%lf ft\n",output);
}
应该有
//meters to feet
if(unit == 'f')
{
output = feet(input);
printf("%lf ft\n",output);
}