习题9-1 时间换算 (15 分)
本题要求编写程序,以hh:mm:ss
的格式输出某给定时间再过n
秒后的时间值(超过23:59:59就从0点开始计时)。
输入格式:
输入在第一行中以hh:mm:ss
的格式给出起始时间,第二行给出整秒数n
(<60)。
输出格式:
输出在一行中给出hh:mm:ss
格式的结果时间。
输入样例:
11:59:40
30
输出样例:
12:00:10
代码如下:
#include "stdio.h"
#include "stdlib.h"
/*分解字符串到结构*/
void change_time(char *p,int *q)
{
int i,j=0,sum=0;
while(1)
{
if(*p!=':'&&*p!='\0')
{
i=*p-'0';
sum=sum*10+i;
}
else
{
q[j]=sum;
sum=0;
j++;
}
if(*p=='\0') break;
p++;
}
}
/*计算时间*/
void calculation_time(int n,int *q)
{
if(q[2]+n>=60)
{
q[2]=q[2]+n-60;
q[1]++;
}
else
q[2]=q[2]+n;
if(q[1]>=60)
{
q[1]=q[1]-60;
q[0]++;
}
if(q[0]>=24)
q[0]=q[0]-24;
}
/*输出时间*/
void pout_time(int *q)
{
int i;
for(i=0;i<3;i++)
{
if(i==0)
{
if(q[i]<10)
printf("0%d",q[i]);
else
printf("%d",q[i]);
}
else
{
if(q[i]<10)
printf(":0%d",q[i]);
else
printf(":%d",q[i]);
}
}
printf("\n\n");
}
/*主函数*/
int main()
{
printf("******时间计算******\n\n");
printf("输入时间:\n");
printf("格式: hh:mm:ss: ex:11:59:40\n");
char time[10]={0};
int n,num_time[3]={0};
gets(time);
printf("输入增加的秒数[0-60]: ");
scanf("%d",&n);
change_time(time,num_time);
printf("\n");
calculation_time(n,num_time);
pout_time(num_time);
system("pause");
}