0

我正在编写一个将十进制度转换为度、分、秒的程序。这是它应该做的:

-118.1406209154 = 118 degrees 8 minutes 26.2342 seconds West.
W     If it is negative then it is either west longitude or south latitude
118     The degrees are left of the decimal place
8     Multiply the decimal portion (0.140620915) by 60 to get decimal minutes (8.4372549). The minutes are left of the decimal place.
26.2353     Multiply the decimal portion (0.4372549) by 60 to get decimal seconds.

这是我到目前为止的代码,但是,当我运行它时的问题是它只打印 decimalDegrees 值,没有别的。我不知道为什么。非常感谢任何提示/帮助。

double decimalDegrees = -118.1406209154;

double degrees;
double minutes;
double seconds;
char longitude;
char latitude;
double temp;

int main(int argc, char **argv)
{
    minutes = decimalDegrees - (int)decimalDegrees; //get the decimal portion of decimalDegrees
    degrees = decimalDegrees - minutes; //get degrees by removing the decimal portion
    minutes = minutes*60.0;
    temp = minutes - (int)minutes; //get decimal portion
    minutes = minutes - temp; //remove decimal portion from minutes
    seconds = temp * 60.0;

    printf("%0.10lf ", decimalDegrees);
    printf("%lf degrees ", degrees);
    printf("%lf minutes ", minutes);
    printf("%0.4lf seconds ", seconds);

    return 0;
}
4

1 回答 1

0

到目前为止,这对我来说很好。也许你应该尝试使用不同的编译器,如果你使用的是基于 unix 的系统,你可以尝试使用 GCC,如果你还没有,或者 Xcode,如果你使用的是 Mac,如果运行 windows MinGW 是一个流行的选择(适用于 Windows 的 GCC 解决方案)。

考虑到其他人已经说过的话,您可以稍微改进一下您的代码。正如 Paul 所建议的,%lf这里的 printf 中没有必要使用 ,但是如果您打算让用户稍后输入自己的值,您将%lf使用scanf().

于 2014-09-22T03:04:03.763 回答