程序:显示法定格式的日期合同和其他法律文档中经常使用下列日期格式: Dated this day of ,19 .

程序:显示法定格式的日期合同和其他法律文档中经常使用下列日期格式:

Dated this day of ,19 .

编写程序用来显示这种格式的日期。用户以月/日的格式录入日期,然后计算机显示出“法定”格式的日期:

Enter date (mm/dd/yy) : 7/19/96

Dated this 19th day of July, 1996.

可以使用printf函数实现主要的格式化。然而,还有两个问题:如何为日添加“th”(或者“st”、“nd”、“rd”),以及如何使用单词代替数字显示月份。幸运的是,switch语句可以很好地解决这两种问题:用一个switch语句负责显示日的后缀,再用另一个switch语句显示出月份名。注意,11日、12日、13日对应的英文是th结尾。

**输入格式要求:"%d/%d/%d" 提示信息:“Enter date (mm/dd/yy):” “Dated this %d” “st/nd/rd/th” " day of " “January/February/…/December”

如果输入的日期不在合法范围内,则输出"Input error!\n"。
**输出格式要求:", 19%.2d.\n"

#include <stdio.h>
int main ( )
{
    printf("Enter date (mm/dd/yy):");
    int y, m, d;
    scanf("%d/%d/%d",&m,&d,&y );
    if (y>99||y<1||m>12||m<1||d>31||d<1) {
        printf("Input error!\n");return 0;
    }
    //错误类型一:闰年二月
    if ((y%4==0&&y%100!=0)||(y%400==0)) {
        if (m == 2&& d > 29) {
            printf("Input error!\n");return 0;
        }
    }
    else
    {
        if (m==2&& d > 28) {
            printf("Input error!\n");return 0;
        }
    }
    //其他月份的日期没对上
    if(m == 1||m == 3||m==5||m==7||m==8||m==10||m==12)
    {
        if (d>31) {
            printf("Input error!\n");return 0;
        }
    }
    else
    {
        if (d>30) {
            printf("Input error!\n");return 0;
        }
    }
    printf("Dated this %d",d);
    switch (d) {
        case 1:
        case 21:
        case 31:
            printf("st");
            break;
       case 2:
        case 22:
            printf("nd");
            break;
        case 3:
        case 23:
            printf("rd");
            break;
        default:
            printf("th");
            break;
    }
    printf(" day of ");
    switch (m) {
        case 1:
            printf("January");
            break;
        case 2:
            printf("February");
            break;
        case 3:
            printf("March");
            break;
        case 4:
            printf("April");
            break;
        case 5:
            printf("May");
            break;
            case 6:
            printf("June");
            break;
            case 7:
            printf("July");
            break;
            case 8:
            printf("August");
            break;
        case 9:
            printf("September");
            break;
            case 10:
            printf("October");
            break;
            case 11:
            printf("November");
            break;
            case 12:
            printf("December");
            break;
        default:
            break;
    }
    printf(", 19%.2d.\n",y);
    return 0;
    
}

注意事项:

非法日期的判断和结束

用到的常识

一月 January 缩写:Jan.

二月 February 缩写:Feb.

三月 March 缩写:Mar.

四月 April 缩写:Apr.

五月 May 缩写:May.

六月 June 缩写:Jun.

七月 July 缩写:Jul.

八月 August 缩写:Aug.

九月 September 缩写:Sept.

十月 October 缩写:Oct.

十一月 November 缩写:Nov.

十二月 December 缩写:Dec.

1st 2nd 3rd 4th 5th 6th 7th 8th 9th 10th ;
11th 12th 13th 14th 15th 16th 17th 18th 19th 20th ;
21st 22nd 23rd 24th 25th 26th 27th 28th 29th 30th 31st

  • 22
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值