日期显示(3分)

题目内容:

编写一个程序, 接收用户录入的日期信息并且将其显示出来. 其中, 输入日期的形式为月/日/年(mm/dd/yy), 输出日期的形式为年月日(yy.mm.dd)

以下为程序的运行结果示例:

Enter a date (mm/dd/yy):

12/03/2015↙

You entered the date: 2015.12.03

输入格式: "%d/%d/%d"

输出格式:

输入提示信息:"Enter a date (mm/dd/yy):\n"

输出格式:"You entered the date: %04d.%02d.%02d\n"

为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是51单片机使用动态数码管显示时间和日期的示例代码,时间和日期之间每隔7秒进行切换,每个数码管显示时间和日期的不同位数,每个数字之间用冒号隔开,时间和日期显示时间均为3秒: ``` #include<reg52.h> //头文件 sbit D1 = P2^2; //定义数码管位选引脚 sbit D2 = P2^3; sbit D3 = P2^4; sbit D4 = P2^5; unsigned char code table[] = { //数码管显示0~9的编码表 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f }; void delay(unsigned int i){ //延时函数 while(i--); } void display_time(unsigned char h, unsigned char m, unsigned char s){ //显示时间函数 D1 = 1; D2 = D3 = D4 = 0; //显示小时的十位数 P0 = table[h/10]; delay(500); D2 = 1; D1 = D3 = D4 = 0; //显示小时的个位数 P0 = table[h%10]; delay(500); P0 = 0x39; //显示冒号 delay(500); D3 = 1; D1 = D2 = D4 = 0; //显示钟的十位数 P0 = table[m/10]; delay(500); D4 = 1; D1 = D2 = D3 = 0; //显示钟的个位数 P0 = table[m%10]; delay(500); P0 = 0x39; //显示冒号 delay(500); D1 = 1; D2 = D3 = D4 = 0; //显示秒钟的十位数 P0 = table[s/10]; delay(500); D2 = 1; D1 = D3 = D4 = 0; //显示秒钟的个位数 P0 = table[s%10]; delay(500); } void display_date(unsigned char year, unsigned char month, unsigned char day){ //显示日期函数 D1 = 1; D2 = D3 = D4 = 0; //显示年份的千位数 P0 = table[year/1000]; delay(500); D2 = 1; D1 = D3 = D4 = 0; //显示年份的百位数 P0 = table[year%1000/100]; delay(500); D3 = 1; D1 = D2 = D4 = 0; //显示年份的十位数 P0 = table[year%100/10]; delay(500); D4 = 1; D1 = D2 = D3 = 0; //显示年份的个位数 P0 = table[year%10]; delay(500); P0 = 0x39; //显示斜杠 delay(500); D1 = 1; D2 = D3 = D4 = 0; //显示月份的十位数 P0 = table[month/10]; delay(500); D2 = 1; D1 = D3 = D4 = 0; //显示月份的个位数 P0 = table[month%10]; delay(500); P0 = 0x39; //显示斜杠 delay(500); D3 = 1; D1 = D2 = D4 = 0; //显示日期的十位数 P0 = table[day/10]; delay(500); D4 = 1; D1 = D2 = D3 = 0; //显示日期的个位数 P0 = table[day%10]; delay(500); } void main(){ unsigned char h = 10, m = 10, s = 0; //初始时间为10:10:00 unsigned char year = 21, month = 4, day = 16; //初始日期为2021年4月16日 unsigned int i = 0; while(1){ i++; if(i == 7000){ //时间和日期之间每隔7秒进行切换 i = 0; s = 0; //时间切换时,秒钟清零 D1 = D2 = D3 = D4 = 0; //数码管全部关闭 delay(500); display_date(year, month, day); //显示日期 delay(3000); //日期显示时间为3秒 } else{ display_time(h, m, s); //显示时间 s++; //秒钟加1 if(s == 60){ //如果秒钟达到60秒 s = 0; //秒钟清零 m++; //钟加1 if(m == 60){ //如果钟达到60钟 m = 0; //钟清零 h++; //小时加1 if(h == 24){ //如果小时达到24小时 h = 0; //小时清零 } } } } } } ``` 这段代码在原有的时间显示基础上,增加了显示日期的功能。通过i变量来记录时间和日期的切换,每隔7秒进行一次切换。在时间切换为日期时,将秒钟清零,数码管全部关闭,显示日期,时间显示时间为3秒。在时间和日期切换之间,通过s、m、h三个变量来记录秒、、时的数值,通过if语句进行时间的进位和清零。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值