标题:给出年月日,求是一年中第几天,实在想不出问题处在哪?请大家帮忙?
只看楼主
chihuyu
Rank: 2
等 级:论坛游民
帖 子:70
专家分:13
注 册:2011-12-26
结帖率:100%
已结贴  问题点数:3 回复次数:9 
给出年月日,求是一年中第几天,实在想不出问题处在哪?请大家帮忙?
#include"stdio.h"
#include"math.h"
void main()
{

    int year,month,day,days,leap,i;
    int a[2][13]={(0,31,28,31,30,31,30,31,31,30,31,30,31),(0,31,29,31,30,31,30,31,31,30,31,30,31)};

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


    leap=0;
    if(year%4==0&&year%100!=0||year%400==0)
    {
        leap=1;
    }

            days=day;
            for(i=1;i<month;i++)
        {
            days+=a[leap][i];            
        }
   

    printf("第%d天\n",days);
}
搜索更多相关主题的帖子: 年月日 include void 
2012-02-23 23:35
snakelazixp
Rank: 2
等 级:论坛游民
帖 子:51
专家分:94
注 册:2012-2-13
得分:0 
程序代码:
#include<stdio.h>
int year,month,day;//全局变量       我自己写的  楼主参考下。。。
void main()
{                 //1   2  3  4  5  6  7  8  9 10 11 12
    int month1[12]={31,28,31,30,31,30,31,31,30,31,30,31};//

    int month2[12]={31,29,31,30,31,30,31,31,30,31,30,31};//
    void fun_year();
    printf("Input year( year>0 ) :\n");
    scanf("%d",&year);
    if(year%4==0)
    {
        if(year%100==0)
        {
            if(year%400==0)
            {
                //1润
                printf("Not leap year!\n");
                printf("Input month( 1-12 ) :\n");
                scanf("%d",&month);
                fun_year(month2,month);
            }
            else
            {
                //0平
                printf("Leap year!\n");
                printf("Input month( 1-12 ) :\n");
                scanf("%d",&month);               

                fun_year(month1,month);
            }
        }
        else
        {
            //1润
            printf("Not leap year!\n");
            printf("Input month( 1-12 ) :\n");
            scanf("%d",&month);           

            fun_year(month2,month);
        }
    }
    else
    {
        //0平
        printf("Leap year!\n");
        printf("Input month( 1-12 ) :\n");
        scanf("%d",&month);       

        fun_year(month1,month);
    }
   

}
void fun_year(int mon[],int monx)
{
    int i,j,sum_mon=0;
    int t;
    for(i=0;i<12;i++)
        if(monx==i+1)
        {
            t=i+1;
            break;
        }
        // printf("t=%d\n",t);
        for(j=0;j<t;j++)
            sum_mon=sum_mon+mon[j];
        //printf("sum_mon=%d\n",sum_mon);
        printf("Input day( 1-31 ) :\n");
        scanf("%d",&day);
        printf("The total days :%d\n",sum_mon-(mon[t-1]-day));
}
2012-02-23 23:40
zxd675816777
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:252
专家分:631
注 册:2012-2-3
得分:0 
hiahia。。。不妨试试暴力的算法,用switch去弄


数学好难!
2012-02-23 23:56
C_596322153
Rank: 6Rank: 6
来 自:徽州
等 级:侠之大者
帖 子:182
专家分:466
注 册:2012-1-10
得分:1 
大哥 你的数组 型式对嘛  改下
2012-02-24 08:08
C_596322153
Rank: 6Rank: 6
来 自:徽州
等 级:侠之大者
帖 子:182
专家分:466
注 册:2012-1-10
得分:2 
int a[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}};

2012-02-24 08:59
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
得分:0 
需要两个数组吗?

梅尚程荀
马谭杨奚







                                                       
2012-02-24 11:26
chihuyu
Rank: 2
等 级:论坛游民
帖 子:70
专家分:13
注 册:2011-12-26
得分:0 
谢谢回答
2012-02-24 21:29
纯情小郎君
Rank: 2
等 级:论坛游民
帖 子:84
专家分:80
注 册:2011-12-12
得分:0 
程序代码:
#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-02-24 22:45
回首依依
Rank: 7Rank: 7Rank: 7
来 自:苏州
等 级:黑侠
威 望:1
帖 子:193
专家分:524
注 册:2011-12-3
得分:0 
来个简洁的:
#include"stdio.h"
int main()
{
    int y,m,d,days[12]={0,31,59,90,120,151,181,212,243,273,304,334};
    printf("Please input date(year,mouth,day):");
    scanf("%d,%d,%d",&y,&m,&d);
    printf("The day is %d day.\n",(y%400==0||(y%4==0&&y%100!=0))&&m>2?days[m-1]+d+1:days[m-1]+d);
}
2012-02-24 23:18
lzh253739255
Rank: 2
等 级:论坛游民
帖 子:32
专家分:24
注 册:2013-10-8
得分:0 
回复 8楼 纯情小郎君
如果输入2015,02,30.
结果就不切实际了吧.
我是初学者,
我想问一个问题,不知道能否指点:
---------------------------------------------------------------------------
        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 1:case 3:case *"后面都没有填写返回值,只要写成" case 1:case 3:case 5:case 7:case 8:case 10:case 12:d=31;break;"
case1/3/5/7/8/10/12的返回值就都使用"case 12:d=31;"吗?
我基础没学好,不好意思.

程序员应该足够懒,追求一劳永逸,写出来的代码,应是可以反复使用的.
2015-03-10 17:27



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




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

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