花了大半天才做出来这道题,不过最后能运行成功且符合要求感觉就还好。
个人感觉难点在于输出格式的控制(毕竟用的不是scanf而是cout,如果是scanf可以直接控制),如果cout输出需要使用setw和setfill函数,分别是控制输出数据的长度和补充的字符(如果数据长度小于控制长度)
#include <iostream>
#include<string.h>
#include <iomanip>
using namespace std;
int main()
{
int i,j=0,year,month,day,hour,minute,second,k,l;
int num[10][6];
char b='/';
char c='-';
char d=':';
char a[3]="am";
cin>>i;
while(i)
{
cin>>year>>b>>month>>b>>day>>c>>hour>>d>>minute>>d>>second;
num[j][0]=year;
num[j][1]=month;
num[j][2]=day;
num[j][3]=hour;
num[j][4]=minute;
num[j][5]=second;
i--;
j++;
}
for(i=0;i<j;i++)
{
strcpy(a,"am");
if(num[i][3]==12)
{
num[i][3]=12;
strcpy(a,"pm");
}
if(num[i][3]>=13)
{
strcpy(a,"pm");
num[i][3]=num[i][3]-12;
}
if(num[i][3]==0)
{
num[i][3]=12;
}
cout<<setw(2)<<setfill('0')<<num[i][1]<<"/"<<setw(2)<<setfill('0')<<num[i][2]<<"/";
cout<<setw(4)<<setfill('0')<<num[i][0]<<"-";
cout<<setw(2)<<setfill('0')<<num[i][3]<<":"<<setw(2)<<setfill('0')<<num[i][4]<<":"<<setw(2)<<setfill('0')<<num[i][5];
cout<<a<<endl;
}
return 0;
}