C语言运用结构体 指针函数写一个简单函数 int birth_cmp(struct birth birth1,struct birth birth2); (7分) 实现 2 个日期比较大小的函数:其中参数birth1和birth2存放2个生日的结构体变量,如果 birth1晚于 birth2,函数返回正数, 如果 birth1等于 birth2,函数返回 0, 如果 birth1早于 birth2,函数返回负数。
时间: 2024-03-04 14:48:46 浏览: 118
cmp函数的写法-排序和cmp函数(更新版)(1)
好的,我来为您解答。这是一个简单的 C 语言程序,其中用到了结构体和指针函数,实现了比较两个日期的大小。下面是代码:
```c
#include <stdio.h>
struct birth {
int year;
int month;
int day;
};
int birth_cmp(struct birth *birth1, struct birth *birth2) {
if (birth1->year > birth2->year) {
return 1;
} else if (birth1->year < birth2->year) {
return -1;
} else if (birth1->month > birth2->month) {
return 1;
} else if (birth1->month < birth2->month) {
return -1;
} else if (birth1->day > birth2->day) {
return 1;
} else if (birth1->day < birth2->day) {
return -1;
} else {
return 0;
}
}
int main() {
struct birth birth1 = {1990, 12, 31};
struct birth birth2 = {1990, 12, 30};
int result = birth_cmp(&birth1, &birth2);
printf("result: %d\n", result);
return 0;
}
```
在这个程序中,我们定义了一个结构体 `birth`,它包含年、月、日三个字段。接着,我们定义了一个指针函数 `birth_cmp`,该函数接收两个 `birth` 结构体的指针作为参数,返回一个整型值表示两个日期的大小关系。具体实现如下:
- 首先比较两个日期的年份,如果 birth1 的年份大于 birth2 的年份,则返回正数 1,反之则返回负数 -1。
- 如果两个日期的年份相同,则比较月份,如果 birth1 的月份大于 birth2 的月份,则返回正数 1,反之则返回负数 -1。
- 如果两个日期的月份也相同,则比较日份,如果 birth1 的日份大于 birth2 的日份,则返回正数 1,反之则返回负数 -1。
- 如果两个日期的年份、月份、日份都相同,则返回 0,表示两个日期相等。
在主函数中,我们定义了两个 `birth` 结构体变量 birth1 和 birth2,并将它们传递给 birth_cmp 函数进行比较。最后,我们输出了比较结果 result 的值。
希望我的回答能够解决您的问题,如有疑问请随时提出。
阅读全文