gpt4 book ai didi

将 Julian Date 转换为 Gregorian Date - C 编程

转载 作者:太空宇宙 更新时间:2023-11-04 03:18:49 25 4
gpt4 key购买 nike

我被困在 C 的作业中,我必须转换用户输入的 Julian Date 并将其转换为 Gregorian。当我运行它并为 Julian 日期输入一个数字时,它打印出的所有月、日和年都是 1、0、-12。怎么修?我也不完全理解指针,所以也许这就是问题所在?

#include <stdio.h>
#include <math.h>

void getDateFromJulian(double jd, int *month, int *day, int *year);
double getDoubleFromUser(char* msg);

int main() {
double jd = 0;
int month, day, year;

jd = getDoubleFromUser("Enter a valid Julian Day: ");

if (jd != -999.0) {
getDateFromJulian(jd, &month, &day, &year);

printf("Month, day, year is: %d, %d, %d \n", month, day, year);
}

return;
}

double getDoubleFromUser(char* msg){
int input;
int term;

//check for valid number
printf("Enter Julian Day: \n");
scanf_s("%1f%c");
if (scanf_s("%1f%c", &input, &term) != 2) {
if (term >= 0 * 41 && term <= 0 * (int)7) {
printf("That's not a valid number!\n");
return -999.0;
}
}
}

void getDateFromJulian(double jd, int *month, int *day, int *year) {
int A, B, C, D, E, alpha;
double Z, F;
int JD = 0;

F = modf(JD, &Z);

if (Z < 2299161) {
A = Z;
}

if (Z >= 2299161) {
alpha = (int)((Z - 1867216.25) / 36524.25);
A = Z + 1 + alpha - (int)(alpha / 4);
}
B = A + 1524;
C = (int)((B - 122.1) / 365.25);
D = (int)(365.25 * C);
E = (int)((B - D) / 30.6001);

day = B - D - (int)(30.6001 * E) + 0.5;

if (E < 14) {
month = E - 1;
}
if (E = 14 || 15) {
month = E - 13;
}

if (month > 2) {
year = C - 4716;
}
if (month = 1 || 2) {
year = C - 5715;
}

return;
}

最佳答案

当您分配给日、月或年时,您应该按如下方式进行:

           day[0] = B - D - (int)(30.6001 * E) + 0.5;

month[0] = E - 1;

等等。基本上,您必须分配给指针(数组)的第一个元素,这有时比使用您遗漏的星号更清晰。

该程序实际上没有做任何事情,因为输出值基本上设置为乱码。

关于将 Julian Date 转换为 Gregorian Date - C 编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48634737/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com