| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 362 人关注过本帖
标题:第几天??
只看楼主 加入收藏
捕鱼者
Rank: 2
等 级:禁止访问
帖 子:10
专家分:14
注 册:2010-10-21
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
第几天??
题目:输入某年某月某日,判断这一天是这一年的第几天?

程序代码:
#include "stdio.h"

void main()
{
        int day,mouth,year,sum,leap;
        printf("\nplease input year,mouth,day\n");
        scanf("%d,%d,%d",&year,&mouth,&day);
        switch (mouth) /*先计算某月以前月份的总天数*/
        {
            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;
            defaultrintf("data error");break;
        }
        sum=sum+day; /* 再加上某天的天数*
        if (year%400==0||(year%4==0&&year%100!=0))/*判断是不是闰年*/
        leap=1;
        else
        leap=0;
        if (leap==1&&mouth>2)/*如果是闰年且月份大于2,总数天数应该加1*/
        sum++;
        printf ("It is the %dth day.",sum);
}
这是在网上看见的答案,觉得有点浪费感情了,于是自己写了一个:
程序代码:
# include <stdio.h>

#define LEAPYEAR 0
#define PINGNIAN 1

int
main()
{
    int date_array[2][13] =
    { { 31, 29 , 31 ,30 ,31 ,30 , 31 , 31 , 30 , 31 , 30 , 31 } ,
    { 31, 28 , 31 ,30 ,31 ,30 , 31 , 31 , 30 , 31 , 30 , 31} } ;
    int year , month , day ;
    int i ,sum_of_day = 0 ;
    scanf( "%d%d%d" , &year , & month , &day ) ;
    if( year%400 == 0 || ( year%4 == 0 && year % 100 != 0 ) )
    {
        for( i = 0 ; i < month - 1 ; i++ )
            sum_of_day += date_array[LEAPYEAR][i] ;
        sum_of_day += day ;
    }
    else
    {
        for( i = 0 ; i < month - 1 ; i++ )
            sum_of_day += date_array[PINGNIAN][i] ;
        sum_of_day += day ;
    }
    printf( "The date is %d\n" , sum_of_day ) ;
    return 0 ;
}
2010-10-21 21:11
御坂美琴
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:魔術の禁書目錄
等 级:小飞侠
威 望:9
帖 子:952
专家分:2929
注 册:2010-8-18
收藏
得分:5 
其实可以更简化的,那个数组可以少一个,后面的代码也可以少一半
程序代码:
# include <stdio.h>

int
main()
{
    int date_array[13] = { 31, 28 , 31 ,30 ,31 ,30 , 31 , 31 , 30 , 31 , 30 , 31};
    int year , month , day ;
    int i ,sum_of_day = 0 ;
    scanf( "%d%d%d" , &year , & month , &day ) ;
    if( year%400 == 0 || ( year%4 == 0 && year % 100 != 0 ) )
        date_array[1] = 29;
    for( i = 0 ; i < month - 1 ; i++ )
        sum_of_day += date_array[i] ;
    sum_of_day += day ;
    printf( "The date is %d\n" , sum_of_day ) ;
    return 0 ;
}

永远为正义而奋斗,锄强扶弱的Level 5 超能力者
とある魔術の禁書目錄インデックス__御み坂さか美み琴こと
http://bbs.bccn.net/space.php?action=threads&uid=483997
2010-10-21 21:25
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:5 
自己写代码练习一下很好,但你的代码与网上那段相比还是很有差距的。时间复杂度、空间复杂度、阅读可理解性都不如人家的。这导致我不知道该怎么理解你说的浪费感情。好好理解一下网上那段代码,水平是一流的。

重剑无锋,大巧不工
2010-10-21 21:29
wangjianhui
Rank: 8Rank: 8
来 自:^帅帅城^
等 级:蝙蝠侠
威 望:2
帖 子:353
专家分:745
注 册:2010-3-19
收藏
得分:5 
哎···还是这里安静

加油
2010-10-22 07:22
风兮飞扬
该用户已被删除
收藏
得分:5 
提示: 作者被禁止或删除 内容自动屏蔽
2010-10-22 07:39
快速回复:第几天??
数据加载中...
 
   



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

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