| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 858 人关注过本帖
标题:[求助]有点难
只看楼主 加入收藏
azure旋律
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2006-7-4
收藏
 问题点数:0 回复次数:15 
[求助]有点难

编写一个函数,以年,月,日为参数,返回该日是星期几.
提示:以一个已知日期为参照,例如1980-01-01为星期二.
(会的朋友请帮帮忙,谢谢.)
我只知道前面的一部分,但不知后面的函数是怎样的.
main()
{
int i,a,b,c;
printf("\nPlease input year,month,day:");
scanf("%d,%d,%d",&a,&b,&c);
i=Get Week(a,b,c);
printf("\n%d-%d-%d is week %d",a,b,c,i );
getch();
}

搜索更多相关主题的帖子: 朋友 
2006-07-13 23:08
anygame
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-7-13
收藏
得分:0 
在scanf("%d,%d,%d",&a,&b,&c);里的那些%后面的d啊,f啊是什么意思啊?我在书上找不到不明白可能我是自学的吧!没人说所以问一下各位路过的!
2006-07-14 04:10
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-07-14 07:48
黑夜不来风
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-7-14
收藏
得分:0 
("%d,%d,%d",&a,&b,&c)中的d为实形 ,,简单的说就是带小 数的数字.建议多看一下C的书 都有介绍的.

做一个固执的人 始终量化标准...
2006-07-14 08:59
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
int IsLeap(int year)//判断是否为闰年
{
if(year%4==0&&year%100!=0||year%400==0)
return(1);
return(0);
}
void Get_Week(int y,int m,int d)
{
long nday=0;
int i=1980;
while(i<y)//处理年份
{
if(IsLeap(i)==1)
nday+=366;
else
nday+=365;
i++;
}
i=1;
while(i<m)//处理月份
{
switch(i)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:dayn+=31;break;
case 4:
case 6:
case 9:
case 11:dayn+=30;break;
case 2:
{
if(IsLeap(y)==1)
nday+=29;
else
nday+=28;
break;
}
}
}
nday+=d;//处理天数
switch(nday%7)//总天数对7求模
{
case 5:printf("Sunday\n");break;
case 6:printf("Monday\n");break;
case 0:printf("Tuesday\n");break;
case 1:printf("Wednesday\n");break;
case 2:printf("Thursday\n");break;
case 3:printf("Friday\n");break;
case 4:printf("Saturday\n");break;
}
}


/*直接在Get_Week输出星期,不知道是否满足楼主的要求,程序尚未调式,请楼主调试一下,大概思想就是这样的,呵呵*/

倚天照海花无数,流水高山心自知。
2006-07-14 10:58
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
在Get_Week()函数调用前加个printf("\n%d-%d-%d is",a,b,c);就OK 了

倚天照海花无数,流水高山心自知。
2006-07-14 11:04
azure旋律
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2006-7-4
收藏
得分:0 

先谢谢5楼的朋友,麻烦你再看一下哪里的修改,运行时1980年1月1日是星期三而不是
星期二,而2006年7月15日却是星期1,正确应该是星期六.
main()
{
int a,b,c;
printf("\nPlease input year,month,day:");
scanf("%d,%d,%d",&a,&b,&c);

printf("%d-%d-%d is ",a,b,c);
Get_Week(a,b,c);
getch();
}

int IsLeap(int year)
{
if(year%4==0&&year%100!=0||year%400==0)
return(1);
return(0);
}
int Get_Week(int y,int m,int d)
{
long nday=0;
int i=1980;
for(i=1980;i<y;i++)
{
if(IsLeap(i)==1)
nday+=366;
else
nday+=365;

}

while(i<m)
{
switch(i)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:nday+=31;break;
case 4:
case 6:
case 9:
case 11:nday+=30;break;
case 2:
{
if(IsLeap(y)==1)
nday+=29;
else
nday+=28;
break;
}

}

}

nday+=d;
switch(nday%7)
{
case 5:printf("Sunday\n");break;
case 6:printf("Monday\n");break;
case 0:printf("Tuesday\n");break;
case 1:printf("Wednesday\n");break;
case 2:printf("Thursday\n");break;
case 3:printf("Friday\n");break;
case 4:printf("Saturday\n");break;
}
}

2006-07-15 18:57
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

#include<stdio.h>
int IsLeap(int year)//判断是否为闰年
{
if(year%4==0&&year%100!=0||year%400==0)
return(1);
return(0);
}
void Get_Week(int y,int m,int d)
{
long nday=0;
int i=1980;
while(i<y)//处理年份
{
if(IsLeap(i)==1)
nday=nday+366;
else
nday=nday+365;
i++;
}
i=1;
while(i<m)//处理月份
{
switch(i)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:nday=nday+31;break;
case 4:
case 6:
case 9:
case 11:nday=nday+30;break;
case 2:
{
if(IsLeap(y)==1)
nday=nday+29;
else
nday=nday+28;
break;
}
}
i++;
}
nday=nday+d-1;//处理天数
nday=nday%7;
switch(nday)//总天数对7求模
{
case 5:printf("Sunday\n");break;
case 6:printf("Monday\n");break;
case 0:printf("Tuesday\n");break;
case 1:printf("Wednesday\n");break;
case 2:printf("Thursday\n");break;
case 3:printf("Friday\n");break;
case 4:printf("Saturday\n");break;
}
}

int main()
{
int a,b,c;
printf("\nPlease input year,month,day:");
scanf("%d%d%d",&a,&b,&c);
printf("\n%d-%d-%d is week ",a,b,c);
Get_Week(a,b,c);
return(0);
}
/*我已经调试过了,可以满足楼主的要求*/


倚天照海花无数,流水高山心自知。
2006-07-15 20:13
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
不好意思上次没有调试,所以忽律了一些细节.

倚天照海花无数,流水高山心自知。
2006-07-15 20:14
王者
Rank: 1
等 级:新手上路
帖 子:96
专家分:0
注 册:2006-7-15
收藏
得分:0 
那这个程序只能算出1980以后的日子咯?
对吗?

2006-07-15 22:29
快速回复:[求助]有点难
数据加载中...
 
   



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

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