鱼C论坛

 找回密码
 立即注册
查看: 1008|回复: 2

[已解决]求助一下

[复制链接]
发表于 2023-10-12 17:57:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
输入格式:
在一行中按照“yyyy.mm.dd”或“yy.mm.dd”的格式给出年、月、日。题目保证给出的日期是1900年元旦至今的合法的日期。
其中年可能为4位或2位,当年为2位数字时,默认为21世纪。例如:“01/2/23”表示“2001年2月23日”。
其中月份和日期可能为2位或1位数字。

输出格式:
在一行中按照“yyyy-mm-dd”的格式输出日期,其中年份为4位,月份和日期为2位,不够2位时用0补齐。

输入样例1:
2002.1.7
输出样例1:
2002-01-07
输入样例2:
03/07/1
输出样例2:
2003-07-01

这个题用c语言或者C++源代码要怎么写啊
最佳答案
2023-10-12 17:58:13
问题解析:
这个问题需要将输入的日期格式转换成指定的输出格式。可以使用C或C++编写代码来解决。接下来我会给出相应的源代码。

算法思路:
1. 读取输入的日期字符串。
2. 使用适当的方法解析年、月和日的值。
3. 根据题目要求,判断年份是4位还是2位,进行必要的处理。
4. 将年、月、日格式化为指定的输出格式。
5. 输出结果。

以下分别给出C语言和C++的代码实现。

C语言代码:
#include <stdio.h>int main() {    int year, month, day;    char separator;        scanf("%d%c%d%c%d", &year, &separator, &month, &separator, &day);        if (year < 100) {        year += 2000;    }        printf("%04d-%02d-%02d\n", year, month, day);        return 0;}
C++代码:
#include <iostream>#include <string>int main() {    int year, month, day;    char separator;        std::cin >> year >> separator >> month >> separator >> day;        if (year < 100) {        year += 2000;    }        std::cout.fill('0');    std::cout.width(4);    std::cout << year << "-";    std::cout.width(2);    std::cout << month << "-";    std::cout.width(2);    std::cout << day << std::endl;        return 0;}
这些代码可以从标准输入读取日期,并将格式化后的结果输出到标准输出。希望对你有所帮助!如果你还有其他问题,请随时提问。

球一个最佳答案谢谢啦!这对我非常重要!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-10-12 17:58:02 | 显示全部楼层
这道题需要将输入的日期格式转换成输出的日期格式,可以使用字符串的操作来实现。具体步骤如下:

1. 读入输入日期,使用scanf函数读入字符串格式的日期。
2. 对读入的日期进行处理,将年、月、日分别提取出来。
3. 根据题目要求,将年份转换成4位数,月份和日期转换成2位数。
4. 将处理后的年、月、日按照“yyyy-mm-dd”的格式输出。

以下是C++的代码实现:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;

int main() {
    char date[11];
    scanf("%s", date);

    int year, month, day;
    if (date[4] == '.') {
        sscanf(date, "%d.%d.%d", &year, &month, &day);
    } else {
        sscanf(date, "%d/%d/%d", &year, &month, &day);
    }

    if (year < 100) {
        year += 2000;
    }

    printf("%04d-%02d-%02d", year, month, day);

    return 0;
}

如果输入的日期格式为“yyyy.mm.dd”,则使用“%d.%d.%d”格式解析;如果输入的日期格式为“yy/mm/dd”,则使用“%d/%d/%d”格式解析。对于年份小于100的情况,将其加上2000,转换成4位数的年份。最后使用printf函数按照“%04d-%02d-%02d”的格式输出处理后的日期。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-12 17:58:13 | 显示全部楼层    本楼为最佳答案   
问题解析:
这个问题需要将输入的日期格式转换成指定的输出格式。可以使用C或C++编写代码来解决。接下来我会给出相应的源代码。

算法思路:
1. 读取输入的日期字符串。
2. 使用适当的方法解析年、月和日的值。
3. 根据题目要求,判断年份是4位还是2位,进行必要的处理。
4. 将年、月、日格式化为指定的输出格式。
5. 输出结果。

以下分别给出C语言和C++的代码实现。

C语言代码:
#include <stdio.h>int main() {    int year, month, day;    char separator;        scanf("%d%c%d%c%d", &year, &separator, &month, &separator, &day);        if (year < 100) {        year += 2000;    }        printf("%04d-%02d-%02d\n", year, month, day);        return 0;}
C++代码:
#include <iostream>#include <string>int main() {    int year, month, day;    char separator;        std::cin >> year >> separator >> month >> separator >> day;        if (year < 100) {        year += 2000;    }        std::cout.fill('0');    std::cout.width(4);    std::cout << year << "-";    std::cout.width(2);    std::cout << month << "-";    std::cout.width(2);    std::cout << day << std::endl;        return 0;}
这些代码可以从标准输入读取日期,并将格式化后的结果输出到标准输出。希望对你有所帮助!如果你还有其他问题,请随时提问。

球一个最佳答案谢谢啦!这对我非常重要!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-7 07:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表