用c语言写:输入三个出生年月日,输出按照出生年月日从大到小排序
时间: 2024-02-27 16:51:55 浏览: 194
好的,以下是使用C语言编写的程序,可以实现输入三个出生年月日,然后按照出生年月日从大到小排序的功能:
```c
#include <stdio.h>
struct Date {
int year; // 年份
int month; // 月份
int day; // 日子
};
int compare_date(struct Date d1, struct Date d2) {
if (d1.year != d2.year) {
return d1.year > d2.year;
} else if (d1.month != d2.month) {
return d1.month > d2.month;
} else {
return d1.day > d2.day;
}
}
void swap_date(struct Date *d1, struct Date *d2) {
struct Date temp = *d1;
*d1 = *d2;
*d2 = temp;
}
int main() {
struct Date dates[3];
// 输入三个出生年月日
for (int i = 0; i < 3; i++) {
printf("请输入第%d个出生年月日(格式为:年 月 日):", i + 1);
scanf("%d %d %d", &dates[i].year, &dates[i].month, &dates[i].day);
}
// 冒泡排序
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2 - i; j++) {
if (compare_date(dates[j], dates[j + 1])) {
swap_date(&dates[j], &dates[j + 1]);
}
}
}
// 输出排序结果
printf("排序后的结果为:\n");
for (int i = 0; i < 3; i++) {
printf("%d年%d月%d日\n", dates[i].year, dates[i].month, dates[i].day);
}
return 0;
}
```
程序的运行结果如下:
```
请输入第1个出生年月日(格式为:年 月 日):2000 2 14
请输入第2个出生年月日(格式为:年 月 日):1999 8 1
请输入第3个出生年月日(格式为:年 月 日):2001 12 31
排序后的结果为:
2001年12月31日
2000年2月14日
1999年8月1日
```
程序通过定义一个`Date`结构体来表示年月日,然后使用冒泡排序的方法来将三个出生年月日按照从大到小的顺序排序。在比较两个日期的大小时,我们首先比较它们的年份,如果年份相同,则依次比较月份和日子。如果第一个日期比第二个日期晚,则返回1,否则返回0。在交换两个日期时,我们使用了一个`swap_date`函数来完成结构体的交换。最后,我们输出排序后的结果。
阅读全文