gpt4 book ai didi

c - C语言的日期计算器程序

转载 作者:太空宇宙 更新时间:2023-11-04 02:17:01 27 4
gpt4 key购买 nike

我正在尝试用 C 程序编写一个范围从 1/1/1902 到 12/31/2299 的日期计算器,我遵循了 http://en.wikipedia.org/wiki/Calculating_the_day_of_the_week 中的算法有世纪表、月表和日表,但是当我尝试打印出来时,这就是我所拥有的

Enter Year, Month and Day as YYYY,M,DD
1982 4 24
Saturday1982 ,6, 24, is 6

而不是说 1982 4 24 是星期六

我写的程序有什么问题?开关盒的位​​置?

#include <stdio.h>

int main (void)
{
// insert code here...
int day,month,year;

printf("Enter Year, Month and Day as YYYY,M,DD\n");

scanf("%4d%d%2d", &year, &month, &day);

if (year >= 1901 && year <= 2299 &&
month >= 1 && month <= 12 &&
day >= 0 && day <= 31)
{
int century = year/100;

/* making a century table for calculation*/

switch(century)
{
case 19:
century=0;
break;
case 20:
century=6;
break;
case 21:
century=4;
break;
case 22:
century=2;
break;
}

int last2_of_year= year % 100;

/* Last 2 digits of the year entered*/

int last2_div_4 = last2_of_year/4;

switch (month)
{
case 1:
month=0;
break;

case 2:
month=3;
break;
case 3:
month=3;
break;
case 4:
month=6;
break;
case 5:
month=1;
break;
case 6:
month=4;
break;
case 7:
month=6;
break;
case 8:
month=2;
break;
case 9:
month=5;
break;
case 10:
month=0;
break;
case 11:
month=3;
break;
case 12:
month=5;
break;
}


int total_num = (century+ last2_of_year +day +month +last2_div_4)%7;

switch (total_num)
{
case 0:
printf("Sunday");
break;
case 1:
printf("Monday");
break;
case 2:
printf("Tuesday");
break;
case 3:
printf("Wednesday");
break;
case 4:
printf("Thursday");
break;
case 5:
printf("Friday");
break;
case 6:
printf("Saturday");
break;
}

printf("%d ,%d, %d, is a %d", year,month,day,total_num);
}
else
{
printf("invalid\n");
}



return 0;

}

最佳答案

你说:

printf("%d ,%d, %d, is a %d", year,month,day,total_num);

这将要打印

L, M, N, is a P

其中 LMNP 是数字。

您需要 printf() name-of-days switch 并且需要删除最后的 %dprintf 中的 total_num。然后 printf 将打印

L, M, N, is a

和 name-of-days switch 中的 printf 将在同一行打印出当天的名称,给你

L, M, N, is a XXXXXXXXXXX

编辑以解决评论:

查看您的程序的输出语句。

遇到的第一个输出语句是 name-of-days 开关中的 printf 调用,它打印出日期名称。因此,当您的程序根据您提到的输入运行时,将打印出的第一件事是

Saturday

然后在日期切换之后,下一个 printf

printf("%d ,%d, %d, is a %d", year,month,day,total_num);

因为year1982month4day24total_num6,则printf会输出

1982, 4, 24, is a 6

和之前的Saturday输出在同一行,也就是说整个输出是

Saturday1982, 4, 24, is a 6

关于c - C语言的日期计算器程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6104505/

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