| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1390 人关注过本帖
标题:红色代码是什么意思,程序可以运行的
只看楼主 加入收藏
神乎其技
Rank: 1
等 级:新手上路
帖 子:11
专家分:1
注 册:2011-9-19
结帖率:33.33%
收藏
已结贴  问题点数:10 回复次数:3 
红色代码是什么意思,程序可以运行的
各位高手,帮帮忙啊,别嫌麻烦啊!红色代码是什么意思啊???
红色代码是什么意思啊???
md为什么等于零啊???
#include <stdio.h>
#include <stdlib.h>
#include<conio.h>
int mdays(int y,int m){
if (m==2) return (y%4==0 && (y%100==0 || y%400==0))?29:28;
else if (m==4 || m==6 || m==9 || m==11) return 30;
else return 31;
}
void DayOfWeek()   
{   
int rtnDay;
int y,m,d;
char ch;
while (1)
{
  printf("请输入年月日(xxxx,xx,xx): ");
  scanf("%d,%d,%d", &y, &m, &d);
  fflush(stdin);
  rtnDay = (3*y-(7*(y+(m+9)/12))/4+(23*m)/9+d+17-((y+(m<3?-1:0))/100+1)*3/4) % 7;
  printf("%04d年%02d月%02d日 是 星期%d\n", y, m, d, rtnDay?rtnDay:7);
  printf("继续查询(y/n)");
  ch = getchar();
  if(ch != 'y' && ch != 'Y')
   break;
}
}
void GetMonth(int D, int md, int n)
{
int N ,m,d,y,c,Wd;
int i,maxday,i1;
if(md>=13||md<=0)
  printf("HAVE WRONG!");
else
{
  for(i1=0;;md++,i1++)
  {
  if(md==0)
   {
    md=12;
    D-=1;
   }
   else
    if(md==13)
    {
     md=1;
     D+=1;
    }
    m=md;
    printf("\n============%d,%2d============\n",D,md);
    if(0<m&&m<=12)
    {
     switch(m)
     {
     case 1:maxday=31;break;
     case 2:if(D%4==0&&D%100!=0||D%400==0)
          maxday=29;
         else
          maxday=28;
      break;
     case 3:maxday=31;break;
     case 4:maxday=30;break;
     case 5:maxday=31;break;
     case 6:maxday=30;break;
     case 7:maxday=31;break;
     case 8:maxday=31;break;
     case 9:maxday=30;break;
     case 10:maxday=31;break;
     case 11:maxday=30;break;
     case 12:maxday=31;break;
     default:printf("HAVE WRONG");
     }
     if(0<m&&m<=2)
     {
      N=D-1;
      m=m+10;
     }
     else
     {
      N=D;
      m=m-2;
     }
     c=N/100;
     y=N%100;
     Wd=((1+(13*m-1)/5+y+y/4+c/4-2*c)%7+7)%7;/*caiyz6301
孕1月w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1 蔡勒公式
公式中的符号含义如下,w:星期;c:世纪;y:年(两位数);m:月
(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月来计算,
比如2003年1月1日要看作2002年的13月1日来计算);d:日;[ ]代表取整,即只要整数部分。
*/
     printf(" SUN MOU TUE WED TUR FRI SAT\n");
     for(i=0;i<Wd;i++)
      printf("%4c",' ');
     for(d=1;d<=maxday;d++)
     {
      printf("%4d",d);
      Wd=(Wd+1)%7;
      if(Wd==0)
       printf("\n");
     }
    }
    else
     printf("HAVE WRONG!");
    if(i1==n)
     break;
  }
}
}
void MonthOfYear()
{
char ch;
int y, m;
while (1)
{
  printf("请输入年月(xxxx,xx): ");
  scanf("%d,%d", &y, &m);
  fflush(stdin);
  GetMonth(y, m, 0);
  printf("\n继续查询(y/n)");
  ch = getchar();
  if(ch != 'y' && ch != 'Y')
   break;
}
}
void GetYear()
{
char ch;
int y;
while (1)
{
  printf("请输入年: ");
  scanf("%d", &y);
  if(y==2011)
  {
printf("2011年2月4日(农历月初二)12:33 立春\n");
printf("农历正月十七2月19日08:25 雨水\n");
printf("农历二月初二3月6日06:30 惊蛰\n");
printf("二月十七3月21日07:21 春分");;
printf("4月5日(农历三月初三)11:12 清明\n");
printf("4月20日(三月十八)18:17 谷雨\n");
printf("2011年5月6日(农历四月初四)04:23 立夏\n");
printf("5月21日(四月十九)17:21 小满\n");
printf("6月6日(五月初五)08:27 芒种\n");
printf("6月22日(五月廿一日)01:17 夏至\n");
printf("7月7日(六月初七)18:42 小暑\n");
printf("月23日(六月廿三日)12:12 大暑\n");
printf("2011年立秋详细时间:阳历8月8日04:34(七月初九)\n");
printf("8月23日19:21 处暑(七月廿四日)\n");
printf("9月8日07:34 白露(农历八月十一)\n");
printf("9月23日17:05 秋分(八月廿六日)\n");
printf("10月8日23:19 寒露(九月十二)\n");
printf("10月24日02:30 霜降(九月廿八日)\n");
printf("2011年11月8日02:35 立冬(十月十三)\n");
printf("11月23日00:08 小雪(十月廿八日)\n");
printf("12月7日19:29 大雪(十一月十三)\n");
printf("12月22日13:30 冬至(农历十一月廿八日)\n");
printf("2012年1月6日06:44 小寒(十二月十三)\n");
printf("2012年1月21日00:10 大寒(十二月廿八日) \n");
  }
  fflush(stdin);
  GetMonth(y, 1, 11);
  printf("\n继续查询(y/n)");
  ch = getchar();
  if(ch != 'y' && ch != 'Y')
   break;
}
}
int main()
{int y,m,d,days,z; char ch;
system("color 64");
while(1)
{
  printf("请输入年月日(xxxx,xx,xx): ");
  scanf("%d,%d,%d", &y, &m, &d);
days=d;z=m;
while(z>1){days+=mdays(y,z-1);z--;}
printf(" 距离%04d年1月1日 %03d 天\n",y,days);
if(y==2011&&m==2&&d>=4&&d<=19)ch='a';
if(y==2011&&(m==2&&(d>19&&d<=29))||(y==2011&&m==3&&(d>=1&&d<=6)))ch='b';
if(y==2011&&m==3&&d>6&&d<=21)ch='c';
if(y==2011&&(m==3&&(d>21&&d<=31))||(y==2011&&m==4&&(d>=1&&d<=5)))ch='d';
if(y==2011&&m==4&&d>5&&d<=20)ch='e';
if(y==2011&&(m==4&&(d>20&&d<=30))||(y==2011&&m==5&&(d>=1&&d<=6)))ch='f';
if(y==2011&&m==5&&d>6&&d<=21)ch='g';
if(y==2011&&(m==5&&(d>21&&d<=31))||(y==2011&&m==6&&(d>=1&&d<=6)))ch='h';
if(y==2011&&m==6&&d>6&&d<=22)ch='i';
if(y==2011&&(m==6&&(d>22&&d<=30))||(y==2011&&m==7&&(d>=1&&d<=7)))ch='j';
if(y==2011&&m==7&&d>7&&d<=23)ch='k';
if(y==2011&&(m==7&&(d>23&&d<=31))||(y==2011&&m==8&&(d>=1&&d<=8)))ch='l';
if(y==2011&&m==8&&d>8&&d<=23)ch='m';
if(y==2011&&(m==8&&(d>23&&d<=31))||(y==2011&&m==9&&(d>=1&&d<=8)))ch='n';
if(y==2011&&m==9&&d>8&&d<=23)ch='o';
if(y==2011&&(m==9&&(d>23&&d<=30))||(y==2011&&m==10&&(d>=1&&d<=8)))ch='p';
if(y==2011&&m==10&&d>8&&d<=24)ch='q';
if(y==2011&&(m==10&&(d>24&&d<31))||(y==2011&&m==11&&(d>=1&&d<=8)))ch='r';
if(y==2011&&m==8&&d>8&&d<=23)ch='s';
if(y==2011&&(m==11&&(d>23&&d<=30))||(y==2011&&m==12&&(d>=1&&d<=7)))ch='t';
if(y==2011&&m==12&&d>7&&d<=22)ch='u';
if((y==2011&&(m==12&&(d>22&&d<=31)))||(y==2012&&m==1&&(d>=1&&d<=6)))ch='v';
if(y==2012&&m==1&&d>6&&d<=20)ch='w';
if(y==2012&&(m==1&&(d>20&&d<=31))||(y==2012&&m==2&&(d>=1&&d<=3)))ch='x';

switch(ch)
{case'a':printf("2011年2月4日(农历月初二)12:33 立春\n");break;
case'b':printf("农历正月十七2月19日08:25 雨水\n");break;
case'c':printf("农历二月初二3月6日06:30 惊蛰\n");break;
case'd':printf("二月十七3月21日07:21 春分");break;
case'e':printf("4月5日(农历三月初三)11:12 清明\n");break;
case'f':printf("4月20日(三月十八)18:17 谷雨\n");break;
case'g':printf("2011年5月6日(农历四月初四)04:23 立夏\n");break;
case'h':printf("5月21日(四月十九)17:21 小满\n");break;
case'i':printf("6月6日(五月初五)08:27 芒种\n");break;
case'j':printf("6月22日(五月廿一日)01:17 夏至\n");break;
case'k':printf("7月7日(六月初七)18:42 小暑\n");break;
case'l':printf("月23日(六月廿三日)12:12 大暑\n");break;
case'm':printf("2011年立秋详细时间:阳历8月8日04:34(七月初九)\n");break;
case'n':printf("8月23日19:21 处暑(七月廿四日)\n");break;
case'o':printf("9月8日07:34 白露(农历八月十一)\n");break;
case'p':printf("9月23日17:05 秋分(八月廿六日)\n");break;
case'q':printf("10月8日23:19 寒露(九月十二)\n");break;
case'r':printf("10月24日02:30 霜降(九月廿八日)\n");break;
case's':printf("2011年11月8日02:35 立冬(十月十三)\n");break;
case't':printf("11月23日00:08 小雪(十月廿八日)\n");break;
case'u':printf("12月7日19:29 大雪(十一月十三)\n");break;
case'v':printf("12月22日13:30 冬至(农历十一月廿八日)\n");break;
case'w':printf("2012年1月6日06:44 小寒(十二月十三)\n");break;
case'x':printf("2012年1月21日00:10 大寒(十二月廿八日) \n");break;
defult:printf("error\n");
}
printf("是否退出(y/n)");
fflush(stdin);
   ch = getchar();
   
   if(ch == 'y' || ch == 'Y')
    break;
}
while(1)
{
  system("cls");
  printf("1.查询星期\n");
  printf("2.查询月份\n");
  printf("3.显示一年\n");
  printf("4.退出程序\n");
  ch = getchar();
  fflush(stdin);
  switch(ch)
  {
  case '1':
   DayOfWeek();
   break;
  case '2':
   MonthOfYear();
   break;
  case '3':
   GetYear();
   break;
  case '4':
   printf("是否退出(y/n)");
   ch = getchar();
   fflush(stdin);
   if(ch == 'y' || ch == 'Y')
    exit(0);
   break;
  }
}
}
搜索更多相关主题的帖子: include return 年月日 
2011-09-19 20:11
神乎其技
Rank: 1
等 级:新手上路
帖 子:11
专家分:1
注 册:2011-9-19
收藏
得分:0 
求帮忙啊,,,,,,,,,,,,
2011-09-19 20:58
Toomj
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:257
专家分:1826
注 册:2011-5-17
收藏
得分:10 
就是月数嘛,0月是就是上一年的12月,所以md=12,D=D-1;
同理,13月就是下一年的1月,所以md=1,D=D+1;

不过算任意一天为星期几楼主你的方法太麻烦了,有更好的算法:
//计算某天是星期几的算法:
W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7
在公式中d表示日期中的日期,m表示月份数,y表示年数。
注意:在该公式中要把一月和二月看成是上一年的十三月和十四月
2011-09-23 10:38
donggegege
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:125
专家分:368
注 册:2011-5-1
收藏
得分:0 
00x
2011-10-10 21:39
快速回复:红色代码是什么意思,程序可以运行的
数据加载中...
 
   



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

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