| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 818 人关注过本帖
标题:查询星期的C++程序
只看楼主 加入收藏
俗狼
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-5-9
收藏
 问题点数:0 回复次数:7 
查询星期的C++程序

初学c++,简单的编了个查询星期的程序.望各路高手指点.
//*************************************//
// name:ÍòÄêÀú
// producer:Ë×ÀÇ
// adress:nudt
// data:2006/5/1
// 1700--2050
//*************************************//

#include<iostream>
#include<string>
using namespace std;
int Monthday(int d,int m,int y) //¼ÆËãËù²éÈÕ¾àÀëÏÂÒ»ÄêµÄÌìÊý¡£
{
int md;
switch(m)
{
case 12:md=32-d;break;
case 11:md=62-d;break;
case 10:md=93-d;break;
case 9:md=123-d;break;
case 8:md=154-d;break;
case 7:md=185-d;break;
case 6:md=215-d;break;
case 5:md=246-d;break;
case 4:md=276-d;break;
case 3:md=307-d;break;
case 2:if(y%4==0&&y%100!=0||y%400==0)md=336-d; else md=335-d;break;
case 1:if(y%4==0&&y%100!=0||y%400==0)md=367-d; else md=366-d;break;
}
return md;
}
void Xingqi(int xq) //ÅжÏÊÇÐÇÆÚ¼¸¡£
{
switch(xq)
{
case 1:cout<<"Fri";break;
case 2:cout<<"Thu";break;
case 3:cout<<"Mar";break;
case 4:cout<<"Tue";break;
case 5:cout<<"Mon";break;
case 6:cout<<"Sun";break;
case 0:cout<<"Sat";break;
}
}
void main()
{
int year,month,day,md,d,i,n,m,xq,l=1;
char yesorno;
string s;
do
{
m=0;
do
{
if(l==0)
cout<<"Sorry! but you had a mistake!\nPlease try again!\n";
cout<<"\n**Enter the year you want to inqure!(1700--2050)\n";
cin>>year>>month>>day;
l=0;
}while(year<1700||year>2050||month>12||month<1||day<1||day>31);
l=1;
if(year<2000)
{
if(year!=1999)
for(i=1999;i>year;i--)
{
if(i%4==0&&i%100!=0||i%400==0)
n=366;
else n=365;
m=m+n;
}


md=Monthday(day,month,year);
xq=(m+md)%7;
cout<<year<<"/"<<month<<"/"<<day<<endl;
cout<<"This day is : ";
Xingqi(xq);
}
else
{
for(i=2000;i<=year;i++)
{
if(i%4==0&&i%100!=0||i%400==0)
n=366;
else n=365;
m=m+n;
}
d=m%7;
md=Monthday(day,month,year);
xq=md%7;
cout<<year<<"/"<<month<<"/"<<day<<endl;
cout<<"This day is : ";
Xingqi((xq+7-d)%7);
}
cout<<endl;
cout<<"Do you want to Try again?(y/n) ";
cin>>yesorno;
}while(yesorno=='y'||yesorno=='Y');
cout<<"thank you for your using!\n"<<"Baybay!"<<endl<<endl<<"Enter ""exit"" to out!\n";
getline(cin,s);
}
还有什么更简便的算法,真心请教.不胜感激!

[此贴子已经被作者于2006-5-24 19:26:17编辑过]

搜索更多相关主题的帖子: int Euml 
2006-05-21 08:59
zinking
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:35
帖 子:916
专家分:0
注 册:2004-12-5
收藏
得分:0 
思路因该是对的,但是其实有很多东西你都可以做成模块的
你没有去弄哦,呵呵

http://kongfuziandlife. http://codeanddesign.
2006-05-21 10:09
myajax95
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:30
帖 子:2978
专家分:0
注 册:2006-3-5
收藏
得分:0 
好像不太对,随便试了一下,2000年一月一日是星期六,你的程序得星期四。

http://myajax95./
2006-05-21 10:24
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 

编写一个显示该天距指定日期(已知时间包括年月日,星期几)
简单起见,你可以直接给出1970年1月1日的星期数,比如是3;
在给出一个算出该天的该年第多少天的函数(int year,int month,int day);
然后返回的数加上这一年到你给出年的这之间的天数,得到的总和%7后再+1+3(已知的星期数)就可以了

[此贴子已经被作者于2006-5-22 17:01:31编辑过]


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-05-21 23:04
寒江独酌
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-5-18
收藏
得分:0 
  起来很复杂哦!

2006-05-23 05:08
俗狼
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-5-9
收藏
得分:0 

谢谢各位前辈的指导.我再琢磨一下.


天行键,君子以自强不息!
2006-05-23 12:35
coloar123
Rank: 1
等 级:新手上路
帖 子:111
专家分:0
注 册:2005-1-6
收藏
得分:0 

两耳不闻窗外事,专心只读圣贤书
2006-05-23 19:00
俗狼
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-5-9
收藏
得分:0 
我修改过了,现在应用上应没什么问题了.

天行键,君子以自强不息!
2006-05-24 19:29
快速回复:查询星期的C++程序
数据加载中...
 
   



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

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