设计函数days( )函数实现第1题的计算。由主函数将日期(年月日)传递给days( )函数,计算后将日子数传回主函数输出。要求三种实现方式:
a)用结构体成员作为形式参数。
b)用结构体变量作为形式参数。
c)用指向结构体变量的指针作为形式参数。
设计函数days( )函数实现第1题的计a)用结构体成员作为形式参数。 b)用结构体变量作为形式参数。 c)用指向结构体变量的指针作为形式参数。
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- 阿里嘎多学长 2023-04-08 17:23关注
以下内容部分参考ChatGPT模型:
思路:
首先定义一个结构体类型Date,包含年、月、日三个成员。
编写函数days( ),用于计算日期距离1900年1月1日的天数。可以使用循环结构,根据年份判断是否是闰年,然后累加月份天数和日数即可。
编写主函数,分别测试三种实现方式。对于第一种方式,直接将结构体成员作为参数传递;对于第二种方式,先定义一个结构体变量,将日期赋值给结构体变量,再将结构体变量作为参数传递;对于第三种方式,先定义一个结构体指针变量,将指针指向结构体变量,再将指针作为参数传递。
示例代码:
#include <stdio.h> typedef struct Date { int year; int month; int day; } Date; // 计算日期距离1900年1月1日的天数 int days(Date date) { int monthDays[12] = {31,28,31,30,31,30,31,31,30,31,30,31}; // 每个月份的天数 int days = 0; for (int y = 1900; y < date.year; y++) { // 计算年份之间的天数 if (y % 400 == 0 || (y % 4 == 0 && y % 100 != 0)) { // 判断是否是闰年 days += 366; } else { days += 365; } } for (int m = 1; m < date.month; m++) { // 计算月份之间的天数 if (m == 2 && (date.year % 400 == 0 || (date.year % 4 == 0 && date.year % 100 != 0))) { // 判断闰年二月天数 days += 29; } else { days += monthDays[m-1]; } } days += date.day - 1; // 加上当月的天数 return days; } int main() { // 测试第一种方式:结构体成员作为参数 Date date1 = {2022, 7, 17}; int days1 = days(date1); printf("%d\n", days1); // 测试第二种方式:结构体变量作为参数 Date date2 = {2022, 7, 18}; int days2 = days(date2); printf("%d\n", days2); // 测试第三种方式:指向结构体变量的指针作为参数 Date date3 = {2022, 7, 19}; Date *pDate = &date3; int days3 = days(*pDate); printf("%d\n", days3); return 0; }
如果我的建议对您有帮助、请点击采纳、祝您生活愉快
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 GDI处理通道视频时总是带有白色锯齿
- ¥20 用雷电模拟器安装百达屋apk一直闪退
- ¥15 算能科技20240506咨询(拒绝大模型回答)
- ¥15 自适应 AR 模型 参数估计Matlab程序
- ¥100 角动量包络面如何用MATLAB绘制
- ¥15 merge函数占用内存过大
- ¥15 Revit2020下载问题
- ¥15 使用EMD去噪处理RML2016数据集时候的原理
- ¥15 神经网络预测均方误差很小 但是图像上看着差别太大
- ¥15 单片机无法进入HAL_TIM_PWM_PulseFinishedCallback回调函数