我的C代码中的语法错误?

时间:2016-11-09 01:52:47

标签: c

好的,基本上,我正在尝试制作一个将KPH设为185并将其转换为MPH一直到0的程序。 (使用原型) 每小时公里转换为每小时英里数:

Kph     Mph
185     115
180     112
175     109
... ...
10      6
5       3
0       0

不幸的是,我的转换有点偏离,有人可以留意一些有关原因的信息吗?

#include <stdio.h>

// Prototypes
double mph2kph(double); // convert Miles to KM
double kph2mph(double); // convert KM to Miles

int main()
{

    int loop = 1; 
    double kph = 185;              // kilometers per hour   
    double mph = 115;              // miles per hour for computation 

    printf("Kilometers per hour converted to miles per hour: \n");
    printf("Kph          Mph\n"); // Display Header

    while (loop == 1){
        printf("%.2d     %.2d \n", kph, kph2mph(kph));
        break;
    }
loop = 0;

}

//Other Functions:
double mph2kph(double x){
    return x*1.61;
}

double kph2mph(double x){
    return x*1.61;
}

输出=

Kilometers per hour converted to miles per hour:                                                                                                                                             
Kph          Mph                                                                                                                                                                             
40325120     38090656

2 个答案:

答案 0 :(得分:2)

您正在使用%d来显示最终结果,该结果用于int个变量。在您的情况下,当您使用double变量时,您应该选择%f%lf

printf("%.2lf     %.2lf \n", kph, kph2mph(kph));

另外,您的每小时公里数转换为英里/小时转换功能是错误的。你应该分而不是相乘。

double kph2mph(double x){
    return x/1.61;
}

使用这些更正测试代码可以得到正确的结果:

Kilometers per hour converted to miles per hour: 
Kph          Mph
185.00     114.91 

答案 1 :(得分:0)

我对您的程序进行了一些更改,以提供您想要的输出。某些其他用户已经识别出您的程序中的某些错误。与你的比较,并尝试学习。祝你好运!

#include <stdio.h>

// Prototypes
double mph2kph(double); // convert Miles to KM
double kph2mph(double); // convert KM to Miles

int main()
{

int loop = 1; 
int kph = 185;              // kilometers per hour   
double mph = 115;              // miles per hour for computation 

printf("Kilometers per hour converted to miles per hour: \n");
printf("Kph          Mph\n"); // Display Header

while (kph != -5){
    printf("%d     %.2lf \n", kph, kph2mph(kph));
    getchar();
    kph = kph - 5;
}

 }

//Other Functions:
double mph2kph(double x){
    return x*1.61;
}

double kph2mph(double x){
   return x/1.61;
}