| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 10634 人关注过本帖
标题:如何输入一个年月日求是该年中第几天??
只看楼主 加入收藏
清微御宇
Rank: 6Rank: 6
来 自:开封
等 级:侠之大者
威 望:2
帖 子:318
专家分:497
注 册:2012-1-15
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
如何输入一个年月日求是该年中第几天??
程序代码:
#include<stdio.h>
int main()
{
    int a[12]={31,29,31,30,31,30,31,31,30,31,30,31};
    int b,c,d,sum=0,i;
    printf("请输入日期例如1994,6,12\n");//输入一个日期求是这年的第多少天???
    scanf("%d,%d,%d",&b,&c,&d);
      if(c>12||d>a[c])
          printf("请输入正确的日期");//要求输错时给予提示并可以重行输入,这个不会了,不知如何让它返回scanf语句中???
            if(a%4!=0||a%100==0&&a%400!=0)
                a[1]=28;
            for(i=0;i<c-1;i++)
            {
                sum=sum+a[i];
            }
            sum=sum+d;
            printf("则这是%d年的第%d天。\n",b,sum);
           
return 0;
}
这个破电脑vc6.0坏了,也没有调试,如果有什么语法逻辑问题请帮忙指出,还有可以让它变简单一点吗??
搜索更多相关主题的帖子: 年月日 color 如何 
2012-03-10 23:40
墨清扬
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:294
专家分:817
注 册:2011-10-4
收藏
得分:0 
while(c>12||d>a[c])
{
    printf……;   
    scanf……;
}

酱油实习生
2012-03-10 23:58
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:10 
MM看这个可以吗

程序代码:
#include<stdio.h>

int ping[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
int run[] = {0,31,29,31,30,31,30,31,31,30,31,30,31};

bool f(int year)
{
    if(year % 4 == 0 && year % 100 != 0 || 
        year % 400 == 0)
        return true;
    return false;
}

int main()
{
    int year,month,day,i,j;
    while(~scanf("%d%d%d",&year,&month,&day))
    {               
       if((year == 0 || month == 0 || day == 0) || (month == 2 && day>29) ||
        (run[month]<day) || 
        (!(year%4 == 0 && year%100 != 0 ||year%400 == 0)&&month == 2 && day == 29) 
        )
        {
            printf("illegal\n");
            continue;
        }
        if(f(year))
            for(j = 0,i = 1;i<month;i++)
                j += run[i];
        else
            for(j = 0,i = 1;i<month;i++)
                j += ping[i];
        printf("%d\n",j+day);
    }
    return 0;
}

                                         
===========深入<----------------->浅出============
2012-03-11 09:23
lonmaor
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:郑州
等 级:版主
威 望:75
帖 子:2637
专家分:6423
注 册:2007-11-27
收藏
得分:2 
和hdoj 2005一样的吧,我看楼主妹子的逻辑都差不多。
https://bbs.bccn.net/viewthread.php?tid=362726&page=1

从不知道到知道,到知道自己不知道,成长的道路上脚步深深浅浅
2012-03-11 10:00
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
回复 4楼 lonmaor
那杭电的2033也是这样的问题  有兴趣去看看

                                         
===========深入<----------------->浅出============
2012-03-11 10:01
纯情小郎君
Rank: 2
等 级:论坛游民
帖 子:84
专家分:80
注 册:2011-12-12
收藏
得分:6 
程序代码:
#include<stdio.h>
void main()
{
    int day,month,year,sum,i,d;
    printf("请分别输入年月日:\n");
    scanf("%d,%d,%d",&year,&month,&day);
    sum=0;
    for(i=1;i<month;i++)                                         //计算前几个月
    {
        switch(i)
        {
        case 1:case 3:case 5:case 7:case 8:case 10:case 12:d=31;break;
        case 4:case 6:case 9:case 11:d=30;break;
        case 2:
            if((year%400==0)||(year%4==0&&year%100!=0))           //判断是否为闰年
                d=29;
            else 
                d=28;
    }
    sum=sum+d;
    }
    printf("这一天是%d年的第%d天\n",year,day+sum);               //前几个月加上本月的几天
}

老师说,2B是通向梦想的第一步
2012-03-11 15:14
纯情小郎君
Rank: 2
等 级:论坛游民
帖 子:84
专家分:80
注 册:2011-12-12
收藏
得分:2 
楼主你这里错了if(a%4!=0||a%100==0&&a%400!=0),不是a而是b

老师说,2B是通向梦想的第一步
2012-03-11 15:18
纯情小郎君
Rank: 2
等 级:论坛游民
帖 子:84
专家分:80
注 册:2011-12-12
收藏
得分:0 
嗯,还有d>a[c]这里有点问题,如果输入一月31天的话就出问题了,还要细化,较为简单的方法参照清扬哥的,版主大人那个稍微复杂点,但是实现了你的要求

老师说,2B是通向梦想的第一步
2012-03-11 15:37
纯情小郎君
Rank: 2
等 级:论坛游民
帖 子:84
专家分:80
注 册:2011-12-12
收藏
得分:0 
回复 3楼 laoyang103
老杨大哥,还有这种写法的啊~scanf("%d%d%d",&year,&month,&day),也就是EOF吧,受教了啊

老师说,2B是通向梦想的第一步
2012-03-11 15:41
我行我速leaf
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-1-17
收藏
得分:0 
#include <stdio.h>
int main( )
{ int year,month,day,i,f,
daytable[][12]={{31,28,31,30,31,30,31,31,30,31,30,31},
{31,29,31,30,31,30,31,31,30,31,30,31}};

scanf("%d%d%d",&year,&month,&day);

f=(year % 4 ==0) && (year % 100 !=0) || (year % 400 ==0);

for (i=0;i<month-1; i++)
day=day+daytable[f][i];

printf("这一天是%d年的第%d天\n",year,day);
return 0; }
2013-01-17 10:45
快速回复:如何输入一个年月日求是该年中第几天??
数据加载中...
 
   



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

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