标题: [疑问] 万年历的C语言编法
hyi_020102
LU新生
Rank: 1



UID 90317
精华 0
积分 5
帖子 10
活跃指数 4
LU金币 14 个
LU金条 0 个
阅读权限 10
注册 2007-5-27
 
发表于 2007-5-27 16:38  资料  个人空间  短消息  加为好友 
万年历的C语言编法

内容:设计一个查询并打印万年历的程序。
要求:
1. 查询某年某月某日是星期几
2. 打印某年的某月的全月日历
3. 打印某年的全年日历
4. 退出

2. 在主菜单中输入1后,显示:
“请输入年月日(XXXX,XX,XX)”
运行后输出:XXXX年XX月XX日是星期X,是否继续查询(Y/N)?
如果输入Y,则重新显示 “请输入年月日(XXXX,XX,XX)”,否则回到主菜单。

3. 在主菜单中输入2后,显示:
“请输入要打印的月份(XXXX)”
运行后输出X月的日历,格式为:
X

4. 在主菜单中输入3后,显示:
“请输入要打印的年份(XXXX)”
运行后输出XXXX年的日历,
XXXX
X(月数)
0 1 2 3 4 5 6
S M T W T F S
x x x x x x x
x x x xx xx xx xx
xx xx xx xx xx xx xx
xx xx xx xx xx xx xx
xx xx xx
X(月数)
0 1 2 3 4 5 6
S M T W T F S
x x x x
x x x xx xx xx xx
xx xx xx xx xx xx xx
xx xx xx xx xx xx xx
xx xx xx xx xx
.
.
.
.
.
运行完后显示:“是否继续打印(Y/N)?”
如果输入Y,则重新显示,“请输入要打印的年份(XXXX)”,否则回到主菜单。
5. 在主菜单中输入4后,显示:“是否要真的退出(Y/N)?”
如果输入Y,结束程序运行,否则重新显示主菜单。

顶部
oraix
版主
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15


UID 69
精华 6
积分 313
帖子 499
活跃指数 90
LU金币 6413 个
LU金条 0 个
阅读权限 210
注册 2003-9-21
来自 中国
 
发表于 2007-5-27 19:45  资料  个人空间  主页 短消息  加为好友  QQ
这个主要是怎么计算星期和闰年了
找到那个天文上的公式,其他就是调打印格式了,简单

n年前做的题呵呵





::::uncle:::
:::oraix::::

oraix[at]hotmail.com


顶部
hyi_020102
LU新生
Rank: 1



UID 90317
精华 0
积分 5
帖子 10
活跃指数 4
LU金币 14 个
LU金条 0 个
阅读权限 10
注册 2007-5-27
 
发表于 2007-5-27 19:55  资料  个人空间  短消息  加为好友 
能不能帮我做做啊~~我急啊~~要交作业的~

顶部
原野
LU大天使
Rank: 6Rank: 6
辽辽草原,绿色悠人



LU爱心使者  
UID 7325
精华 8
积分 1693
帖子 3283
活跃指数 48
LU金币 1606 个
LU金条 30261 个
阅读权限 120
注册 2003-12-26
来自 泉城
 
发表于 2007-5-27 23:09  资料  个人空间  短消息  加为好友  添加 原野 为MSN好友 通过MSN和 原野 交谈 QQ
我在网上搜索的一个,可以借鉴下!

一个比较完满的万年历


这是我找到的一个万年历的程序,比较完满,也比较实用
#include"iostream.h"
#include"iomanip.h"
#include"stdlib.h"
leapyear(int a)/*是否是闰年*/
{
if((a%4==0&&a%100!=0)||(a%100==0&&a%400==0))
return (1);
else return (0);
}
int aa[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int cc[12]={31,29,31,30,31,30,31,31,30,31,30,31};
char bb[8][8]={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
ww(int a,int b,int c)
{
int n=0,m=0,i,j,k=0;
for(i=1;i<c;i++)
{
    if(leapyear(i)==1)
        m=m+366;
    else m=m+365;
}
for(j=1;j<b;j++)
{if(leapyear(c)==1) k=k+cc[j-1];
else k=k+aa[j-1];
}
n=(m+k+a)%7;
return n;
}
void yuefen(int m)
{
cout<<"最大天数是:";
if(m==2)
cout<<aa[m-1]+1;
else cout<<aa[m-1]<<endl;
}
void nianfen(int n)/*打印年份的日历*/
{
int i,j,k;
if(leapyear(n)==1)
{
for(j=1;j<=12;j++)
{
    cout<<j;
    cout<<"月份"<<endl;
    cout<<" 日"<<" 一"<<" 二"<<" 三"<<" 四"<<" 五"<<" 六"<<endl;
  for(i=0;i<ww(1,j,n);i++)
  {
  cout<<setw(4)<<"";
  }
  for(k=1;k<=cc[j-1];k++)
  {
  cout<<setw(4)<<k;
  if((ww(1,j,n)+k)%7==0)
  cout<<endl;
  }
  cout<<endl;
}
}
else
{
for(j=1;j<=12;j++)
{
    cout<<j;
    cout<<"月份"<<endl;
cout<<ww(1,j,n)<<endl;
    cout<<endl<<" 日"<<" 一"<<" 二"<<" 三"<<" 四"<<" 五"<<" 六"<<endl;
  for(i=0;i<ww(1,j,n);i++)
  {
  cout<<setw(4)<<"";
  }
  for(k=1;k<=aa[j-1];k++)
  {
  cout<<setw(4)<<k;
  if((ww(1,j,n)+k)%7==0)
  cout<<endl;
  }
  cout<<endl;
}
}
}
void nianyue(int n,int y)/*打印某年某月的月历*/
{
   int i,k;
   if(leapyear(n)==1)
   {
        cout<<" 日"<<" 一"<<" 二"<<" 三"<<" 四"<<" 五"<<" 六"<<endl;
  for(i=0;i<ww(1,y,n);i++)
  {
  cout<<setw(4)<<"";
  }
  for(k=1;k<=cc[y-1];k++)
  {
  cout<<setw(4)<<k;
  if((ww(1,y,n)+k)%7==0)
  cout<<endl;
  }
  cout<<endl;
   }
  else
  {     cout<<endl<<" 日"<<" 一"<<" 二"<<" 三"<<" 四"<<" 五"<<" 六"<<endl;
  for(i=0;i<ww(1,y,n);i++)
  {
  cout<<setw(4)<<"";
  }
  for(k=1;k<=aa[y-1];k++)
  {
  cout<<setw(4)<<k;
  if((ww(1,y,n)+k)%7==0)
  cout<<endl;
  }
  cout<<endl;
}
}
void main()
{
int n,m;
int day,month ,year;
while(1)
{
cout<<"***********************************:"<<endl;
cout<<"1查询某年某月某日是星期几"<<endl
<<"2是否为闰年"<<endl
<<"3查询某月的最大天数"<<endl
<<"4打印某年的全年日历"<<endl
<<"5打印某年某月的月历"<<endl
<<"6exit"<<endl
<<"***********************************:"<<endl;
cout<<"请输入要操作的指令:"<<endl;
  cin>>n;
switch(n)
{
case 1:cout<<"请输入要查询的日期:";
  cout<<"year:";
    cin>>year;
    cout<<endl<<"month:";
  cin>>month;
    cout<<endl<<"day:";
    cin>>day;
  cout<<"星期是:";
  cout<<bb[ww(day,month,year)]<<endl;break;
  switch(ww(day,month,year))
   {
    case 1:cout<<"星期一";break;
    case 2:cout<<"星期二";break;
    case 3:cout<<"星期三";break;
    case 4:cout<<"星期四";break;
    case 5:cout<<"星期五";break;
    case 6:cout<<"星期六";break;
    case 7:cout<<"星期日";break;
   }
    cout<<endl;break;
case 2:cout<<"请输入要查询的年份:";
  cin>>m;
  if(leapyear(m)==1) cout<<"是闰年"<<endl;
  else cout<<"不是闰年,请返回重新输入"<<endl;
  break;
case 3:cout<<"请输入月份:";
  cin>>m;
  yuefen(m);break;
case 4:cout<<"请输入所要打印年份:";
  cin>>m;
  nianfen(m);break;
case 5:cout<<"请输入年份:";
      cin>>n;
       cout<<endl<<"请输入月份:";
       cin>>m;
       cout<<endl;
       nianyue(n,m);break;
case 6:exit(0);
}
}
}

------





一杯茶,品人生沉浮
平常心,遍万千世界

<font color="blue">[url]
顶部
原野
LU大天使
Rank: 6Rank: 6
辽辽草原,绿色悠人



LU爱心使者  
UID 7325
精华 8
积分 1693
帖子 3283
活跃指数 48
LU金币 1606 个
LU金条 30261 个
阅读权限 120
注册 2003-12-26
来自 泉城
 
发表于 2007-5-27 23:19  资料  个人空间  短消息  加为好友  添加 原野 为MSN好友 通过MSN和 原野 交谈 QQ
这个程序比较全面,但有许多待优化的地方!变成风格、类实现等方面~有机会可以多琢磨下,不只是拿来用,懂得掌握思想和方法更有益!





一杯茶,品人生沉浮
平常心,遍万千世界

<font color="blue">[url]
顶部
原野
LU大天使
Rank: 6Rank: 6
辽辽草原,绿色悠人



LU爱心使者  
UID 7325
精华 8
积分 1693
帖子 3283
活跃指数 48
LU金币 1606 个
LU金条 30261 个
阅读权限 120
注册 2003-12-26
来自 泉城
 
发表于 2007-5-27 23:20  资料  个人空间  短消息  加为好友  添加 原野 为MSN好友 通过MSN和 原野 交谈 QQ
是’编程‘不是’变成‘





一杯茶,品人生沉浮
平常心,遍万千世界

<font color="blue">[url]
顶部
[广告] 记录自己的思想火花,留住每日的技术积累,尽在拥有属于自己独立域名的博客。
hyi_020102
LU新生
Rank: 1



UID 90317
精华 0
积分 5
帖子 10
活跃指数 4
LU金币 14 个
LU金条 0 个
阅读权限 10
注册 2007-5-27
 
发表于 2007-6-3 20:07  资料  个人空间  短消息  加为好友 
谢谢拉~~~~

顶部
[广告] 记录自己的思想火花,留住每日的技术积累,尽在拥有属于自己独立域名的博客。
hyi_020102
LU新生
Rank: 1



UID 90317
精华 0
积分 5
帖子 10
活跃指数 4
LU金币 14 个
LU金条 0 个
阅读权限 10
注册 2007-5-27
 
发表于 2007-6-3 20:08  资料  个人空间  短消息  加为好友 
你的东西不能用啊

顶部
[广告] 记录自己的思想火花,留住每日的技术积累,尽在拥有属于自己独立域名的博客。
 



当前时区 GMT+8, 现在时间是 2009-1-9 06:55
乐悠LoveUnix论坛-京ICP备05005823号

Thanks to Discuz!  © 2001-2007    Power by LoveUnix.net
Processed in 0.064205 second(s), 6 queries , Gzip enabled

清除 Cookies - 联系我们 - 乐悠LoveUnix - Archiver