所以,我对以下程序有一点问题:
#include <stdio.h>
int main()
{
int centimeters, feet, inches;
printf("Please enter an amount in centimeters\n");
scanf("%i", ¢imeters);
getchar();
inches = (centimeters/2.54);
feet = inches % 12;
printf("\n%i", &feet);
return 0;
}
无论我输入什么号码,该程序认为答案是2358852.我知道24厘米不超过200万英尺的事实。如果重要,我正在使用Dev C ++进行编译。
答案 0 :(得分:4)
这是错误的
printf("\n%i", &feet);
应该是
printf("\n%i", feet);
/* ^ no & here */
printf("\n%i", &feet);
打印address of feet
,而不是它的值。
您的程序还假定已成功读取scanf()
ed值,您必须检查scanf()
的返回值以确保其成功
#include <stdio.h>
int main()
{
int centimeters, feet, inches;
printf("Please enter an amount in centimeters\n");
if (scanf("%i", ¢imeters) == 1)
{
getchar();
inches = centimeters / 2.54;
feet = inches % 12;
printf("\n%i", feet);
}
return 0;
}
另外,显然这个公式是错误的,如另一个答案所述,请检查一下。
答案 1 :(得分:0)
feet
的模数计算错误。它应该是
feet = inches / 12;
inches %= 12;
printf("\n%i feet, %i inches", feet, inches);