定义一个时间结构体,成员包括时,分,秒编写一个函数用来比较两个时间的大小 定义一个时间结构体,成员包括时,分,秒,如何编写一个函数用来...

作者&投稿:允卞 (若有异议请与网页底部的电邮联系)

//c语言写的

//定义一个时间结构体,成员包括时,分,秒编写一个函数用来比较两个时间的大小

#include <stdio.h>

void main()

{

 struct ho_mi_se 

 {

  int hour;

  int min;

  int second;

 };

 struct ho_mi_se ho_mi_se1;

 struct ho_mi_se ho_mi_se2;

 printf("输入第一时间的时(0--23):");

 scanf("%d/n",&(ho_mi_se1.hour));

 printf("输入第一时间的分(0--59):");

 scanf("%d/n",&(ho_mi_se1.min));

 printf("输入第一时间的秒(0--59):");

 scanf("%d/n",&(ho_mi_se1.second));

 printf("输入第二时间的时(0--23):");

 scanf("%d/n",&(ho_mi_se2.hour));

 printf("输入第二时间的分(0--59):");

 scanf("%d/n",&(ho_mi_se2.min));

 printf("输入第二时间的秒(0--59):");

 scanf("%d/n",&(ho_mi_se2.second));

 if(ho_mi_se2.hour>ho_mi_se1.hour)

 {

  printf("第二时间比第一时间大:%d:%d:%d>%d:%d:%d",ho_mi_se2.hour, ho_mi_se2.min,

   ho_mi_se2.second,ho_mi_se1.hour,ho_mi_se1.min,ho_mi_se1.second);

 }

 else if(ho_mi_se2.min>ho_mi_se1.min)

 {

  printf("第二时间比第一时间大:%d:%d:%d>%d:%d:%d",ho_mi_se2.hour,ho_mi_se2.min,

   ho_mi_se2.second,ho_mi_se1.hour,ho_mi_se1.min,ho_mi_se1.second);

 }

 else if(ho_mi_se2.second>ho_mi_se1.second)

 {

  printf("第二时间比第一时间大:%d:%d:%d>%d:%d:%d",ho_mi_se2.hour,ho_mi_se2.min,

   ho_mi_se2.second,ho_mi_se1.hour,ho_mi_se1.min,ho_mi_se1.second);

 }else

 {

  if((ho_mi_se2.hour==ho_mi_se1.hour)&&(ho_mi_se2.min==ho_mi_se1.min)&&(ho_mi_se2.second==ho_mi_se1.second))

  {

   printf("第二时间和第一时间相等:%d:%d:%d=%d:%d:%d",ho_mi_se2.hour,ho_mi_se2.min,

    ho_mi_se2.second,ho_mi_se1.hour,ho_mi_se1.min,ho_mi_se1.second);

  }

  else

  {

  printf("第二时间比第一时间小:%d:%d:%d<%d:%d:%d",ho_mi_se2.hour,ho_mi_se2.min,

   ho_mi_se2.second,ho_mi_se1.hour,ho_mi_se1.min,ho_mi_se1.second);

  }

 }

 system("pause");

}



请问输入时间时有什么要求吗?

#include<stdio.h>

struct time

{

int hour;

int minute;

int sec;

};

time t1,t2;

int main()

{

scanf("%d %d %d",&t1.hour,&t1.minute,&t1.sec);

scanf("%d %d %d",&t2.hour,&t2.minute,&t2.sec);

if(t1.hour>t2.hour)

{

printf("(%d:%d:%d)",t1.hour,t1.minute,t1.sec);

printf("  >  ");

printf("(%d:%d:%d)",t2.hour,t2.minute,t2.sec);

}

else if(t1.hour<t2.hour)

{

printf("(%d:%d:%d)",t1.hour,t1.minute,t1.sec);

printf("  <  ");

printf("(%d:%d:%d)",t2.hour,t2.minute,t2.sec);

}

else if(t1.minute>t2.minute)

{

printf("(%d:%d:%d)",t1.hour,t1.minute,t1.sec);

printf("  >  ");

printf("(%d:%d:%d)",t2.hour,t2.minute,t2.sec);

}

else if(t1.minute<t2.minute)

{

printf("(%d:%d:%d)",t1.hour,t1.minute,t1.sec);

printf("  <  ");

printf("(%d:%d:%d)",t2.hour,t2.minute,t2.sec);

}

else if(t1.sec>t2.sec)

{

printf("(%d:%d:%d)",t1.hour,t1.minute,t1.sec);

printf("  >  ");

printf("(%d:%d:%d)",t2.hour,t2.minute,t2.sec);

}

else if(t1.sec<t2.sec)

{

printf("(%d:%d:%d)",t1.hour,t1.minute,t1.sec);

printf("  <  ");

printf("(%d:%d:%d)",t2.hour,t2.minute,t2.sec);

}

else

{printf("(%d:%d:%d)",t1.hour,t1.minute,t1.sec);

printf("  =  ");

printf("(%d:%d:%d)",t2.hour,t2.minute,t2.sec);

}

}



我试一下,呵呵。其实很简单的,对时间结构体重载一下<和>号,至于时间大小的具体判断方法是可以把时分秒都换算成秒来比较。代码如下:
struct MyTime
{
int m_isec; //秒
int m_imin; //分
int m_ihour; //时
int GetSecond() //将时间格式转换成秒
{
return m_isec+m_imin*60+m_ihour*3600;
}
friend bool operator < (const MyTime&,const MyTime&);
friend bool operator > (const MyTime&,const MyTime&);
};
bool operator < (const MyTime & argtm1,const MyTime &argtm2)
{
MyTime tm1,tm2;
tm1=argtm1;
tm2=argtm2;
return tm1.GetSecond()-tm2.GetSecond()<0;
}
bool operator > (const MyTime & argtm1,const MyTime & argtm2)
{
MyTime tm1,tm2;
tm1=argtm1;
tm2=argtm2;
return tm1.GetSecond()-tm2.GetSecond()>0;
}

// 定义一个时间结构体,成员包括时,分,秒编写一个函数用来比较两个时间的大小
#include "stdlib.h"
typedef struct{
int hour; // >0
int minute; // 0-59
int second; // 0-59
}time_t;
// if t1 > t2, return > 0
// if t1 = t2, return = 0
// if t1 < t2, return < 0
int timecmp( time_t t1, time_t t2 )
{
int hour_diff = t1.hour - t2.hour;
int minute_diff = t1.minute - t2.minute;
int second_diff = t1.second - t2.second;
// equal
if( !hour_diff && !minute_diff && !second_diff ){
return 0;
}
// big
if( (hour_diff > 0)
|| ((!hour_diff)&&(minute_diff>0))
|| ((!hour_diff)&&(!minute_diff)&&(second_diff>0)) ){
return 1;
}
// small
if( (hour_diff < 0)
|| ((!hour_diff)&&(minute_diff<0))
|| ((!hour_diff)&&(!minute_diff)&&(second_diff<0)) ){
return -1;
}
}
void timecmpprt( time_t t1, time_t t2 )
{
int result = timecmp(t1,t2);
printf("%d:%d:%d", t1.hour, t1.minute, t1.second);
if( result > 0 ){
printf(" > ");
}else if( result == 0 ){
printf(" = ");
}else{
printf(" < ");
}
printf("%d:%d:%d
", t2.hour, t2.minute, t2.second);
}
int main(int argc, char const *argv[])
{
time_t t1 = {100,24,53};
time_t t2 = {100,24,53};
time_t t3 = {150,24,53};
time_t t4 = {100,16,53};
timecmpprt(t1,t2);
timecmpprt(t1,t3);
timecmpprt(t1,t4);
return 0;
}


用c++编写一个时间类Time,包含时,分,秒3个数据成员~

#include
classTimer
{
longsecond;
public:
Timer(intsecond)
{
this->second=second;
}
Timer(intminute,intsecond)
{
this->second=minute*60+second;
}
Timer(inthour,intminute,intsecond)
{
this->second=hour*60+minute*60+second;
}
intgetSecond()
{
returnsecond;
}
};
voidmain()
{
Timert1(45),t2(10,25),t3(1,4,10),t4(2,16,0);
cout<<"Fromt1tot2:"<<t2.getSecond()-t1.getSecond()<<endl;
cout<<"Fromt3tot4:"<<t4.getSecond()-t3.getSecond()<<endl;
}

扩展资料
定义一个日期类:包括年、月、日三个成员变量,显示日期的方法
publicclassDemo{

publicstaticvoidmain(String[]args){
Datedate1=newDate(1994,5,22);
date1.showInfo();
Datedate2=newDate();
date2.year=1995;
date2.month=6;
date2.day=29;
date2.showInfo();
}

}

//日期类:

publicclassDate{
intyear;
intmonth;
intday;

//构造方法
publicDate(intyear,intmonth,intday){
this.year=year;
this.month=month;
this.day=day;
}
publicDate(){

}

publicvoidshowInfo(){
System.out.println(year+"年"+month+"月"+day+"日");
}
}

我试一下,呵呵。其实很简单的,对时间结构体重载一下号,至于时间大小的具体判断方法是可以把时分秒都换算成秒来比较。代码如下:
struct MyTime
{
int m_isec; //秒
int m_imin; //分
int m_ihour; //时
int GetSecond() //将时间格式转换成秒
{
return m_isec+m_imin*60+m_ihour*3600;
}
friend bool operator < (const MyTime&,const MyTime&);
friend bool operator > (const MyTime&,const MyTime&);
};
bool operator < (const MyTime & argtm1,const MyTime &argtm2)
{
MyTime tm1,tm2;
tm1=argtm1;
tm2=argtm2;
return tm1.GetSecond()-tm2.GetSecond()<0;
}
bool operator > (const MyTime & argtm1,const MyTime & argtm2)
{
MyTime tm1,tm2;
tm1=argtm1;
tm2=argtm2;
return tm1.GetSecond()-tm2.GetSecond()>0;
}

关于typedef 结构体的定义
答:不过也许还有其他符合语法的做法可以在避免使用Atag的情况下,成功定义一个含有指向自身的指针成员的结构体的。不过我一时想不出来,这个你再问问别人吧呵呵。=-=== Noname1.c: In function `main':Noname1.c:8: error: syntax error before "A"Noname1.c:8: warning: no semicolon at end ...

C++中什么时候用类?什么时候用结构体?
答:C++中类和结构体的意义是一样的,只不过一个成员缺省为private,一个为public 保留结构体这样的定义只是为了和C兼容 像 struct Test{ int pu;private:int pr;};和 class Test{ int pr;public:int pu;};这2个Test是完全等价的

c++结构体的意义是什么?在小学信息学奥林匹克竞赛里有什么用处?_百度...
答:数组名称是常量指针,所以不可以做为左值进行运算,所以数组之间就不能通过数组名称相互复制了,即使数据类型和数组大小完全相同。定义结构体使用struct修饰符,例如:struct test { float a;int b;};上面的代码就定义了一个名为test的结构体,它的数据类型就是test,它包含两个成员a和b,成员a的数据...

什么是结构体变量?
答:可以容纳30个字符 };//最后有一个分号 这样,程序设计者就声明了一个新的结构体类型Student(struct是声明结构体类型时所必须使用的关键字,不能省略),它向编译系统声明: 这是一种结构体类型,它包括num, name, sex, age, score, addr等不同类型的数据项。应当说明Student是一个类型名,...

c语言可以使用什么定义复合句?
答:在C语言中,可以使用结构体(struct)来定义复合句。结构体是一种用户自定义的数据类型,可以将不同类型的数据组合在一起形成一个新的数据类型。结构体可以包含多个成员,每个成员可以是不同的数据类型,包括基本数据类型和其他结构体类型。例如,下面是一个简单的结构体定义示例:struct Person {char name...

数据结构
答:结构是元素之间的关系的集合。通常来说,一个数据结构DS 可以表示为一个二元组: ?DS=(D,S), //i.e., data-structure=(data-part,logic-structure-part) 这里D是数据元素的集合(或者是“结点”,可能还含有“数据项”或“数据域”),S是定义在D(或其他集合)上的关系的集合,S = { R | R : D×D×....

“结构”这一词语怎么解释
答:C++控制台输出例子: #include <cstdlib> #include <iostream> //定义结构体 struct point { //包含两个变量成员 int x; int y; }; using namespace std; int main(int argc, char *argv[]) { point pt; pt.x=1; pt.y=2; cout<<pt.x<<endl<<pt.y<<endl; return EXIT_SUCCESS; } 在表达式...

结构体变量与结构体成员能同名吗?
答:结构体,在C++中,是一个类而已。所以,不管是类,还是结构体,它产生的对象名,其实是可以与成员同名的。所以A是错的。而B和C,因为编译器根本不会为结构体分配内存,而只是为结构体变量分配内存。例如:struct Student { int num;int age;char sex;} void main(){ cout<<sizeof(Student)<<...

请问C语言中定义数据类型的有哪些词啊,应该在什么情况下用到?_百度...
答:这样看来,结构型与数组类似,数组变量是多个同类型变量的代表,它包含了多个数组元素,而结构型变量是多个不同类型变量的代表,它包含了多个成员变量。union定义一个联合体。联合型变量也包含了多个成员变量,但它们共享存储单元,这就意味着在某个时刻只有一个成员变量是真正可以使用的。有时可以利用一个...

定义结构体时结构体内的char类型占几个字节
答:一个字节,内存字节对齐其实就是方便CPU对内存的访问。字节对齐的细节和具体编译器实现相关。