谢鱼_123 2023-04-08 14:13 采纳率: 69.2%
浏览 22
已结题

设计函数days( )函数实现第1题的计a)用结构体成员作为形式参数。 b)用结构体变量作为形式参数。 c)用指向结构体变量的指针作为形式参数。

设计函数days( )函数实现第1题的计算。由主函数将日期(年月日)传递给days( )函数,计算后将日子数传回主函数输出。要求三种实现方式:
a)用结构体成员作为形式参数。
b)用结构体变量作为形式参数。
c)用指向结构体变量的指针作为形式参数。

  • 写回答

3条回答 默认 最新

  • 阿里嘎多学长 2023-04-08 17:23
    关注

    以下内容部分参考ChatGPT模型:


    思路:

    1. 首先定义一个结构体类型Date,包含年、月、日三个成员。

    2. 编写函数days( ),用于计算日期距离1900年1月1日的天数。可以使用循环结构,根据年份判断是否是闰年,然后累加月份天数和日数即可。

    3. 编写主函数,分别测试三种实现方式。对于第一种方式,直接将结构体成员作为参数传递;对于第二种方式,先定义一个结构体变量,将日期赋值给结构体变量,再将结构体变量作为参数传递;对于第三种方式,先定义一个结构体指针变量,将指针指向结构体变量,再将指针作为参数传递。

    示例代码:

    #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;
    }
    

    如果我的建议对您有帮助、请点击采纳、祝您生活愉快

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月17日
  • 已采纳回答 4月9日
  • 创建了问题 4月8日

悬赏问题

  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 AT89C51控制8位八段数码管显示时钟。
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题