| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1164 人关注过本帖, 1 人收藏
标题:版主再帮帮忙.....
只看楼主 加入收藏
asilan
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2004-6-8
收藏(1)
 问题点数:0 回复次数:7 
版主再帮帮忙.....

题目:

打印万年历

搜索更多相关主题的帖子: 万年历 版主 打印 
2004-06-09 18:34
asilan
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2004-6-8
收藏
得分:0 

请版主帮帮忙啦............

2004-06-12 12:22
asilan
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2004-6-8
收藏
得分:0 

版主.....救命啊......这道题关系到我们小组的生死啊 ....... 做不出就惨咯 ................T-T

2004-06-15 09:51
jzh2004
Rank: 1
等 级:新手上路
帖 子:341
专家分:0
注 册:2004-4-30
收藏
得分:0 

以下程序以2004年1月为基准年

因为我不知道公元元年一月一日是星期几,所以我以2004年1月1日为基准日 朝后朝前推算的,因为没有万年历,我只能验证2004年没有错,也许程序中存在 逻辑错误,如果有谁知道万年历的或发现错误的请指出。

#include <stdio.h> #define NOW_YEAR 2004 void main() { int year,d_year,month,n=0,i,t,m[12]={31,28,31,30,31,30,31,31,30,31,30,31}; long c_day=0; printf("请输入年份:"); scanf("%d",&year); printf("请输入月份:"); scanf("%d",&month); if(year>=NOW_YEAR) { d_year=year-NOW_YEAR; n=d_year/4+1; if(d_year>=96){t=(d_year+4)/100;n-=t;} if(d_year>=396){t=(d_year+4)/400;n+=t;} if((year%4==0&&year%100!=0||year%400==0)&&month<=2)n--; for(i=0;i<month-1;i++)c_day+=m[i]; c_day+=d_year*365+n; t=(c_day+4)%7; } else { d_year=NOW_YEAR-year; n=d_year/4; if(d_year>=4){t=(d_year+96)/100;n-=t;} if(d_year>=4){t=(d_year+396)/400;n+=t;} if((year%4==0&&year%100!=0||year%400==0)&&month>2)n--; for(i=11;i>=month-1;i--)c_day+=m[i]; c_day+=(d_year-1)*365+n; t=7-(c_day-4)%7; } printf(" 日 一 二 三 四 五 六 \n"); for(i=0;i<t;i++)printf(" "); for(i=1;i<=m[month-1];i++) { printf("%4d",i); if(++t==7){t=0;printf("\n");} } if(month==2&&(year%100!=0&&year%4==0||year%400==0))printf("%4d",i); }


我的主页 http://www.
2004-06-16 01:25
jzh2004
Rank: 1
等 级:新手上路
帖 子:341
专家分:0
注 册:2004-4-30
收藏
得分:0 

以下程序是从上面程序推出的公元0年1月的日历为基准的,如果上面程序错了,那下面的也不会准。

不过因为没有向前推导,所以程序比较短

void main() { int year,d_year,month,n=0,i,t,m[12]={31,28,31,30,31,30,31,31,30,31,30,31}; long c_day=0; do { printf("请输入年份:"); scanf("%d",&year); }while(year<0); do { printf("请输入月份:"); scanf("%d",&month); }while(month<1||month>12); if(year>=NOW_YEAR) { d_year=year-NOW_YEAR; n=d_year/4+1; if(d_year>=96){t=(d_year+4)/100;n-=t;} if(d_year>=396){t=(d_year+4)/400;n+=t;} if((year%4==0&&year%100!=0||year%400==0)&&month<=2)n--; for(i=0;i<month-1;i++)c_day+=m[i]; c_day+=d_year*365+n; t=(c_day+6)%7; } printf(" 日 一 二 三 四 五 六 \n"); for(i=0;i<t;i++)printf(" "); for(i=1;i<=m[month-1];i++) { printf("%4d",i); if(++t==7){t=0;printf("\n");} } if(month==2&&(year%100!=0&&year%4==0||year%400==0))printf("%4d",i); }


我的主页 http://www.
2004-06-16 01:32
jzh2004
Rank: 1
等 级:新手上路
帖 子:341
专家分:0
注 册:2004-4-30
收藏
得分:0 

不好意思,上面的程序里的

if(d_year>=96){t=(d_year+4)/100;n-=t;} if(d_year>=396){t=(d_year+4)/400;n+=t;} 应该是

if(d_year>=100){t=(d_year+4)/100;n-=t;} if(d_year>=400){t=(d_year+4)/400;n+=t;}

我直接复制了忘改了:)


我的主页 http://www.
2004-06-16 10:13
asilan
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2004-6-8
收藏
得分:0 

谢谢你版主......能不能帮我看看以下的程序有没错......

#include int week(int year,int month,int day,int n); void monthout(int year,int month); main() { int n,s,year,month,day,i;printf(" =========================================================\n === 日期查询程序 ===\n

========================================================="); do { printf("\n->>> 请选择要进行的操作\n [1]查询某天 [2]查询某月 [3]查询某年 [0]退出\n"); scanf("%d",&s); switch(s) { case 1:printf("请输入 year month day:\n "); scanf("%d%d%d",&year,&month,&day); if (month<0||month>12) { printf("\n !!-->>there's some thing wrong with month\n");break;}

}

2004-06-16 11:51
jzh2004
Rank: 1
等 级:新手上路
帖 子:341
专家分:0
注 册:2004-4-30
收藏
得分:0 
不全的程序怎么改错啊

我的主页 http://www.
2004-06-17 19:58
快速回复:版主再帮帮忙.....
数据加载中...
 
   



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

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