标题:大家帮忙看看这个程序有问题没 谢谢了
只看楼主
续写回忆
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2012-5-23
结帖率:25%
已结贴  问题点数:20 回复次数:7 
大家帮忙看看这个程序有问题没 谢谢了
求某天是某年的第几天问题

输入某年某月某日,然后算出这是这一年的第几天,比如输入2007 1 3 然后输出是 第三天 3
 我的思路是先判断是否闰年,然后再根据是哪个月的 然后再求出是第几天 不知道下面这个程序还有没考虑到的地方没 ,望大家帮忙看看 谢谢了 本人初学c
# include <iostream>
using namespace std;

class srsj
{
public:
    int in()
    {
        int a,b,c,i,n;
        cin>>n;
        for (i=1;i<=n;i++)
        {
            cin>>a>>b>>c;
            if ((a%4==0 && a%100!=0) || a%400==0)  //判断是否闰年
            {
                if (b<2)
                    cout<<c;
                else if (b>=2&&b<=3)
                    cout<<(b-2)*28+31+c<<endl;
                else if (b>3&&b<=5)
                    cout<<(92+(b-4)*30+c)<<endl;
                else if (b>5&&b<=7)
                    cout<<(153+(b-6)*30+c)<<endl;
                else if (b==8)
                    cout<<(214+c)<<endl;
                else if (b>8&&b<=10)
                    cout<<(245+(b-9)*30+31)<<endl;
                else if (b>10&&b<=12)
                    cout<<(306+(b-11)*30+31)<<endl;
            }
            else
            {
                if (b<2)
                    cout<<c;
                else if (b>=2&&b<=3)
                    cout<<(b-2)*30+31+c<<endl;
                else if (b>3&&b<=5)
                    cout<<(92+(b-4)*30+c)<<endl;
                else if (b>5&&b<=7)
                    cout<<(153+(b-6)*30+c)<<endl;
                else if (b==8)
                    cout<<(214+c)<<endl;
                else if (b>8&&b<=10)
                    cout<<(245+(b-9)*30+31)<<endl;
                else if (b>10&&b<=12)
                    cout<<(306+(b-11)*30+31)<<endl;
            }
            
        }
        return 0;
    }
}pd;


int main ()
{
    pd.in();
    return 0;
}

[ 本帖最后由 续写回忆 于 2012-10-21 17:04 编辑 ]
搜索更多相关主题的帖子: include public 
2012-10-19 14:32
天剑山
Rank: 4
等 级:业余侠客
威 望:3
帖 子:119
专家分:266
注 册:2012-8-3
得分:7 
....楼主这样发帖是不会有人来看的.....最起码你要把求解的基本思路贴出来,比如求函数的零点的二分法,你这样让人完全不知道那一大堆比较是干嘛的.........
2012-10-20 14:38
续写回忆
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2012-5-23
得分:0 
回复 2楼 天剑山
嗯嗯 也是 谢谢哈
2012-10-21 17:00
小小小火柴
Rank: 5Rank: 5
来 自:江西赣州
等 级:职业侠客
威 望:3
帖 子:141
专家分:337
注 册:2012-9-28
得分:7 
    楼主的代码好乱!最起码你的代码要有注释,你要给个提示用户输入的语句,还有输出语句你要给个提示吧!还有,你的思路是正确的,先判断是否是闰年,之后应该判断月份,月份大于2,应该再加一天。

   好好学习!
2012-10-21 20:51
小小小火柴
Rank: 5Rank: 5
来 自:江西赣州
等 级:职业侠客
威 望:3
帖 子:141
专家分:337
注 册:2012-9-28
得分:0 
# include <iostream>
using namespace std;

class srsj
{
public:
    void in()
    {
        int a,b,c;
        cout<<"请输入年,月,份:";
            cin>>a>>b>>c;
            if ((a%4==0 && a%100!=0) || a%400==0)  //判断是否闰年
            {
                if (b<2)
                    cout<<c;
                else if (b>=2&&b<=3)
                    cout<<(b-2)*28+31+c<<endl;
                else if (b>3&&b<=5)
                    cout<<(92+(b-4)*30+c)<<endl;
                else if (b>5&&b<=7)
                    cout<<(153+(b-6)*30+c)<<endl;
                else if (b==8)
                    cout<<(214+c)<<endl;
                else if (b>8&&b<=10)
                    cout<<(245+(b-9)*30+31)<<endl;
                else if (b>10&&b<=12)
                    cout<<(306+(b-11)*30+31)<<endl;
            }
            else
            {
                if (b<2)
                    cout<<c;
                else if (b>=2&&b<=3)
                    cout<<(b-2)*30+31+c<<endl;
                else if (b>3&&b<=5)
                    cout<<(92+(b-4)*30+c)<<endl;
                else if (b>5&&b<=7)
                    cout<<(153+(b-6)*30+c)<<endl;
                else if (b==8)
                    cout<<(214+c)<<endl;
                else if (b>8&&b<=10)
                    cout<<(245+(b-9)*30+31)<<endl;
                else if (b>10&&b<=12)
                    cout<<(306+(b-11)*30+31)<<endl;
            }
    }
};
void main()
{
    srsj s;
    s.in();
}
这样可以了!你的代码太麻烦,太乱了!楼主自己去简洁吧!我只是让你的程序可以运行!

   好好学习!
2012-10-21 21:28
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:7 
随手瞎写的,你验证一下

程序代码:
#include <iostream>
using namespace std;

int main()
{
    unsigned year, month, day;
    cin >> year >> month >> day;

    static const unsigned a[] = { 0,31,59,90,120,151,181,212,243,273,304,334 };
    unsigned b = ( a[month-1]+day ) + ( month>2 && ((year%4==0&&year%100!=0)||year%400==0) );

    cout << b << endl;
    return 0;
}

2012-10-22 09:49
续写回忆
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2012-5-23
得分:0 
回复 5楼 小小小火柴
嗯嗯 非常感谢哈  
2012-10-29 12:08
续写回忆
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2012-5-23
得分:0 
回复 6楼 rjsp
嗯嗯 谢谢了哈
2012-10-29 12:09



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




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

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