永发信息网

C语言这个代码,为什么输入2016/1/1 6 2016/10/1 就得不到结果 其他都可以

答案:1  悬赏:30  手机版
解决时间 2021-01-12 11:28
  • 提问者网友:战魂
  • 2021-01-11 14:04
C语言这个代码,为什么输入2016/1/1 6 2016/10/1 就得不到结果 其他都可以
最佳答案
  • 五星知识达人网友:想偏头吻你
  • 2021-01-11 14:40
输入 2016/1/1 6 2016/10/1, 你的输入格式能读到 k1,y,m,d 数值。后面得不到结果可能是算法有问题。
给你一个简单的函数,已知年月日,计算出它是星期几:
int YMD_2_WeekDay(int Y, int M, int D);
再给你一个简单的函数,已知年月日,计算出它是这年的第几天:
int YMD_2_JD(int Y, int M, int D);
程序例子,用你的输入方式,但只需要年月日,输出它是星期几,是这年的第几天:
#include
int YMD_2_JD(int Y, int M, int D){
const short MonthDay[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int JD,i;
JD=D;
for (i=0;iif (((Y%4==0)&&(Y%100!=0)||(Y%400==0)) && (M>2)) JD++;
return JD;
}
int YMD_2_WeekDay(int Y, int M, int D){
int offset,jd,weekD;
offset = ((Y-1)+(Y-1)/4-(Y-1)/100+(Y-1)/400) % 7 ;
jd = YMD_2_JD(Y,M,D);
weekD = (jd + offset) % 7;
return weekD;
}

int main()
{
int t,i,y,m,d,jul1,k1,k2;
char *WeekDayName[]={" ","Mon","Tue","Wen","Thu","Fri","Sat","Sun"};
printf("input 2016/1/1 6 2016/10/1\n");
scanf("%d/1/1%d\n%d/%d/%d",&y,&k1,&y,&m,&d);
printf("ymd is %d %d %d\n",y,m,d);

printf("%4d-%02d-%02d is %s\n",y,m,d,WeekDayName[YMD_2_WeekDay(y,m,d)]);
printf("Ju-Day is %d\n",YMD_2_JD(y,m,d));
return 0;
}
输入: 2016/1/1 6 2016/10/1
输出:
ymd is 2016 10 1
2016-10-01 is Sat
Ju-Day is 275
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯