定义一个时间结构体变量(包括小时,分,秒)。编写几个函数分别实现以下功能: (1)加法运算:时间结构
(1)加法运算:时间结构体变量加秒数,返回新的时间结构体变量;(2)减法运算:两个时间结构体变量相减,返回其相隔的秒数;(3)减法运算:时间结构体变量减秒数,返回新的时间...
(1)加法运算:时间结构体变量加秒数,返回新的时间结构体变量;
(2)减法运算:两个时间结构体变量相减,返回其相隔的秒数;
(3)减法运算:时间结构体变量减秒数,返回新的时间结构体变量; 展开
(2)减法运算:两个时间结构体变量相减,返回其相隔的秒数;
(3)减法运算:时间结构体变量减秒数,返回新的时间结构体变量; 展开
2个回答
展开全部
#include <stdio.h>
typedef struct{
int hour;
int minute;
int second;
} Time;
Time *add_time(Time *pt1, Time *pt2)
{
Time *temp=(Time *) malloc(sizeof(Time));
int carry=0;
temp->second=pt1->second+pt2->second;
if(temp->second>=60)
{
temp->second-=60;
carry=1;
}
else
carry=0;
temp->minute=pt1->minute+pt2->minute+carry;
if(temp->minute>=60)
{
temp->minute-=60;
carry=1;
}
else
carry=0;
temp->hour=pt1->hour+pt2->hour+carry;
return temp;
}
Time *sub_time(Time *pt1, Time *pt2)
{
Time *temp=(Time *) malloc(sizeof(Time));
int carry=0;
temp->second=pt1->second-pt2->second;
if(temp->second<0)
{
temp->second+=60;
carry=-1;
}
else
carry=0;
temp->minute=pt1->minute-pt2->minute+carry;
if(temp->minute<0)
{
temp->minute+=60;
carry=-1;
}
temp->hour=pt1->hour-pt2->hour+carry;
if(temp->hour<0)
{
printf("Error!\n");
return NULL;
}
else
return temp;
}
Time *sub_sec_time(Time *pt, int sec)
{
Time *temp=(Time *)malloc(sizeof(Time));
int carry=0;
temp->second=pt->second-sec;
if(temp->second<0)
{
temp->second+=60;
carry=-1;
}
else
carry=0;
temp->minute=pt->minute+carry;
if(temp->minute<0)
{
temp->minute+=60;
carry=-1;
}
else
carry=0;
temp->hour=pt->hour+carry;
if(temp->hour<0)
{
printf("Error!\n");
return NULL;
}
else
return temp;
}
typedef struct{
int hour;
int minute;
int second;
} Time;
Time *add_time(Time *pt1, Time *pt2)
{
Time *temp=(Time *) malloc(sizeof(Time));
int carry=0;
temp->second=pt1->second+pt2->second;
if(temp->second>=60)
{
temp->second-=60;
carry=1;
}
else
carry=0;
temp->minute=pt1->minute+pt2->minute+carry;
if(temp->minute>=60)
{
temp->minute-=60;
carry=1;
}
else
carry=0;
temp->hour=pt1->hour+pt2->hour+carry;
return temp;
}
Time *sub_time(Time *pt1, Time *pt2)
{
Time *temp=(Time *) malloc(sizeof(Time));
int carry=0;
temp->second=pt1->second-pt2->second;
if(temp->second<0)
{
temp->second+=60;
carry=-1;
}
else
carry=0;
temp->minute=pt1->minute-pt2->minute+carry;
if(temp->minute<0)
{
temp->minute+=60;
carry=-1;
}
temp->hour=pt1->hour-pt2->hour+carry;
if(temp->hour<0)
{
printf("Error!\n");
return NULL;
}
else
return temp;
}
Time *sub_sec_time(Time *pt, int sec)
{
Time *temp=(Time *)malloc(sizeof(Time));
int carry=0;
temp->second=pt->second-sec;
if(temp->second<0)
{
temp->second+=60;
carry=-1;
}
else
carry=0;
temp->minute=pt->minute+carry;
if(temp->minute<0)
{
temp->minute+=60;
carry=-1;
}
else
carry=0;
temp->hour=pt->hour+carry;
if(temp->hour<0)
{
printf("Error!\n");
return NULL;
}
else
return temp;
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
减法
#include "stdafx.h"
int main(int argc, char* argv[])
{
int h, m, s;
turning: scanf("%d %d %d", &h, &m, &s);
if(h>=24)
{
printf("你输入的数不符合要求。\n");
goto turning;
}
else
{
if(m>=60)
{
printf("你输入的数不符合要求。\n");
goto turning;
}
else
{
if(s>=60)
{
//printf("你输入的数不符合要求。\n");
goto turning;
}
else
{
//printf("请再输入一组数。\n");
}
}
}
int h1, m1, s1;
scanf("%d %d %d", &h1, &m1, &s1);
if(h1>=24)
{
printf("你输入的数不符合要求。\n");
goto turning;
}
else
{
if(m1>=60)
{
printf("你输入的数不符合要求。\n");
goto turning;
}
else
{
if(s1>=60)
{
printf("你输入的数不符合要求。\n");
goto turning;
}
else
{
printf("输入正确!\n");
}
}
}
if(s<s1)
{
s=s+60;
m=m-1;
}
else
{
if(m<m1)
{
m=m+60;
h=h-1;
}
else
{
if(h<h1)
{
printf("得出的时间为负数,不符合规则!\n");
goto turning;
}
}
}
int h2, m2, s2;
h2=h-h1;
m2=m-m1;
s2=s-s1;
if(m2<0)
{
m2=m2+60;
h2=h2-1;
} //如果不这样的话那就会出现负数了。
printf("得出的时间为:%d:%d:%d\n", h2, m2, s2);
return 0;
}
#include "stdafx.h"
int main(int argc, char* argv[])
{
int h, m, s;
turning: scanf("%d %d %d", &h, &m, &s);
if(h>=24)
{
printf("你输入的数不符合要求。\n");
goto turning;
}
else
{
if(m>=60)
{
printf("你输入的数不符合要求。\n");
goto turning;
}
else
{
if(s>=60)
{
//printf("你输入的数不符合要求。\n");
goto turning;
}
else
{
//printf("请再输入一组数。\n");
}
}
}
int h1, m1, s1;
scanf("%d %d %d", &h1, &m1, &s1);
if(h1>=24)
{
printf("你输入的数不符合要求。\n");
goto turning;
}
else
{
if(m1>=60)
{
printf("你输入的数不符合要求。\n");
goto turning;
}
else
{
if(s1>=60)
{
printf("你输入的数不符合要求。\n");
goto turning;
}
else
{
printf("输入正确!\n");
}
}
}
if(s<s1)
{
s=s+60;
m=m-1;
}
else
{
if(m<m1)
{
m=m+60;
h=h-1;
}
else
{
if(h<h1)
{
printf("得出的时间为负数,不符合规则!\n");
goto turning;
}
}
}
int h2, m2, s2;
h2=h-h1;
m2=m-m1;
s2=s-s1;
if(m2<0)
{
m2=m2+60;
h2=h2-1;
} //如果不这样的话那就会出现负数了。
printf("得出的时间为:%d:%d:%d\n", h2, m2, s2);
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询