鱼C论坛

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

[萌新报道] 本人写的最傻逼的程序

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

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

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

x
  1. <div>
  2. </div>
复制代码
本人自学了几周,这是我打的第一个最长,最傻逼的程序,希望能给好的建议
#include <stdio.h>

void main()
{
        int year, leap, month, day, o;
        scanf("%d%d%d", &year, &month, &day);
        if(year%4==0)
        {
                if(year%100==0)
                {
                        if(year%400==0)
                        {
                                leap = 1;
                        }
                        else
                        {
                                leap = 0;
                        }
                }
                else
                {
                        leap = 1;
                }
        }
        else
        {
                leap = 0;
        }
        if(leap == 1)
        {
                if(month>3)
                {
                        day += 1;
                }
        }
        else if(leap == 0);
    {
                if(month>3)
                {
                        day = day;
                }
        }
        switch(leap)
        {
        case 1:
                o = 29;
        case 0:
                o = 28;
        }
        if(month == 1)
        {
                printf(" %d the %d day", year, day);
        }
        else if(month == 2)
        {
                day = 31+day;
                printf(" %d the %d day", year, day);
        }
        else if(month == 3)
        {
                day = 31+o+day;
                printf(" %d the %d day", year, day);
        }
        else if(month == 4)
        {
                day = 31*2+o+day;
                printf(" %d the %d day", year, day);
        }
        else if(month == 5)
        {
                day = 31*2+30+o+day;
            printf(" %d the %d day", year, day);
        }
        else if(month == 6)
        {
                day = 31*3+30+o+day;
                printf(" %d the %d day", year, day);
        }
        else if(month == 7)
        {
                day = 31*3+30*2+o+day;
                printf(" %d the %d day", year, day);
        }
        else if(month == 8)
        {
                day = 31*4+30*2+o+day;
                printf(" %d the %d day", year, day);
        }
        else if(month == 9)
        {
                day = 31*5+30*2+o+day;
                printf(" %d the %d day", year, day);
        }
        else if(month == 10)
        {
                day = 31*5+30*3+o+day;
                printf(" %d the %d day", year, day);
        }
        else if(month == 11)
        {
                day = 31*6+30*3+o+day;
                printf(" %d the %d day", year, day);
        }
        else if(month == 12)
        {
                day = 31*6+30*4+o+day;
                printf(" %d the %d day", year, day);
        }
}
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-11-24 00:19:55 | 显示全部楼层
本帖最后由 jackz007 于 2020-11-24 00:26 编辑

        代码逻辑正确,运行结果正确,对于初学者而言,很不容易,加油!
        不过,代码写得很不简洁,这里给楼主提供一个简洁一些的版本,谨供楼主参考。
  1. #include <stdio.h>

  2. //判断闰年
  3. int leap(int y)
  4. {
  5.         if((! (y % 4) && y % 100) || ! (y % 400)) return 1 ;
  6.         else return 0                                      ;
  7. }

  8. //计算每个月的天数
  9. int mdays(int y , int m)
  10. {
  11.         int md[12] = {31 , 28 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31} , days ;
  12.         days = md[m - 1]                                                                ;
  13.         if(m == 2 && leap(y)) days ++                                                   ;
  14.         return days                                                                     ;
  15. }

  16. //计算某个日期是某一年的第几天
  17. int thedays(int y , int m , int d)
  18. {
  19.         int days , k                                             ;
  20.         for(days = d , k = 1; k < m ; k ++) days += mdays(y , k) ;
  21.         return days                                              ;
  22. }

  23. int main(void)
  24. {
  25.         int year , month , day                                         ;
  26.         scanf("%d%d%d" , & year , & month , & day)                     ;
  27.         printf(" %d the %d day\n", year , thedays(year , month , day)) ;
  28. }
复制代码

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

  2. D:\00.Excise\C>days
  3. 2020 11 23
  4. 2020 the 328 day

  5. D:\00.Excise\C>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-27 02:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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