黑马程序员技术交流社区

标题: 写码出问题了,求拯救! [打印本页]

作者: liubo690337760    时间: 2016-3-26 21:58
标题: 写码出问题了,求拯救!
#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;
}
    输入一个年份,月份,日.判断是闰年还是平年,输出是这年的第几天!写到这里出问题了,下不下去了.求拯救啊!
作者: x_starry    时间: 2016-3-26 22:01
棒棒的,写的不错
作者: xiewenjian0313    时间: 2016-3-27 00:22
建议你,整理好思路在写,还有定义变量名称要有意义
作者: xiewenjian0313    时间: 2016-3-27 00:24
最后那段,你写对了才怪
作者: darcy_yj    时间: 2016-3-27 01:24
大牛.这么长的代码,真是NB
作者: yemou1314    时间: 2016-4-13 00:14
代码写的真多
作者: a752538236    时间: 2016-4-13 20:15
这么长,不定义几个函数吗
作者: 鱼的七秒钟记忆    时间: 2016-4-13 20:19
建议你用一个数组来存储每个月的天数,然后根据输入来累加,判断是闰年在多加一天。这样会省很多代码
作者: 缘之有缘    时间: 2016-4-13 21:16
都是大神,前来学习
作者: ySssssssss    时间: 2016-4-13 22:01
感觉有的判断没必要啊
作者: 毛小猪    时间: 2016-4-13 22:42
代码写这么多
作者: xiao宇    时间: 2016-4-14 22:16
很棒的!加油
作者: 张立鹏    时间: 2016-4-14 22:34
为啥你这里这么多回复,我写的帖子就没人看啊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2