当前位置: 代码迷 >> C语言 >> [求助]有点难
  详细解决方案

[求助]有点难

热度:116   发布时间:2006-07-16 11:08:11.0
感谢8楼的朋友,问题已解决.谢谢!
----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽

2006-07-16 03:13:48
nuciewth

来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9791
专家分:183
注 册:2006-5-23
  得分:0 
以下是引用黑夜不来风在2006-7-14 8:59:11的发言:
("%d,%d,%d",&a,&b,&c)中的d为实形 ,,简单的说就是带小 数的数字.建议多看一下C的书 都有介绍的.

呵呵,书还是要看,基本的语法还是要熟记,%d不是整型么?呵呵,%f 才是浮点型


----------------解决方案--------------------------------------------------------

%后面的d啊f的,看看潭老师的书就明白


----------------解决方案--------------------------------------------------------

要计算包括1980年以前的年份,只需将i=1980改为i=1;
再改一下最后一部分就行;如:
#include<stdio.h>
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);
}
Get_Week(int y,int m,int d)
{
unsigned long nday=0;
int i=1;
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)
{
case 6:printf("Sunday\n");break;
case 0:printf("Monday\n");break;
case 1:printf("Tuesday\n");break;
case 2:printf("Wednesday\n");break;
case 3:printf("Thursday\n");break;
case 4:printf("Friday\n");break;
case 5:printf("Saturday\n");break;
}
}


----------------解决方案--------------------------------------------------------
呵呵,只要初始化改变就可以了。
----------------解决方案--------------------------------------------------------
  相关解决方案