鱼C论坛

 找回密码
 立即注册
查看: 1486|回复: 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语言代码:
  1. #include <stdio.h>
  2. int main() {
  3.     int year, month, day;
  4.     char separator;
  5.    
  6.     scanf("%d%c%d%c%d", &year, &separator, &month, &separator, &day);
  7.    
  8.     if (year < 100) {
  9.         year += 2000;
  10.     }
  11.    
  12.     printf("%04d-%02d-%02d\n", year, month, day);
  13.    
  14.     return 0;
  15. }
复制代码

C++代码:
  1. #include <iostream>
  2. #include <string>
  3. int main() {
  4.     int year, month, day;
  5.     char separator;
  6.    
  7.     std::cin >> year >> separator >> month >> separator >> day;
  8.    
  9.     if (year < 100) {
  10.         year += 2000;
  11.     }
  12.    
  13.     std::cout.fill('0');
  14.     std::cout.width(4);
  15.     std::cout << year << "-";
  16.     std::cout.width(2);
  17.     std::cout << month << "-";
  18.     std::cout.width(2);
  19.     std::cout << day << std::endl;
  20.    
  21.     return 0;
  22. }
复制代码

这些代码可以从标准输入读取日期,并将格式化后的结果输出到标准输出。希望对你有所帮助!如果你还有其他问题,请随时提问。

球一个最佳答案谢谢啦!这对我非常重要!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

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

以下是C++的代码实现:

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstring>
  4. using namespace std;

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

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

  14.     if (year < 100) {
  15.         year += 2000;
  16.     }

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

  18.     return 0;
  19. }
复制代码


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

使用道具 举报

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

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

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

C语言代码:
  1. #include <stdio.h>
  2. int main() {
  3.     int year, month, day;
  4.     char separator;
  5.    
  6.     scanf("%d%c%d%c%d", &year, &separator, &month, &separator, &day);
  7.    
  8.     if (year < 100) {
  9.         year += 2000;
  10.     }
  11.    
  12.     printf("%04d-%02d-%02d\n", year, month, day);
  13.    
  14.     return 0;
  15. }
复制代码

C++代码:
  1. #include <iostream>
  2. #include <string>
  3. int main() {
  4.     int year, month, day;
  5.     char separator;
  6.    
  7.     std::cin >> year >> separator >> month >> separator >> day;
  8.    
  9.     if (year < 100) {
  10.         year += 2000;
  11.     }
  12.    
  13.     std::cout.fill('0');
  14.     std::cout.width(4);
  15.     std::cout << year << "-";
  16.     std::cout.width(2);
  17.     std::cout << month << "-";
  18.     std::cout.width(2);
  19.     std::cout << day << std::endl;
  20.    
  21.     return 0;
  22. }
复制代码

这些代码可以从标准输入读取日期,并将格式化后的结果输出到标准输出。希望对你有所帮助!如果你还有其他问题,请随时提问。

球一个最佳答案谢谢啦!这对我非常重要!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-22 03:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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