这是一个C语言结构体示例程序:设计一个函数,用来比较输入的两个日期的迟早,日期定义为结构体类型。
日期包含年月日三部分,因而我们可以声明一个包含 year、month、day 三个成员的结构体 date,用来表示日期:
struct date{
int year;
int month;
int day;
};
用于比较日期 A 和 B 迟早的函数定义为:
int compare(struct date A,struct date B)
当函数返回值为 1 时表示日期 A 早于日期 B,返回值为 0 时表示日期 A 迟于或等于日期 B。显然不能对两个结构体对象 A、B 直接进行比较,而要按照其成员的具体时间意义逐个进行比较处理。如果 A 的年份成员 A.year 小于 B 的年份成员 B.year,则日期 A 比较早,函数返回 1;当 A、B 的年份成员 year 相同时,则比较其月份成员 month;当年份成员 year和月份成员 month 都相同时,则比较日期成员 day。
代码清单 1:按(1970-6-1)格式输入两个日期,比较迟早
#include <stdio.h>
#include <stdlib.h>
struct date{ //声明结构体date用于表示日期
int year;
int month;
int day;
};
/*--自定义函数:比较两个日期A和B,A早则返回1,否则返回0--*/
int compare(struct date A,struct date B){
if(A.year<B.year)
return 1;
if(A.year==B.year && A.month<B.month)
return 1;
if(A.year==B.year && A.month==B.month && A.day<B.day)
return 1;
return 0;
}
/*--主函数--*/
int main()
{
struct date x,y; //定义两个date结构体对象x和y
printf("输入日期X(yyyy-mm-dd):");
scanf("%d-%d-%d",&x.year,&x.month,&x.day);
printf("输入日期Y(yyyy-mm-dd):");
scanf("%d-%d-%d",&y.year,&y.month,&y.day);
if(compare(x,y))
printf("日期X比较早!");
else
printf("日期Y比较早!");
system("pause");
return 0;
}
运行结果为:
输入日期X(yyyy-mm-dd):2019-08-14
输入日期Y(yyyy-mm-dd):1996-06-02
日期Y比较早!