第三天、计算某日是该年的第几天

举报
Jack-Cui 发表于 2021/05/31 13:33:29 2021/05/31
【摘要】        编写一个计算天数的程序,用户从键盘中输入年、月、日,在屏幕中输出此日期是该年的第几天。 C代码: /*第三天、计算某日是该年的第几天*/ #include <stdio.h> #include <stdlib.h> int main(void) { /*参数依次为年、月、日、计算天数、f...

       编写一个计算天数的程序,用户从键盘中输入年、月、日,在屏幕中输出此日期是该年的第几天。
C代码:

/*第三天、计算某日是该年的第几天*/
#include <stdio.h>
#include <stdlib.h>

int main(void)
{ /*参数依次为年、月、日、计算天数、for循环初始值*/ /*注意:days赋初始值0,不赋值,变量的值不确定,会导致运行崩溃*/ int year,month,day,days = 0,i = 0; int average_year[12] = {31,28,31,30,31,30,31,31,30,31,30,31}; //平年 int leap_year[12] = {31,29,31,30,31,30,31,31,30,31,30,31}; //闰年 printf("请输入要查询的日期,例如:1993年1月30日\n"); scanf("%d年%d月%d日",&year,&month,&day); /*能被400整除,或者不能被100整除但能被4整出的年份为闰年*/ if(year % 400 == 0 || year % 4 == 0 && year % 100 != 0) { /*数组的第一个元素的索引值为0,将month月的前几个月相加*/ for(i;i <= month - 2;i++) days += leap_year[i]; /*将month月的day天加上,为最终的天数*/ days += day; } else /*不满足,则为平年*/ { /*同上*/ for(i;i <= month - 2;i++) days += average_year[i]; days += day; } printf("%d年%d月%d日是%d年的第%d天\n",year,month,day,year,days); system("pause");
}
  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

结果显示:
Visual Studio 2012
python代码,C代码的升级版,可以进行输入判断:

def leap(a): if (a % 4 == 0) & (a % 100 != 0) | (a % 400 == 0): return 1 else: return 0

def number(y,m,d): result = 0 average_year = (31,28,31,30,31,30,31,31,30,31,30,31) #平年的元组 leap_year = (31,29,31,30,31,30,31,31,30,31,30,31) #闰年的元组 if (1 <= y <= 5000) & (1 <= m <= 12) & (1 <= d <=31) & leap(y) & (d <= leap_year[m-1]): for i in range(0,m-1): result += leap_year[i] elif (1 <= y <= 5000) & (1 <= m <= 12) & (1 <= d <=31) & (leap(y) == 0) & (d <= average_year[m-1]): for i in range(0,m-1): result += average_year[i] else: result = 0 d = 0 result += d return result

def tranform(contents): if ('年' in contents) & ('月'in contents) & ('日' in contents) & (' ' not in contents): str_len = len(contents) for i in range(1,str_len): if contents[i] == '年': year = int(contents[0:i]) #input()接收的是字符串 year_num = i + 1 if contents[i] == '月': month = int(contents[year_num:i]) #用int()强制转换成整型 month_num = i + 1 if contents[i] == '日': day = int(contents[month_num:i]) return (year,month,day) else: return 0

choose = 1 while choose: contents = input('请输入要查询的日期,查询范围公元1年-公元5000年,例如:1993年1月30日\n') t = tranform(contents) if t != 0: result = number(t[0],t[1],t[2]) if result != 0: print('第%d天' %(result)) while True: choose = input('输入‘是’继续查询,输入‘否’放弃查询\n') if ('是' in choose) | ('否' in choose) & (len(choose) == 1): if '是' in choose: choose = 1 break else: choose = 0 break else: print('输入选择错误,请重新输入\n') else: print('输入日期错误,请重新输入\n') else: print('输入格式错误,请重新输入\n')
  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61

结果显示:
IDLE

文章来源: jackcui.blog.csdn.net,作者:Jack-Cui,版权归原作者所有,如需转载,请联系作者。

原文链接:jackcui.blog.csdn.net/article/details/50896302

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。