| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 664 人关注过本帖
标题:输出一个日子是滴多少天 有点错 求指出
只看楼主 加入收藏
h1187647735
Rank: 2
来 自:湖北huang'g
等 级:论坛游民
帖 子:26
专家分:17
注 册:2014-11-19
结帖率:50%
收藏
已结贴  问题点数:10 回复次数:8 
输出一个日子是滴多少天 有点错 求指出
//日期结构体
//黄春华  20150308


#include< iostream >
using  namespace  std;

struct date
{
    long int year,month,day;
};


bool run( date x )
{
    bool flag = 0;
    if( x.year % 100 !=0 && x.year % 4 == 0 )
        flag = 1;
    if( x.year % 100 == 0 || x.year % 400 == 0 )
        flag = 1;
    return flag;
}


int tianshu( date x )
{
    long int  s=0;//天数
    int i;
    bool flag;
    if( x.month=1 )
        s = x.day;
    if( x.month=2 )
        s = 31 + x.day;

    if( x.month >= 3 )
    {
        s = 59;
        for( i=3;i<=x.month;i++ )
        {
            if( i%2 == 0 )
                s = s + 30;
            if( i%2 ==1 )
                s = s + 31;
        }
        flag = run( x );
        if( flag = 1 )
            s = s + 1;

    }
   
    return s;

}

int main()
{
    //input
    date x;
    int s;
    cout << " 请输入年月日 ";
    cin >> x.year >> x.month >> x.day;

    //output
    s = tianshu( x );
    cout << " 这天是该年的第 " << s << " 天 " << endl;

    return 0;

}



我想做一个输出该年分多少天的函数 但结果好像和月份没什么关系  能帮我看看么
搜索更多相关主题的帖子: tianshu include return 结构体 tianshu include return 结构体 
2015-03-08 22:36
h1187647735
Rank: 2
来 自:湖北huang'g
等 级:论坛游民
帖 子:26
专家分:17
注 册:2014-11-19
收藏
得分:0 
有人帮我看看么

努力学习   天天向上
2015-03-08 22:48
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:5 
好几处错误,修改如下(红色部分为修改部分,你这个算法对超过8月运算会出问题):
#include< iostream >
using  namespace  std;

struct date
{
    long int year,month,day;
};


bool run( date x )
{
    bool flag = 0;
    if( x.year % 100 !=0 && x.year % 4 == 0 )
        flag = 1;
    if( x.year % 100 == 0 || x.year % 400 == 0 )
        flag = 1;
    return flag;
}


int tianshu( date x )
{
    long int  s=0;//天数
    int i;
    bool flag;
    if( x.month==1 )
        s = x.day;
    if( x.month==2 )
        s = 31 + x.day;

    if( x.month >= 3 )
    {
        s = 59;
        for( i=3;i<=x.month-1;i++ )
        {
            if( i%2 == 0 )
                s = s + 30;
            if( i%2 ==1 )
                s = s + 31;
        }
        flag = run( x );
        if(flag&&x.month>2)
            s = s + 1;
        s=s+x.day;

    }
   
    return s;

}

int main()
{
    //input
    date x;
    int s;
    cout << " 请输入年月日 ";
    cin >> x.year >> x.month >> x.day;

    //output
    s = tianshu( x );
    cout << " 这天是该年的第 " << s << " 天 " << endl;

    return 0;

}


[ 本帖最后由 wmf2014 于 2015-3-8 23:15 编辑 ]
收到的鲜花
  • h11876477352015-03-09 22:02 送鲜花  2朵   附言:好文章

能编个毛线衣吗?
2015-03-08 23:07
fxbszj
Rank: 5Rank: 5
来 自:阿修罗界
等 级:职业侠客
威 望:4
帖 子:163
专家分:331
注 册:2012-10-8
收藏
得分:3 
要是我,我会把每个月的天数放在一个数组里,2月放28天,判断如果是闰年加一天。这样不是简单多了?
收到的鲜花
  • h11876477352015-03-09 22:03 送鲜花  1朵  
2015-03-09 15:48
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:1 
回复 4楼 fxbszj
赞同,我见过很多这样的代码都这样做

一片落叶掉进了回忆的流年。
2015-03-09 20:46
h1187647735
Rank: 2
来 自:湖北huang'g
等 级:论坛游民
帖 子:26
专家分:17
注 册:2014-11-19
收藏
得分:0 
  谢谢楼主的关注   我再去研究一下

努力学习   天天向上
2015-03-09 21:32
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:1 
纯粹用代码实现也不是特别复杂,如下即可:

#include <stdio.h>
int getmd(int m,int y)
{//根据给定的年份y和月份m返回该月份天数
    int i,d=0,r=0,md=30;//d为大小月调整,r为闰年调整,md为一个月基础天数
    if(m<1||m>12)return(31);//如果月份数不正常则返回一月最大天数
    if((y%100!=0&&y%4==0)||y%400==0)r=1;//闰年调整
    for(i=0;i!=m;i++){if(i!=7)d=d^1;}//大小月份调整
    md=md+d;
    if(m==2)md=28+r;//二月份处理
    return md;
}
void main()
{
    int i,y;
    printf("输入年份:");
    scanf("%d",&y);
    printf("%d年各月份天数为:\n",y);
    for(i=1;i<13;i++)printf("%02d ",i);
    printf(" 月份\n");
    for(i=1;i<13;i++)printf("%2d ",getmd(i,y));
    printf(" 天数\n");
}

能编个毛线衣吗?
2015-03-09 21:55
h1187647735
Rank: 2
来 自:湖北huang'g
等 级:论坛游民
帖 子:26
专家分:17
注 册:2014-11-19
收藏
得分:0 
  版主抱歉 没学过代码  看不懂诶

努力学习   天天向上
2015-03-09 22:03
h1187647735
Rank: 2
来 自:湖北huang'g
等 级:论坛游民
帖 子:26
专家分:17
注 册:2014-11-19
收藏
得分:0 
关于天数的函数是这样么
            



int tianshu( date x )
{
    int s;
    bool flag;
    int a[11] = { 31,59,90,120,151,181,242,273,304,334,365 };
    s = a[ x.month ] + x.day;
    if( flag = 1 )
        s = s + 1;
    return s;
}

努力学习   天天向上
2015-03-09 22:10
快速回复:输出一个日子是滴多少天 有点错 求指出
数据加载中...
 
   



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

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