| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 413 人关注过本帖
标题:请高手指点这个程序,不甚感激
只看楼主 加入收藏
因为曾今年少
Rank: 2
等 级:论坛游民
帖 子:131
专家分:62
注 册:2011-4-13
结帖率:92.31%
收藏
已结贴  问题点数:6 回复次数:8 
请高手指点这个程序,不甚感激
题目:输入某年某月某日,判断这一天是这一年的第几天?
main()
{
int day,month,year,sum,leap;
printf("\nplease input year,month,day\n");
scanf("%d,%d,%d",&year,&month,&day);
switch(month)/*先计算某月以前月份的总天数*/
{ 
 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;
  default:printf("data error");
break;}sum=sum+day;  /*再加上某天的天数*/ 
if(year%400==0||(year%4==0&&year%100!=0))/*判断是不是闰年*/
   leap=1; 
 else  
 leap=0;
if(leap==1&&month>2)/*如果是闰年且月份大于2,总天数应该加一天*/
sum++;
printf("It is the %dth day.",sum);
}
求高手指点一二
我到底错在哪里啊
如果可能的话
还请高手们给一个比较简洁易懂的程序谢谢…………
搜索更多相关主题的帖子: 计算 304 
2011-04-17 21:03
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:1 
巧了, 以前做过的一个练习
程序代码:
root@~/prog #cat days.c
#include <stdio.h>

int main (void) {

        int year,month,day,daysOfYear;
        int daysPerMonth[12]={
                31,
                31+28,
                31+28+31,
                31+28+31+30,
                31+28+31+30+31,
                31+28+31+30+31+30,
                31+28+31+30+31+30+31,
                31+28+31+30+31+30+31+31,
                31+28+31+30+31+30+31+31+30,
                31+28+31+30+31+30+31+31+30+31,
                31+28+31+30+31+30+31+31+30+31+30,
                31+28+31+30+31+30+31+31+30+31+30+31,
        };

        printf ("Enter a date [YYYY MM DD]:");
        scanf ("%i %i %i",&year,&month,&day);

        if(month>12||month<1||day>31||day<1||(month==2&&day>28)){
                printf ("Illegal date! exit...\n");
                return 1;
        }
        else if((year%4==0&&year%100!=0)||year%400==0&&month>=2) {
                 daysOfYear=daysPerMonth[month-2]+day+1;
        }
        else if(month==1) {
                daysOfYear=day;
        }
        else{
                daysOfYear=daysPerMonth[month-2]+day;
        }

        printf ("From %i/01/01 to %i/%i/%i days is:%i\n",
                        year,year,month,day,daysOfYear);

        return 0;

}

root@~/prog #

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-04-17 23:22
kwxx
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:309
专家分:913
注 册:2009-5-11
收藏
得分:1 
#include <stdio.h>
int main()
{
    int day,month,year,sum,leap;
    printf("\nplease input year,month,day\n");
    scanf("%d,%d,%d",&year,&month,&day);
    sum=day;
    switch(month)
    {
        case 12:    sum+=30;
        case 11:    sum+=31;
        case 10:    sum+=30;
        case 9:        sum+=31;
        case 8:        sum+=31;
        case 7:        sum+=30;
        case 6:        sum+=31;
        case 5:        sum+=30;
        case 4:        sum+=31;
        case 3:        sum+=28;
        case 2:        sum+=31;
        case 1:        break;
        default:printf("data error");

    }
    if(month>2 && (year%400==0||(year%4==0&&year%100!=0)))
        sum++;
    printf("It is the %dth day.\n",sum);
    return 0;
}
2011-04-17 23:23
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:1 
程序代码:
void main()
{
int day,month,year,sum=0,leap;

printf("please input year,month,day:");
scanf("%d,%d,%d",&year,&month,&day);

switch(month)/*先计算某月以前月份的总天数*/
{ 
   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;
  default: printf("data error"); break;
   }

 sum=sum+day;  /*再加上某天的天数*/ 

 if(year%400==0||(year%4==0&&year%100!=0))/*判断是不是闰年*/
 leap=1; 

 else  

 leap=0;

 if(leap==1&&month>2)/*如果是闰年且月份大于2,总天数应该加一天*/

 sum++;
printf("\nIt is the %dth day.\n",sum);
}

//看不出来有什么错误!看main()上加一个void吧!

   唯实惟新 至诚致志
2011-04-17 23:27
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:1 
楼主,你的代码太可怕了~~居然窝藏全角空格,我恨
把你的代码稍微改了一下,还是原来的思路:

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

int main() {
    int day, month, year, sum, leap, a[13] = {0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334};
    
    printf("\nplease input year,month,day\n");
    scanf("%d %d %d", &year, &month, &day);
    
    sum = sum + day + a[day];
    
    if ((year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))) {        //判断是不是闰年
        if (month > 2) {        //如果是闰年且月份大于2,总天数应该加一天
            sum++;
        }
    }
    printf("It is the %dth day.\n",sum);
    return 0;
}


[ 本帖最后由 voidx 于 2011-4-18 01:05 编辑 ]
2011-04-18 00:45
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:1 
这里数组初始化还是技巧性比较强的,写的不同可读性,和可调试性都有很大区别。

就我个人的感觉,3楼的代码最好,就算写错了别人也很容易发现,而且很好改。2楼的也还凑合,就是人手累点。直接初始化的,一个打字失误就完了,而且很难查出来。
2011-04-18 00:51
因为曾今年少
Rank: 2
等 级:论坛游民
帖 子:131
专家分:62
注 册:2011-4-13
收藏
得分:0 
二楼到六楼的同志们
在此衷心感谢各位的指点
呵呵呵
看来我要好好努力啦
2011-04-18 07:31
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:1 
int x,m,d,s=0,a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
scanf("%d",&x);scanf("%d%d",&m,&d);
if(m<1||m>13||d>31||d<1)
printf("输入错误");
else
{
for(int i=0;i<m-1;i++)
s=s+a[i];
s=s+d;
if(m>2)
if(x%4==0)
s=s+1;}
printf("%d",s);
2011-04-18 11:37
因为曾今年少
Rank: 2
等 级:论坛游民
帖 子:131
专家分:62
注 册:2011-4-13
收藏
得分:0 
谢谢各位啦
2011-04-18 18:56
快速回复:请高手指点这个程序,不甚感激
数据加载中...
 
   



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

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