永发信息网

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

答案:1  悬赏:30  手机版
解决时间 2021-01-12 11:28
C语言这个代码,为什么输入2016/1/1 6 2016/10/1 就得不到结果 其他都可以
最佳答案
输入 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
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我对本地域组、全局组和通用组的概念比较搞不
那些事物是二元性的与三元性的呢
女孩子起名字,杨溢什么的~最后一个字要表达
绵阳到开封早上那趟汽车几点出发
一个八十平方米的专业舞台加上专业的设备多少
供应低合金结构钢Q390-A中的A表示什么意思?
有要求必须户口已经入了多久
i5 4590的集显和独立显卡gt730那个强???
单选题近期,我国要管理好通胀预期,就必须关
苹果5s怎么转发短信
--Excuseme.You________smokehere.--Sorry,Iw
疯狂猜明星免积分版第58题的是谁
我骂天蝎男是渣男,他会是什么反应
18岁女生,上下胸围差只有2CM,该怎么办?
求张永泽(不是拼音的那种)的英文怎么写
推荐资讯
keep up造句坚持速度
敢于面对真实的自己从那方面做起
灯泡坏了,我该如何选择
平常老是打呵欠事怎么回事
湖南卫视是怎么处理杜海涛下跪事件的?
谁有CS高手对战录像?
一点五十五分用英文怎么说
寻鬼束千寻 月光 APE无损格式音乐下载地址网
闲鱼用什么办法能知道对方手机号
每个盖子里分别是什么?请对号入座
暗黑2PT是什么?
24墙上开窗户需要什么工具
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?