鱼C论坛

 找回密码
 立即注册
查看: 668|回复: 1

[已解决]关于结构体问题

[复制链接]
发表于 2020-12-5 12:50:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
定义一个结构体变量(包括年 月 日),计算该年是一年中的第几天。
(提示 注意闰年问题)
最佳答案
2020-12-5 13:27:06
  1. #include <stdio.h>

  2. typedef struct date {
  3.         int year  ;
  4.         int month ;
  5.         int day   ;
  6. } DATE            ;

  7. int leapyear(int year)
  8. {
  9.         int r = 0                                                                         ;
  10.         if(! (year % 4) && (year < 1582 || year % 100 || ! (year % 400))) r = 1           ;
  11.         return r                                                                          ;
  12. }

  13. int mdays(int year , int month)
  14. {
  15.         int md[] = {31 , 28 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31} , r        ;
  16.         r = md[month - 1]                                                                 ;
  17.         if(leapyear(year) && month == 2) r ++                                             ;
  18.         if(year == 1582 && month == 10) r -= 10                                           ;
  19.         return r                                                                          ;
  20. }

  21. int days(DATE date)
  22. {
  23.         int k , r                                                                         ;
  24.         for(r = date . day , k = 1 ; k < date . month ; k ++) r += mdays(date . year , k) ;
  25.         return r                                                                          ;
  26. }

  27. int main(void)
  28. {
  29.         DATE date                                                                         ;
  30.         printf("year month day please :  ")                                               ;
  31.         scanf("%d%d%d" , & date . year , & date . month , & date . day)                   ;
  32.         printf("%d\n" , days(date))                                                       ;
  33. }
复制代码

        编译、运行实况:
  1. D:\00.Excise\C>g++ -o days days.c

  2. D:\00.Excise\C>days
  3. year month day please :  2020 12 5
  4. 340

  5. D:\00.Excise\C>
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-5 13:27:06 | 显示全部楼层    本楼为最佳答案   
  1. #include <stdio.h>

  2. typedef struct date {
  3.         int year  ;
  4.         int month ;
  5.         int day   ;
  6. } DATE            ;

  7. int leapyear(int year)
  8. {
  9.         int r = 0                                                                         ;
  10.         if(! (year % 4) && (year < 1582 || year % 100 || ! (year % 400))) r = 1           ;
  11.         return r                                                                          ;
  12. }

  13. int mdays(int year , int month)
  14. {
  15.         int md[] = {31 , 28 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31} , r        ;
  16.         r = md[month - 1]                                                                 ;
  17.         if(leapyear(year) && month == 2) r ++                                             ;
  18.         if(year == 1582 && month == 10) r -= 10                                           ;
  19.         return r                                                                          ;
  20. }

  21. int days(DATE date)
  22. {
  23.         int k , r                                                                         ;
  24.         for(r = date . day , k = 1 ; k < date . month ; k ++) r += mdays(date . year , k) ;
  25.         return r                                                                          ;
  26. }

  27. int main(void)
  28. {
  29.         DATE date                                                                         ;
  30.         printf("year month day please :  ")                                               ;
  31.         scanf("%d%d%d" , & date . year , & date . month , & date . day)                   ;
  32.         printf("%d\n" , days(date))                                                       ;
  33. }
复制代码

        编译、运行实况:
  1. D:\00.Excise\C>g++ -o days days.c

  2. D:\00.Excise\C>days
  3. year month day please :  2020 12 5
  4. 340

  5. D:\00.Excise\C>
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-11 21:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表