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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© liubo690337760 中级黑马   /  2016-3-26 21:58  /  1027 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

#include <stdio.h>

int main()
{
    //定义变量
    int day,month,year,leap,ok,sum = 0;
    printf("***查询开始***\n\n");
    //用循环实现多次查询
    for(;;)
    {
        //获取年份数据
        printf("please input  year:");
        scanf("%d",&year);
        //判断是不是闰年
        if(year % 400 == 0 || (year % 4 == 0 && year %  100!=0))
            leap=1;
        else
            leap=0;
        //循环确保误输入的月份是小余12的,
        for(;;)
        {
            //获取月份数据
            printf("please input month:");
            scanf("%d",&month);
            if(month<=12)
                break;
            else
                printf("date error\n");//数据不符合要求时报错
        }
        
        //确保输入的对应月份的日期是正确的
        for(;;)
        {
            //获取日期数据
            printf("please input   day:");
            scanf("%d",&day);
            //判断输入的日期是否真的存在,也是防止错误输入时程序计算错误但是并不报错
            if((month==2&&leap==1&&day<=29)||(month==2&&leap==0&&day<=28))
                break;
            else if((month==1||month==3||month==5||month==7||month==8||month==10||month==12)&&day<=31)
                break;
            else if((month==4||month==6||month==9||month==11)&&day<=30)
                break;
            else printf("date error\n");
        }
        switch(month)
        {
            case 1:sum=0;break;
            case 2:sum=31;break;
            case 3:sum=59;break;
            case 4:sum=90;break;
            case 5:sum=120;break;
            case 6:sum=151;break;
            case 7:sum=181;break;
            case 8:sum=212;break;
            case 9:sum=243;break;
            case 10:sum=273;break;
            case 11:sum=304;break;
            case 12:sum=334;break;
                //default:printf("date error\n");break;
               
        }
        //日期计算
        sum=sum+day;
        if(leap==1&&month>2)
            sum++;
        //结果输出
        printf("\nIt is the %dth day.\n\n",sum);
        //提示是否需要重复查询
        printf("是否需要继续查询? 是1/否2:");
        scanf("%d",&ok);
        if(ok==2)
        {
            printf("\n***查询结束,呵呵再见!!***\n\n");//退出提示
            break;
        }
        else
            printf("\n***请继续查询***\n");
    }
    return 0;
}
    输入一个年份,月份,日.判断是闰年还是平年,输出是这年的第几天!写到这里出问题了,下不下去了.求拯救啊!

12 个回复

倒序浏览
棒棒的,写的不错
回复 使用道具 举报
建议你,整理好思路在写,还有定义变量名称要有意义
回复 使用道具 举报
最后那段,你写对了才怪
回复 使用道具 举报
大牛.这么长的代码,真是NB
回复 使用道具 举报
代码写的真多
回复 使用道具 举报
这么长,不定义几个函数吗
回复 使用道具 举报
建议你用一个数组来存储每个月的天数,然后根据输入来累加,判断是闰年在多加一天。这样会省很多代码
回复 使用道具 举报
都是大神,前来学习
回复 使用道具 举报
感觉有的判断没必要啊
回复 使用道具 举报
代码写这么多
回复 使用道具 举报
很棒的!加油
回复 使用道具 举报
为啥你这里这么多回复,我写的帖子就没人看啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马