图片说明
下面是该题的输入输出样例
格式
输入格式
输入两行
第一行一个整数 n 代表本场题目数量(1<=n<=10)
第二行一个字符串代表某一位选手的榜,格式为选手昵称(不超过10个字符)和各个题目的过题时间;
如果这题没通过,时间显示为0(众所周知不可能有人0s过题)
一场ACM比赛时间为5小时

输出格式
输出一行表示这位选手的榜换算成正常显示时间的榜单,(未通过的题目依旧显示0即可)

样例
样例输入 Copy
10
顺十字 3600 3660 7200 300 0 1500 2600 4561 2345 8945
样例输出 Copy
顺十字 01:00:00 01:01:00 02:00:00 00:05:00 0 00:25:00 00:43:20 01:16:01 00:39:05 02:29:05

题目难度并不大,但是题目需要考虑的情况比较多,分享一下当时参赛的代码。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int n,a[10];
int b[10],c[10],d[10];
char s[30];
scanf("%d",&n);
scanf("%s",&s);
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(int i=0;i<n;i++)
{
if(a[i]>=3600)
{
b[i]=a[i]/3600;
c[i]=(a[i]-b[i]*3600)/60;
d[i]=a[i]%60;
}
else if(a[i]<3600 && a[i]>=60)
{
b[i]=0;
c[i]=a[i]/60;
d[i]=a[i]%60;
}
else if(0<a[i]<60)
{
b[i]=0;
c[i]=0;
d[i]=0;
}
if(a[i]==0)
{
b[i]=0;
c[i]=0;
d[i]=0;
}
}
printf("%s ",s);
for(int i=0;i<n;i++)
{
if(b[i]==0 && c[i]==0 && d[i]==0)
{
printf("0 ");
continue;
}
if(b[i]<10)
printf("0%d:",b[i]);
else
printf("%d:",b[i]);
if(c[i]<10)
printf("0%d:",c[i]);
else
printf("%d:",c[i]);
if(d[i]<10)
printf("0%d ",d[i]);
else
printf("%d ",d[i]);
}
return 0;
}

需要注意时间为0的情况以及各种特殊情况的输出,题目逻辑并不难,需要注意的是题目的输出格式一致的问题。