C中的模数不起作用

时间:2015-02-12 00:30:29

标签: c

所以,我对以下程序有一点问题:

#include <stdio.h>
int main()
{
    int centimeters, feet, inches;
    printf("Please enter an amount in centimeters\n");
    scanf("%i", &centimeters);
    getchar();
    inches = (centimeters/2.54);
    feet = inches % 12;
    printf("\n%i", &feet);
    return 0;
}

无论我输入什么号码,该程序认为答案是2358852.我知道24厘米不超过200万英尺的事实。如果重要,我正在使用Dev C ++进行编译。

2 个答案:

答案 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", &centimeters) == 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);