A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

/*
小明从2006年1月1日开始,每三天结识一个美女两天结识一个帅哥,编程实现当输入2006年1月1日之后的任意一天,输出小明那天是结识美女还是帅哥(注意润年问题)
*/

#include<stdio.h>
       
        int f(int,int,int);//声明一个函数,参数是三个int型,返回值也是int。用于计算输入日期到指定日期总共天数。
        int year=2006;//定义一个全局变量。(可定义为常量)
        int main()
        {
                int n=1;//代表年
                int month=1;//代表月
                int day=1;//代表日
                int sum=0;//接收f函数的返回值
           A:   printf("input n:\n");
                scanf("%d",&n);//键盘输入年份
                if(n<year)//判断年份是否合法
                {       
                        printf("输入错误,请重新");
                        goto A;//不合法则返回去重新输入
                }
           B:   printf("input month:\n");
                scanf("%d",&month);
                if(month<1||month>12)
                {       
                        printf("输入错误,请重新");
                        goto B;
                }
           C:   printf("input day:\n");
                scanf("%d",&day);
                if(month<1||month>31)
                {       
                        printf("输入错误,请重新");
                        goto C;
                }
                sum=f(n,month,day);
                if(sum%3==0){printf("结识美女\n");}
                if(sum%2==0){printf("结识帅哥\n");}
                printf("%d\n",sum);
                return 0;
               
        }
       
        int f(int a,int b,int c)//
        {
                int i=a-year;//计算年差
                int j=0;
                int days=0;//计算总共天数
                for(j;j<i;j++)//超过一年则计算整年天数
                {
                        year+=j;
                        if(year%400==0)//判断是否闰年
                        {
                                days+=366;               
                        }else
                        {
                                days+=365;
                        }
                }
                switch (b)//不足一年的计算前每整月的天数再加日期数
                {
                        case 1:
                                days+=c;
                                break;
                        case 2:
                                days=31+c;
                                break;
                        case 3:
                        {
                                days=31+c;
                                if(a%400==0){days+=29;}
                                else{days+=28;}
                                break;
                        }
                        case 4:
                                days=31+c+31;
                                if(a%400==0){days+=29;}
                                else{days+=28;}
                                break;
                        case 5:
                                days=31+c+31+30;
                                if(a%400==0){days+=29;}
                                else{days+=28;}
                                break;
                        case 6:
                                days=31+c+31+30+31;
                                if(a%400==0){days+=29;}
                                else{days+=28;}
                                break;
                        case 7:
                                days=31+c+31+30+31+30;
                                if(a%400==0){days+=29;}
                                else{days+=28;}
                                break;
                        case 8:
                                days=31+c+31+30+31+30+31;
                                if(a%400==0){days+=29;}
                                else{days+=28;}
                                break;
                        case 9:
                                days=31+c+31+30+31+30+31+31;
                                if(a%400==0){days+=29;}
                                else{days+=28;}
                                break;
                        case 10:
                                days=31+c+31+30+31+30+31+31+30;
                                if(a%400==0){days+=29;}
                                else{days+=28;}
                                break;
                        case 11:
                                days=31+c+31+30+31+30+31+31+30+31;
                                if(a%400==0){days+=29;}
                                else{days+=28;}
                                break;
                        case 12:
                                days=31+c+31+30+31+30+31+31+30+31+30;
                                if(a%400==0){days+=29;}
                                else{days+=28;}
                                break;
                }
                return days;
        }

1 个回复

正序浏览

哈哈  谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马