C语言【问题描述】编写一个函数elapsed_time(),该函数将两个时间结构作为其参数,并返回一个时间结构,返回的时间结构表示两次之间的经过时间(以小时,分钟和秒为单位)。在主程序中调用elapsed_time(time1,time2),其中time1表示03:45:15,time2表示09:44:03,应返回一个表示05:58:48的时间结构。注意24小时计时。参考PPT19页(TIPS:在整形读入时,%i读取0开头的整数时,会识别成八进制,从而无法读取,所以本题目中scanf读取十进制数时采用%d)
时间: 2023-06-27 13:01:41 浏览: 142
下面是一个实现了elapsed_time函数的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
struct time{
int hours;
int minutes;
int seconds;
};
struct time elapsed_time(struct time time1, struct time time2){
struct time result;
int t1_seconds = time1.hours * 3600 + time1.minutes * 60 + time1.seconds;
int t2_seconds = time2.hours * 3600 + time2.minutes * 60 + time2.seconds;
int elapsed_seconds = t2_seconds - t1_seconds;
if(elapsed_seconds < 0){ // 如果time2在time1之前
elapsed_seconds += 24 * 3600; // 加上一天的秒数
}
result.hours = elapsed_seconds / 3600;
elapsed_seconds %= 3600;
result.minutes = elapsed_seconds / 60;
elapsed_seconds %= 60;
result.seconds = elapsed_seconds;
return result;
}
int main(){
struct time time1 = {3, 45, 15};
struct time time2 = {9, 44, 3};
struct time result = elapsed_time(time1, time2);
printf("%02d:%02d:%02d", result.hours, result.minutes, result.seconds);
return 0;
}
```
运行结果为:
```
05:58:48
```
代码中,elapsed_time函数接收两个time结构体作为参数,表示两个时间点。函数首先将两个时间点转化为秒数,然后计算两个时间点之间的秒数差,如果time2在time1之前,就要加上一天的秒数。最后,将秒数差转化为小时、分钟和秒,用一个新的time结构体表示这段时间,并返回。在主函数中,我们调用了elapsed_time函数,并将返回值打印出来。
阅读全文