关于C语言编日历的一些问题
1个回答
展开全部
首先,给你提个意见,统计星期几,不用从公元0年开始,一路递增到指定年来统计经过的天数,输个8000年,要做8000次循环,算法可简化为:
Year_days=year/4*(365*3+366)-(year%4==0?0:(4-(year%4))*365)
当输入非数字时,scanf对变量赋值将失败,即保留变量(Year)原来的值(初始化为0),即表示是输入显示为公元0年的日历(提问中说的是公元1年,应该是公元0年吧?),在你判断while(Year_Start
<
year)循环时自然不满足条件,即天数(Year_days)为0,明白了没有?
当输入大于32767时,八位二进制的整形数据的第一位变成1(表示是负数),则相当于负数以补码形式在内存中存储,即变量成为负数,在判断while(Year_Start
<
year)循环时自然不满足条件,即天数(Year_days)为0,所以结论同上。
只要在做统计天数前,在前面判断年份是否合法即可。
Year_days=year/4*(365*3+366)-(year%4==0?0:(4-(year%4))*365)
当输入非数字时,scanf对变量赋值将失败,即保留变量(Year)原来的值(初始化为0),即表示是输入显示为公元0年的日历(提问中说的是公元1年,应该是公元0年吧?),在你判断while(Year_Start
<
year)循环时自然不满足条件,即天数(Year_days)为0,明白了没有?
当输入大于32767时,八位二进制的整形数据的第一位变成1(表示是负数),则相当于负数以补码形式在内存中存储,即变量成为负数,在判断while(Year_Start
<
year)循环时自然不满足条件,即天数(Year_days)为0,所以结论同上。
只要在做统计天数前,在前面判断年份是否合法即可。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询