| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2674 人关注过本帖
标题:各位高手,帮帮忙啊,别嫌麻烦啊!红色代码是什么意思啊???
只看楼主 加入收藏
神乎其技
Rank: 1
等 级:新手上路
帖 子:11
专家分:1
注 册:2011-9-19
结帖率:33.33%
收藏
已结贴  问题点数:20 回复次数:11 
各位高手,帮帮忙啊,别嫌麻烦啊!红色代码是什么意思啊???
红色代码是什么意思啊???
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 19:13
编程的乐趣
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:229
专家分:1027
注 册:2011-4-4
收藏
得分:3 
??
2011-09-19 19:19
神乎其技
Rank: 1
等 级:新手上路
帖 子:11
专家分:1
注 册:2011-9-19
收藏
得分:0 
这是我在网上下的程序,就是那输出一个月的函数Getmonth()中的那红色的那段不明白,求解释啊
2011-09-19 19:24
神乎其技
Rank: 1
等 级:新手上路
帖 子:11
专家分:1
注 册:2011-9-19
收藏
得分:0 
回复 2楼 编程的乐趣
这是我在网上下的,那段输出月份的函数Getmonth()红色代码md不明白不明白啊,
你运行试试,再看看,解释下,求你了,
,明天要答辩了,55555555555555.。。。。
2011-09-19 19:33
神乎其技
Rank: 1
等 级:新手上路
帖 子:11
专家分:1
注 册:2011-9-19
收藏
得分:0 
这论坛有多少人同时在线啊,我一直在等啊,没人肯帮忙吗?
那不懂可以问我,只要你解释清楚那红色部分代码‘’‘’‘
2011-09-19 19:54
神乎其技
Rank: 1
等 级:新手上路
帖 子:11
专家分:1
注 册:2011-9-19
收藏
得分:0 
5555555555555555555555555’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’
2011-09-19 20:13
luosiye
Rank: 2
等 级:论坛游民
帖 子:15
专家分:39
注 册:2011-9-8
收藏
得分:3 
程序代码:
if(md==0)
   {
    md=12;
    D-=1;
   }
   else
    if(md==13)
    {
     md=1;
     D+=1;
    }
靠,这段代码你都看不懂,还下段这么长的代码,下短一点的吗。
假如 md==0,->将12这个值赋给md.
D-=1;<==>D=D-1;  这两个表达式是等价的,还有一个D--,也是这个意思,后面是两个减号。
否则的话,md==13,则将1赋给md, D+=1 也就是 D=D+1,
这段代码肯定错了,
if(...)
{
   ...
}
else if(...)
{
   ...
}
这里一定还有一个else,要么就不会用else if,而是直接用else了。
 
2011-09-19 20:42
luosiye
Rank: 2
等 级:论坛游民
帖 子:15
专家分:39
注 册:2011-9-8
收藏
得分:2 
因为你的贴发得太烂了,所以没人回答,你去看一下有哪个会把这么长的代码贴出来,还不用程序代码的,发帖也要技术的哈,多多学习就ok啦。
而且,不知道你这段代码是哪里下的,如果答辩,还是去找过一段更好的代码吧,这段实在太次,连可读性都没有,其他的要求就更达不到了。
2011-09-19 20:46
神乎其技
Rank: 1
等 级:新手上路
帖 子:11
专家分:1
注 册:2011-9-19
收藏
得分:0 
回复 7楼 luosiye
这段代码可以运行的,我要问的是那段代码是干什么的,他求什么的?你运行试试看
2011-09-19 20:51
神乎其技
Rank: 1
等 级:新手上路
帖 子:11
专家分:1
注 册:2011-9-19
收藏
得分:0 
回复 8楼 luosiye
其实本来是让我做万年历的,太难了,我这做的是别人的代码加上我自己做的,程序没错的,只是那段代码看不懂,
我不把所有贴出来,你是无法理解的
2011-09-19 20:54
快速回复:各位高手,帮帮忙啊,别嫌麻烦啊!红色代码是什么意思啊???
数据加载中...
 
   



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

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