Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 打印给定日期的工作日,在输入中扫描问题_C_Date_Time - Fatal编程技术网

C 打印给定日期的工作日,在输入中扫描问题

C 打印给定日期的工作日,在输入中扫描问题,c,date,time,C,Date,Time,我所发布的代码,是我最后能够理解的另一个问题的重复代码。然而,我现在遇到的这个问题完全不同了。我遇到的问题是输入部分的扫描 我必须有两种有效的输入格式: 年月日示例:2014年4月3日 产出:星期二 年月日示例:2014年3月4日 产出:星期二 我发布的代码实际上可以采用这两种格式。但是,只有mm/dd/yyyy格式打印出正确的工作日。例如,2014年4月3日打印的星期二是正确的。然而,当我输入2014年3月4日时,它会打印出一个星期六。我不知道怎么了 #include<stdio.h&g

我所发布的代码,是我最后能够理解的另一个问题的重复代码。然而,我现在遇到的这个问题完全不同了。我遇到的问题是输入部分的扫描

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

年月日示例:2014年4月3日

产出:星期二

年月日示例:2014年3月4日

产出:星期二

我发布的代码实际上可以采用这两种格式。但是,只有mm/dd/yyyy格式打印出正确的工作日。例如,2014年4月3日打印的星期二是正确的。然而,当我输入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;

}
#包括
int main()
{
整月、第1天、第2天、总天数、年份、dm、dn、leap、rmd;
char month1[10],一月、二月、三月、四月、五月、六月、七月、八月、九月、十月、十一月、十二月;
printf(“”);
scanf(“%d/%d/%d”,&month,&day1,&year)| scanf(“%s%d,%d”,month1,&day1,&year);
如果(月1==一月){
月=1;
}
如果(月1==二月){
月=2;
}
如果(月1==三月){
月=3;
}
如果(月1==四月){
月=4;
}
如果(月1==五月){
月=5;
}
如果(月1==六月){
月=6;
}
如果(月1==7月){
月=7;
}
如果(月1==八月){
月=8;
}
如果(月1==九月){
月=9;
}
如果(月1==10月){
月=10;
}
如果(月1==11月){
月=11;
}
如果(月1==12月){
月=12;
}
如果((第%4年==0)和&(第%100年!=0))| |(第%400年==0))
{
如果(月份==1)
dm=0;
如果(月份==2)
dm=31;
如果(月份==3)
dm=60;
如果(月份==4)
dm=91;
如果(月=5)
dm=121;
如果(月份==6)
dm=152;
如果(月份==7)
dm=182;
如果(月份==8)
dm=213;
如果(月份==9)
dm=244;
如果(月=10)
dm=274;
如果(月=11)
dm=305;
如果(月份==12)
dm=335;
}
其他的
{
如果(月份==1)
dm=0;
如果(月份==2)
dm=31;
如果(月份==3)
dm=59;
如果(月份==4)
dm=90;
如果(月=5)
dm=120;
如果(月份==6)
dm=151;
如果(月份==7)
dm=181;
如果(月份==8)
dm=212;
如果(月份==9)
dm=243;
如果(月=10)
dm=273;
如果(月=11)
dm=304;
如果(月份==12)
dm=334;
}
第2天=(1905年)*(365.25);
dn=dm+day1;
总天数=第2天+dn;
rmd=总天数%7;
如果(rmd==2)
{
printf(“星期一”);
}
如果(rmd==3)
{
printf(“星期二”);
}
如果(rmd==4)
{
printf(“星期三”);
}
如果(rmd==5)
{
printf(“星期四”);
}
如果(rmd==6)
{
printf(“星期五”);
}
如果(rmd==0)
{
printf(“星期六”);
}
如果(rmd==1)
{
printf(“星期日”);
}
返回0;
}

看看编译器应该告诉您什么:

警告:指针和整数之间的比较[默认启用]

您不能这样做,因为
month1
char*
March
char
(命名为March,没有值):

使用
strcmp
函数比较如下字符串:

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

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

hmmm,感谢您的响应,该方法有效!。然而,我不确定我是否被允许在这个项目上使用它,因为我甚至还没有被教过。你能推荐一种更好的方法来接受输入吗?像一根绳子什么的?我可能已经学到了一些东西。@user3436065为什么不使用该语言提供的工具呢?你的老师不应该对此抱怨。如果你想接受字符串形式的输入,比如2014年3月4日的
March 04
,在某个时候你必须将字符串的月份部分与固定值进行比较,而
strcmp
是比较字符串的常用方法。还有其他比较单词和值的方法更复杂吗?@user3436065不太复杂(如果你对C非常了解的话),但是你会重新创建strcmp已经做过的事情(而且很可能是以一种效率较低的方式)。
if(strcmp(month1, "March") == 0) { month=3; }