因此,我在以下程序上遇到了一些问题:

#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 ++进行编译。

最佳答案

这是错的

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;
}


另外,显然公式是错误的,如另一个答案中所述,请检查一下。

10-08 05:08