天梯赛 L1-042 日期格式化 (5 分)
题目
世界上不同国家有不同的写日期的习惯。比如美国人习惯写成“月-日-年”,而中国人习惯写成“年-月-日”。下面请你写个程序,自动把读入的美国格式的日期改写成中国习惯的日期。
输入格式:
输入在一行中按照“mm-dd-yyyy”的格式给出月、日、年。题目保证给出的日期是1900年元旦至今合法的日期。
输出格式:
在一行中按照“yyyy-mm-dd”的格式给出年、月、日。
样例测试
输入样例:
03-15-2017
输出样例:
2017-03-15
简单分析
打卡留恋一下自己写的弱智代码,当然也附上正确答案。
人总会由初学者再到高级,不要笑话我 2333
代码
垃圾代码
#include <iostream>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0), cout.tie(0);
string a;
cin >> a;
int pos1 = 0, pos2 = 0;
for (int i = 0; i < a.size(); i++) {
if (a[i] == '-') {
pos1 = i;
break;
}
}
for (int i = pos1 + 1; i < a.size(); i++) {
if (a[i] == '-') {
pos2 = i;
break;
}
}
for (int i = pos2 + 1; i < a.size(); i++) {
cout << a[i];
}
cout << "-";
for (int i = 0; i < pos1; i++) {
cout << a[i];
}
cout << "-";
for (int i = pos1 + 1; i < pos2; i++) {
cout << a[i];
}
cout << endl;
return 0;
}
正确写法
#include <iostream>
using namespace std;
int main() {
int yy, mm, dd;
scanf("%d-%d-%d", &mm, &dd, &yy);
printf("%04d-%02d-%02d\n", yy, mm, dd);
return 0;
}
总结感悟
可能是最开始写的时候脑子抽了,或者基础就不好,忘记了scanf可以格式化读入,233
小知识点,秒杀题写的太麻烦了
吃一堑长一智
本文介绍如何用C++编写代码,实现将输入的美国'月-日-年'格式的日期转换为中国'年-月-日'格式,通过举例和错误代码反思,分享了使用scanf的正确方式。
979

被折叠的 条评论
为什么被折叠?



