| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 588 人关注过本帖
标题:求助,请高手帮下忙,多谢!
只看楼主 加入收藏
lixuhao
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2005-12-9
收藏
 问题点数:0 回复次数:5 
求助,请高手帮下忙,多谢!
求助

编写一个函数,以一个日期某年某月某日为参数,返回该日期是星期几(已知公元一年一月一日是星期一),在MAIN()函数输入日期输出星期几。(提示:计算公无一年一月一日到该日期的天数,该天除以七的佘数是零是星期天,佘数为一是生期一,如此类推)

THANK YOU!

2005-12-10 14:28
p1s
Rank: 4
等 级:贵宾
威 望:10
帖 子:454
专家分:3
注 册:2005-11-4
收藏
得分:0 
#include "iostream.h"
#include "stdlib.h"
int day(int year,int month,int date);
void main()
{
int year,month,date;
cout <<"请输入日期(yyyy mm dd):";
cin >>year>>month>>date;
cout <<"这天是星期"<<day(year,month,date)<<endl;
}
int day(int year,int month,int date)
{
long number=0;
if (month<0 || month>12 || date<0 || date>31)
{
cout <<"输入的日期有误"<<endl;
exit(1);
}
number=year/400*(400*365+(4*24+1))+year%400/100*(365*100+24)+year%100/4*(4*365+1)+year%100%4*365;
switch (month)
{
case 12:
cout <<number <<endl;
number=number+30;
case 11:
cout <<number <<endl;
number=number+31;
case 10:
cout <<number <<endl;
number=number+30;
case 9:
cout <<number <<endl;
number=number+31;
case 8:
cout <<number <<endl;
number=number+31;
case 7:
cout <<number <<endl;
number=number+30;
case 6:
cout <<number <<endl;
number=number+31;
case 5:
cout <<number <<endl;
number=number+30;
case 4:
cout <<number <<endl;
number=number+31;
case 3:
cout <<number <<endl;
number=number+(((year%4==0 && year%100!=0)||year%400==0)?29:28);
case 2:
cout <<number <<endl;
number=number+31;
default:
;
}
cout <<number <<endl;
number=number+date-1;
return number%7;
}

好像还是有地方错了。我对过日子不怎么敏感的,哈哈。再请高手看看吧……
2005-12-10 16:21
unicorn
Rank: 4
等 级:贵宾
威 望:14
帖 子:1066
专家分:0
注 册:2005-10-25
收藏
得分:0 

恩。。。就是输入日期知星期吧。。。等等

编好了 算个挺简单的程序 有时间的话可以优化一下
#include<iostream>
using namespace std;

char* week(int y,int m,int d)
{
switch(m)
{
case 1:
case 10:m=6;break;
case 2:
case 3:
case 11:m=2;break;
case 9:
case 12:m=4;break;
case 4:
case 7:m=5;break;
case 5:m=7;break;
case 6:m=3;break;
case 8:m=1;break;
default :cout<<"erro!月份只能在1-12之间";break;
}
int sum=y/100%4+y/100%10*5.5+y%10*1.25+m+d;//年月日和星期的计算规律
if (sum>7)
sum%=7;
else sum;
char* w;
switch(sum)
{
case 1:w="星期一";break;
case 2:w="星期二";break;
case 3:w="星期三";break;
case 4:w="星期四";break;
case 5:w="星期五";break;
case 6:w="星期六";break;
case 7:w="星期日";break;
}
return w;
}
void main()
{
int year,month,date;
cout<<"请输入年:";cin>>year;
cout<<"\n请输入月份:"; cin>>month;
cout<<"\n请输入日期:"; cin>>date;
cout<<endl <<year<<"."<<month<<"."<<date<<"是"<<week(year,month,date); //调用函数
cout<<endl;
}

[此贴子已经被作者于2005-12-10 16:47:26编辑过]


unicorn-h.spaces. ◇◆ sava-scratch.spaces.  noh enol ! pue pu!w hw u! shemle aq ll!m noh 
2005-12-10 16:40
p1s
Rank: 4
等 级:贵宾
威 望:10
帖 子:454
专家分:3
注 册:2005-11-4
收藏
得分:0 
看来还是计算日期的式子有点搞啊……计算规律里面的小数是什么意思呢?
2005-12-10 16:44
unicorn
Rank: 4
等 级:贵宾
威 望:14
帖 子:1066
专家分:0
注 册:2005-10-25
收藏
得分:0 
以下是引用p1s在2005-12-10 16:44:00的发言:
看来还是计算日期的式子有点搞啊……计算规律里面的小数是什么意思呢?

就是计算出来的规律啊,好像高中数学有道题就是计算这种规律的。。。找找吧


unicorn-h.spaces. ◇◆ sava-scratch.spaces.  noh enol ! pue pu!w hw u! shemle aq ll!m noh 
2005-12-10 16:50
ado1986
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2006-9-24
收藏
得分:0 
#include <stdio.h>
int IsLeapYear( int year )
{
if ((year %4 == 0) && (year % 100 != 0) ||
(year % 400 == 0) )
return 1;
else
return 0;
}
showdata(int year,int month,int day)
{
int i,m;
int Year_Start=1;
long int Year_Days=0;
int Per_Year_Days;
int month1_day[]={31,28,31,30,31,30,31,31,30,31,30,31};
int month2_day[]={31,29,31,30,31,30,31,31,30,31,30,31};
clrscr();
while(Year_Start<year)
{
if(IsLeapYear(Year_Start))
Per_Year_Days=366;
else
Per_Year_Days=365;
Year_Days=Year_Days+Per_Year_Days;
Year_Start++;
}
if(IsLeapYear(year))
{for(i=0;i<month-1;i++)
Year_Days=Year_Days+month2_day[i];
Year_Days=Year_Days+day;
}
else
{for(i=0;i<month-1;i++)
Year_Days=Year_Days+month1_day[i];
Year_Days=Year_Days+day;
}
m=Year_Days%7;
switch(m)
{
case 0:
printf("Today is Sunday");
break;
case 1:
printf("Today is Monday");
break;
case 2:
printf("Today is Tusday");
break;
case 3:
printf("Today is Thirday");
break;
case 4:
printf("Today is Thusday");
break;
case 5:
printf("Today is Friday");
break;
case 6:
printf("Today is Satarday");
break;
}
}
main()
{
showdata(2006,9,24);
}
2006-09-24 11:49
快速回复:求助,请高手帮下忙,多谢!
数据加载中...
 
   



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

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