C语言如何以更简洁的方法输出复杂的信息

        对于初学者来说,经常会有题目要求输出一段复杂的文字

比如:用英文方式输出月日年

具体事例具体说我们来看一个例题:

让用户输入三个整数,分别代表月日年。比如用户输入了 12 1 2024,那么我们就要输出

1st December 2024,这是正确的表达方式。

        如果我们用switch来进行判断输出,那可能需要写百来行代码,这并不够简洁也太臃肿了,这不利于程序的开发,这并不是我们愿意看到的答案。

        那么我们就想,有没有一种办法可以不用反复使用嵌套的switch也可以达到同样的效果呢?

        仔细研究发现31个数只有1,2,3,21,22,23这几天是特殊的,他们不同于其他的数,只需要在末尾加上th就可以。发现了这个,我们思考,是不是可以在月份前先用if语句来判断该在数字末尾加上什么尾缀呢?

先来看具体代码:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

int main(void)
{
	int month = 0;
	int day = 0;
	int year = 0;
	//定义月日年为整型变量
	printf("请输入三个整数(顺序为月日年):");
	scanf("%d%d%d", &month, &day, &year);

	if (day > 3 && day < 21 || day>23 && day < 31)
	    printf("\n%dth ", day);
	else
		printf("\n%d%s ", day, (day % 10 == 1 ? "st" : (day % 10 == 2 ? "nd" : "rd")));
    //判断日
    switch (month)
    {
    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;
    }

    printf(" %d\n", year);
    return 0;
}

可以发现,开头用了if-else语句来判断该给日期加什么尾缀,接下里用switch语句来输出月份,最后直接原样输出年份。

        这样一来,比直接使用switch语句打印来的更加简洁美观。 

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值