gpt4 book ai didi

c - 打印给定日期的工作日,输入扫描时出现问题

转载 作者:行者123 更新时间:2023-11-30 17:36:48 25 4
gpt4 key购买 nike

我发布的代码是我最终弄清楚的另一个问题的重复代码。然而,我现在遇到的这个问题完全不同了。我遇到问题的部分是输入部分的扫描。

我必须有 2 种有效的输入格式:

月/日/年 示例:03/04/2014

输出:星期二

月 dd, yyyy 示例:2014 年 3 月 4 日

输出:星期二

我发布的代码实际上可以采用这两种格式。但是,只有 mm/dd/yyyy 格式才能打印出正确的工作日。例如,03/04/2014 打印出正确的星期二。但是,当我输入 2014 年 3 月 4 日时,它打印出星期六。我不确定出了什么问题...

#include<stdio.h>

int main()
{
int month,day1,day2,totdays,year,dm,dn,leap,rmd;
char month1[10], January, February, March, April, May, June, July, August, September, October, November, December;

printf(" ");
scanf("%d/%d/%d",&month,&day1,&year) || scanf("%s %d, %d",month1,&day1,&year);



if(month1==January){
month=1;
}
if(month1==February){
month=2;
}
if(month1==March){
month=3;
}
if(month1==April){
month=4;
}
if(month1==May){
month=5;
}
if(month1==June){
month=6;
}
if(month1==July){
month=7;
}
if(month1==August){
month=8;
}
if(month1==September){
month=9;
}
if(month1==October){
month=10;
}
if(month1==November){
month=11;
}
if(month1==December){
month=12;
}






if(((year%4==0) && (year%100!=0)) || (year%400==0))
{
if(month==1)
dm=0;

if(month==2)
dm=31;

if(month==3)
dm=60;

if(month==4)
dm=91;

if(month==5)
dm=121;

if(month==6)
dm=152;

if(month==7)
dm=182;

if(month==8)
dm=213;

if(month==9)
dm=244;

if(month==10)
dm=274;

if(month==11)
dm=305;

if(month==12)
dm=335;
}
else
{
if(month==1)
dm=0;

if(month==2)
dm=31;

if(month==3)
dm=59;

if(month==4)
dm=90;

if(month==5)
dm=120;

if(month==6)
dm=151;

if(month==7)
dm=181;

if(month==8)
dm=212;

if(month==9)
dm=243;

if(month==10)
dm=273;

if(month==11)
dm=304;

if(month==12)
dm=334;
}


day2=(year-1905)*(365.25);
dn=dm+day1;
totdays=day2+dn;

rmd=totdays%7;

if(rmd==2)
{
printf("Monday \n");
}

if(rmd==3)
{
printf("Tuesday \n");
}

if(rmd==4)
{
printf("Wednesday \n");
}

if(rmd==5)
{
printf("Thursday \n");
}

if(rmd==6)
{
printf("Friday \n");
}

if(rmd==0)
{
printf("Saturday \n");
}

if(rmd==1)
{
printf("Sunday \n");
}

return 0;

}

最佳答案

看看你的编译器应该告诉你什么:

warning: comparison between pointer and integer [enabled by default]

您不能执行此操作,因为 month1 是一个 char*March 是一个 char(名为三月,缺乏值(value)):

if(month1==March) { month=3; }

使用 strcmp 函数来比较字符串,如下所示:

if(strcmp(month1, "March") == 0) { month=3; }

在测试月份名称的所有适当位置更改此设置,并且您还可以删除所有以月份命名的变量,因为您不需要它们。

关于c - 打印给定日期的工作日,输入扫描时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22571640/

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