我发布的代码,是我能够最终弄清楚的另一个问题的重复代码。但是,这个问题我现在完全不同了。我遇到问题的部分是输入部分的扫描。
我必须有2种有效的输入格式:
mm / dd / yyyy例如: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;
}
答案 0 :(得分:0)
看看你的编译器应该告诉你什么:
警告:指针与整数之间的比较[默认启用]
您无法执行此操作,因为month1
是char*
且March
是char
(名为March,且缺少值):
if(month1==March) { month=3; }
使用strcmp
函数来比较这样的字符串:
if(strcmp(month1, "March") == 0) { month=3; }
在您测试月份名称的所有适当位置更改此项,并且您可以删除所有以月份命名的变量,因为您不需要它们。