| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 874 人关注过本帖
标题:关于计算输入某年某月某日,并算出这是一年中的第几天的问题
取消只看楼主 加入收藏
z574262105
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2014-6-23
结帖率:0
收藏
已结贴  问题点数:20 回复次数:2 
关于计算输入某年某月某日,并算出这是一年中的第几天的问题
是这样的,源程序是这个
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);}




但是我感觉这个程序还是有漏洞的,假如日期不再范围之内怎么办?所以我自己“改良”了一下,就成了这个样子
#include<stdio.h>
main()
{
    int year,month,day,sum,i;
    printf("请输入日期:年,月,日");
    scanf("%d,%d,%d",&year,&month,&day);
    switch(month)
    {  
         case 1:sum=0;if(day>31|| day<1) {printf("日期输入错误请重新输入");scanf("%d,%d,%d",&year,&month,&day);}break;
         case 2:sum=30;if(day>29|| day<1){printf("日期输入错误请重新输入");scanf("%d,%d,%d",&year,&month,&day);}break;
     case 3:sum=59;if(day>31|| day<1){printf("日期输入错误请重新输入");scanf("%d,%d,%d",&year,&month,&day);}break;
     case 4:sum=90;if(day>30|| day<1){printf("日期输入错误请重新输入");scanf("%d,%d,%d",&year,&month,&day);}break;
     case 5:sum=120;if(day>31|| day<1){printf("日期输入错误请重新输入");scanf("%d,%d,%d",&year,&month,&day);}break;
     case 6:sum=151;if(day>30|| day<1){printf("日期输入错误请重新输入");scanf("%d,%d,%d",&year,&month,&day);}break;
     case 7:sum=181;if(day>31|| day<1){printf("日期输入错误请重新输入");scanf("%d,%d,%d",&year,&month,&day);}break;
     case 8:sum=212;if(day>31|| day<1){printf("日期输入错误请重新输入");scanf("%d,%d,%d",&year,&month,&day);}break;
     case 9:sum=243;if(day>30|| day<1){printf("日期输入错误请重新输入");scanf("%d,%d,%d",&year,&month,&day);}break;
         case 10:sum=273;if(day>31|| day<1){printf("日期输入错误请重新输入");scanf("%d,%d,%d",&year,&month,&day);}break;
         case 11:sum=304;if(day>30| day<1){printf("日期输入错误请重新输入");scanf("%d,%d,%d",&year,&month,&day);}break;
         case 12:sum=334;if(day>31|| day<1){printf("日期输入错误请重新输入");scanf("%d,%d,%d",&year,&month,&day);}break;
         default :printf("月份输入错误,请重新输入");scanf("%d,%d,%d",&year,&month,&day);break;
       }
   
    sum=sum+day;
    if(year %400 == 0 || (year%4==0&&year%100!=0))
        i=0;
    else
        i=1;
    if (i=0&&month>2)
        sum++;
printf("%d",sum);


但是程序好像运行不了是为什么呢?各位大神解答下啊,还有什么更简洁的程序吗?感觉太繁琐了
搜索更多相关主题的帖子: 源程序 
2015-09-15 03:08
z574262105
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2014-6-23
收藏
得分:0 
回复 2楼 小王KING
谢谢
2015-09-15 20:18
z574262105
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2014-6-23
收藏
得分:0 
回复 3楼 林月儿
谢谢
2015-09-15 20:38
快速回复:关于计算输入某年某月某日,并算出这是一年中的第几天的问题
数据加载中...
 
   



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

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