1 题意,中文题。
2 分析。
注意格式控制。
①格式读入,scanf("%d/%d/%d-%d:%d:%d",&yy,&mm,&dd,&h,&m,&s);
②%04d,输出4位,若不够,则补0
printf("%02d/%02d/%04d-%02d:%02d:%02d%s\n",mm,dd,yy,h,m,s,time[pm]);
下面两个代码有鲜明的对比,良好的控制格式的读入和输出,会让思路更加清晰。
3
代码一
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
int main()
{
int yy,mm,dd,h,m,s;
int kk;
char time[2][19]={"am","pm"};
while(~scanf("%d",&kk)){
for(int i=1;i<=kk;i++){
scanf("%d/%d/%d-%d:%d:%d",&yy,&mm,&dd,&h,&m,&s);
int pm=0;
if(h==0){
h=12;
}
else if(h==12){
pm=1;
}
else if(h>=13&&h<=23){
h-=12;pm=1;
}
printf("%02d/%02d/%04d-%02d:%02d:%02d%s\n",mm,dd,yy,h,m,s,time[pm]);
}
}
}
代码二
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
const int maxn=100;
int main()
{
int t;
scanf("%d",&t);
while(t--){
char time[maxn];
scanf("%s",time);
for(int i=5;i<=9;i++){
cout<<time[i];
}
cout<<"/";
for(int i=0;i<=3;i++){
cout<<time[i];
}
cout<<"-";
int hour=time[11]-'0';
hour=(hour*10)+(time[12]-'0');
int pm=0;
if(hour>=13&&hour<=23){
hour-=12;
if(hour<=9)
cout<<"0"<<hour<<":";
else{
cout<<hour<<":";
}
pm=1;
}
else if(hour==0){
cout<<"12:";
}
else if(hour==12){
cout<<"12:";
pm=1;
}
else{
if(hour<=9)
cout<<"0"<<hour<<":";
else{
cout<<hour<<":";
}
}
for(int i=14;i<=15;i++){
cout<<time[i];
}
cout<<":";
for(int i=17;i<=18;i++){
cout<<time[i];
}
if(pm)cout<<"pm"<<endl;
else cout<<"am"<<endl;
}
}