PAT乙级(1111 对称日)C语言

文章目录

  • 1111 对称日
    • 输入格式
    • 输出格式
    • 输入样例:
    • 输出样例
    • 代码示例

1111 对称日

央视新闻发了一条微博,指出 2020 年有个罕见的“对称日”,即 2020 年 2 月 2 日,按照 年年年年月月日日 格式组成的字符串20200202 是完全对称的。

给定任意一个日期,本题就请你写程序判断一下,这是不是一个对称日?

输入格式

输入首先在第一行给出正整数 N(1

一月:Jan
二月:Feb
三月:Mar
四月:Apr
五月:May
六月:Jun
七月:Jul
八月:Aug
九月:Sep
十月:Oct
十一月:Nov
十二月:Dec
Day 是月份中的日期,为 [1, 31] 区间内的整数;Year 是年份,为 [1, 9999] 区间内的整数。

输出格式

对每一个给定的日期,在一行中先输出 Y 如果这是一个对称日,否则输出 N;随后空一格,输出日期对应的 年年年年月月日日 格式组成的字符串。

输入样例:

5
Feb 2, 2020
Mar 7, 2020
Oct 10, 101
Nov 21, 1211
Dec 29, 1229

输出样例

Y 20200202
N 20200307
Y 01011010
Y 12111121
N 12291229

代码示例

#include 
#include 

// 将月份缩写转换为数字
int monthToNum(char *month) {
    if (strcmp(month, "Jan") == 0) return 1;
    if (strcmp(month, "Feb") == 0) return 2;
    if (strcmp(month, "Mar") == 0) return 3;
    if (strcmp(month, "Apr") == 0) return 4;
    if (strcmp(month, "May") == 0) return 5;
    if (strcmp(month, "Jun") == 0) return 6;
    if (strcmp(month, "Jul") == 0) return 7;
    if (strcmp(month, "Aug") == 0) return 8;
    if (strcmp(month, "Sep") == 0) return 9;
    if (strcmp(month, "Oct") == 0) return 10;
    if (strcmp(month, "Nov") == 0) return 11;
    if (strcmp(month, "Dec") == 0) return 12;
    return 0;
}

// 判断字符串是否对称
int isSymmetric(char *str) {
    int len = strlen(str);
    for (int i = 0; i < len / 2; i++) {
        if (str[i] != str[len - 1 - i]) {
            return 0;
        }
    }
    return 1;
}

// 将整数转换为固定长度的字符串
void intToString(int num, char *str, int length) {
    for (int i = length - 1; i >= 0; i--) {
        str[i] = (num % 10) + '0';
        num /= 10;
    }
    str[length] = '\0';
}

int main() {
    int N;
    scanf("%d", &N);

    while (N--) {
        char month[5];
        int day, year;
        scanf("%s %d, %d", month, &day, &year);

        // 将月份转换为数字
        int monthNum = monthToNum(month);

        // 构造日期字符串
        char dateStr[9];
        intToString(year, dateStr, 4);      // 年年年年
        intToString(monthNum, dateStr + 4, 2); // 月月
        intToString(day, dateStr + 6, 2);   // 日日
        dateStr[8] = '\0';

        // 判断是否对称
        if (isSymmetric(dateStr)) {
            printf("Y %s\n", dateStr);
        } else {
            printf("N %s\n", dateStr);
        }
    }

    return 0;
}

你可能感兴趣的:(C语言,机试合集,c语言,算法,开发语言)