所以我对编码很新,这是我第一次使用scanf和printf。对于我的家庭作业,我们应该创建一个计算燃油效率的程序,单位为mpg,升数为每100km。最后的答案只应该有2个小数点......但这是另一个故事。 ; P
现在,该程序允许我输入第一部分的值(多少英里),但是,一旦我点击输入它跳到我的代码的末尾并吐出一个(看似)随机数?
#include <stdio.h> /* tells computer where to find definitions for printf and scanf */
#define KMS_PER_MILE 1.61 /* conversion constant for miles to kms */
#define LIT_PER_GAL 3.79 /* conversion constant for gallons to liters */
int main(void)
{
double miles, /* input - distance in miles. */
gallons, /* input - gallons consumed */
mpg, /* output - miles per gallon */
kms, /* output - kilometers */
liters, /* output - liters */
lpkm; /* output - liters per 100 kms */
/* get the distance in miles */
printf("Enter the distance in miles> ");
scanf("%1f", &miles);
/* get the gallons consumed */
printf("Enter the gallons consumed> ");
scanf("%1f", &gallons);
/* convert to mpg */
mpg = (double)miles / (double)gallons;
/* convert to lpkm */
liters = LIT_PER_GAL * gallons;
kms = KMS_PER_MILE * miles;
lpkm = (double)liters / (double)kms * 100;
/* Display fuel efficiency in mpg and lpkm */
printf("The car's fuel efficiency is\n %1f mpg \n %1f liters per 100 kms", mpg, lpkm);
return (0);
}
答案 0 :(得分:8)
尝试将%1f
更改为%lf
中的scanf
。
有关详细信息,请查看C++ reference
答案 1 :(得分:3)
由于您声称自己在学习C ++,如果您使用过C ++标准库,那么您可以避免这个问题:
#include <iostream> // std::cin, std::cout
int main()
{
std::cout << "Enter the distance in miles> ";
std::cin >> miles;
std::cout << "Enter the gallons consumed> "
std::cin >> gallons;
....
std::cout << "The car's fuel efficiency is\n" << mpg << "\n"
<< lpkm << " per 100 kms\n";
}
答案 2 :(得分:0)
对于打印,您可以使用 1f ,但在接受输入时,您必须使用 lf 。