标题:一年中的第几天
只看楼主
t南柯一梦
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2017-11-4
结帖率:88.89%
已结贴  问题点数:15 回复次数:4 
一年中的第几天
题目描述
给出某个日期,判断这是当年的第几天,每年的1月1日是第1天,非闰年年份的12月31日是第365天。
输入
输入的第一个数为n,后接n个日期。日期用3个正整数按顺序表示年月日,中间用“-”连接。
输出
若输入的日期为错误,则输出“error date!”;否则输出这个日期是本年的第几天。每个日期对应一行输出。
样例输入
9
2010-01-01
2010-06-22
2010-12-31
2011-02-29
2011-07-18
2011-12-02
2012-02-29
2012-09-31
2012-12-31
样例输出
1
173
365
error date!
199
336
60
error date!
366
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int day,year,month,er,sum;
    scanf("%d-%d-%d",&year,&month,&day);
    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("error data!\n");
            exit(-1);
            break;
    }

    if ((year%4==0)&&(year%100!=0)||(year%400==0))
        er=1;
    else
        er=0;

    if (month==1||month==3||month==5||month==7||month==8||month==10||month==12)
    {
        if (day<1||day>31)
        {
            printf("error date!\n");
            exit(-1);

        }
    }
    if (month==4||month==6||month==9||month==11)
    {
        if (day<1||day>30)
        {
            printf("error date!\n");
            exit(-1);
        }
    }

    if (er==1&&(day<1||day>29))
    {
        printf("error date!\n");
        exit(-1);
    }

    if (er==0&&(day<1||day>28))
    {
        printf("error date!\n");
       exit(-1);
    }
    sum=sum+day;
    if(month>2)
    {
        sum+=er;
        printf("%d\n",sum);

    }
    if(month==1)
    {
        printf("%d\n",sum);

    }
}
我的代码应该怎样改才能进行多组数据的输入
搜索更多相关主题的帖子: date sum case break || 
2017-11-19 14:18
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
得分:0 
程序代码:
int main()
{
    int n=0;
    while(scanf("%d",&n)!=EOF)
    {
         int day,year,month,er,sum;
         scanf("%d-%d-%d",&year,&month,&day);
         ...
         ...
         ...
    
     }
}


[此贴子已经被作者于2017-11-19 18:24编辑过]


早知做人那么辛苦!  当初不应该下凡
2017-11-19 18:23
t南柯一梦
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2017-11-4
得分:0 
回复 2楼 炎天
这样改了之后 输出的数据就少了一组 而且输出的结果也不对
2017-11-19 21:41
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:15 
回复 2楼 炎天
看样例输入应该是先输入n然后下面while(n-->0)而不是直接把scanf("%d",&n)放进while循环里面~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-11-21 11:18
t南柯一梦
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2017-11-4
得分:0 
回复 4楼 九转星河
好像应该是改成while(n--) 谢谢了
2017-11-21 22:39



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-482638-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017183 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved