我这个万年历c语言代码问题出在哪呢?

时间:2008-05-10 22:50:32   来源:论坛整理  作者:  编辑:chinaitzhe
我想做个万年历的C语言的简单算法,就是想用3维数组来做,可是我作出来的总是不能很好的显示,按照我的代码,我发现我的日期数组填充过程有点问题,就是总是多出很多个0来,可是当我把wd=0;这句写到第2个for(i=0;i <12;i )语句后时也不行,  我用的TURBO C2.0编译的,希望哪位高手能帮帮我!
C/C code





Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/



/*注重本代码中的日期数组是DATE,不是DATA!!!!!!!*/

#include <stdio.h>

    int CaculateWeekDay(int year,int month,int day)

      { int week;

        if(month==1||month==2)

              { month =12;

             year--;

        }

        week=(day 2*month 3*(month 1)/5 year year/4-year/100 year/400)%7 day;

        return week;

       }

    /*暂时先不用它int leap(int yearNum)

    {

    if(yearNum%4==0&&yearNum0||yearNum@0==0);

         return 1;

       }*/



      int date[12][6][7];



      int day_tbl[][12]={{31,28,31,30,31,30,31,31,30,31,30,31},{31,29,31,30,31,30,31,31,30,31,30,31}};

main()

{

    int FirstDay,i,j,k,wd=0,day,leap;

    int Year;

    char title[]="SUN MON TUE WED THU FRI SAT";



    printf("Please input the year whose calendar you want to know: ");

    scanf("%d",&Year);

        

    FirstDay=CaculateWeekDay(Year,1,1);     /*输入年份的1月1号的日期*/

    leap=Year%4==0&&Year0||Year@0==0;   /*判定是否为闰年*/



    for(i=0;i<12;i  )

        for(j=0;j<6;j  )

           for(k=0;k<7;k  )

              date[i][j][k]=0;       /*对储存日期的3维数组进行初始化*/

    

    for(i=0;i<12;i  )

    for(day=1;day<=day_tbl[leap][i];day  )

    {   

        date[i][wd][FirstDay]=day;

                FirstDay=  FirstDay%7;

               if(FirstDay==0) 

            wd  ;   /* 完成对日期的填充*/

         }

        for(i=0;i<12;i  )

    {    

        for(k,wd=0;k<7;k  )

                   wd =date[i][5][k];

            wd=wd?6:5;          /*这里计算每个月的最大星期数*/

        printf(" %s\n",title);/*输出日期字符串*/

        for(j=0;j<wd;j  )

        {        for(k=0;k<7;k  )

                if(date[i][j][k])

                    printf("M",date[i][j][k]);

                else printf("    ");

                    

            printf("\n");

        }

    }

    puts("\n press any key to quit....");

    getch();

}

        

                



                

            

     


网友回复:
C/C code





Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/





//注重本代码中的日期数组是DATE,不是DATA!!!!!!!

#include <stdio.h>



int CaculateWeekDay(int year,int month,int day)

{ 

    int week;

    if(month==1||month==2)

    { 

        month =12;

        year--;

    }

    week=(day 2*month 3*(month 1)/5 year year/4-year/100 year/400)%7 day;

    return week;

}

    //暂时先不用它int leap(int yearNum)

    //{

    //if(yearNum%4==0&&yearNum0||yearNum@0==0);

    //return 1;

      // }

    

int date[12][6][7];

int day_tbl[][12]={{31,28,31,30,31,30,31,31,30,31,30,31},{31,29,31,30,31,30,31,31,30,31,30,31}};

main()

{

    int FirstDay,i,j,k,wd=0,day,leap;

    int Year;

    char title[]="SUN MON TUE WED THU FRI SAT";

        

    printf("Please input the year whose calendar you want to know: ");

    scanf("%d",&Year);

        

    FirstDay=CaculateWeekDay(Year,1,1);     //输入年份的1月1号的日期

    bool temp = (Year % 4 == 0) && (Year % 100) || (Year % 400==0);   //判定是否为闰年

    if(temp)

        leap = 1;

    else

        leap = 0;



    for(i=0;i<12;i  )

        for(j=0;j<6;j  )

            for(k=0;k<7;k  )

                date[i][j][k]=0;       //对储存日期的3维数组进行初始化

            

    for(i=0;i<12;i  )

    {

        wd = 0;

        for(day=1;day <= day_tbl[leap][i];day  )

        {   

            date[i][wd][FirstDay] = day;

            FirstDay =   FirstDay % 7;

            if(FirstDay == 0) 

                wd  ;   //完成对日期的填充

        }

    }



    

    for(i=0;i<12;i  )

    {    

        for(k=0,wd=0;k<7;k  )

            wd =date[i][5][k];

            wd = wd ? 6 : 5;          //这里计算每个月的最大星期数

            printf(" %s\n",title);//输出日期字符串

            for(j=0;j<wd;j  )

            {        

                for(k=0;k<7;k  )

                    if(date[i][j][k])

                        printf("M",date[i][j][k]);

                    else printf("    ");

                    printf("\n");

            }

    }

    puts("\n press any key to quit....");

    getch();

}




你这代码写的实在读起来很不爽!
网友回复:顺便建议你换个编译环境
dev-cpp 4.9.9.2就蛮不错的。。。
假如你想继续做好C的话。。。
网友回复:用记事本写的,代码不是很好看,对不起大家哦
网友回复:最后我再确定下在turbo c 2.0中能够运行的代码是
C/C code





Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/



#include <stdio.h>



int CaculateWeekDay(int year,int month,int day)

{ 

    int week;

    if(month==1||month==2)

    { 

        month =12;

        year--;

    }

    week=(day 2*month 3*(month 1)/5 year year/4-year/100 year/400)%7 day;

    return week;

}

   

    

int date[12][6][7];

int day_tbl[][12]={{31,28,31,30,31,30,31,31,30,31,30,31},{31,29,31,30,31,30,31,31,30,31,30,31}};

main()

{

    int FirstDay,i,j,k,wd=0,day,leap;

    int Year;

    char title[]="SUN MON TUE WED THU FRI SAT";

        

    printf("Please input the year whose calendar you want to know: ");

    scanf("%d",&Year);

        

    FirstDay=CaculateWeekDay(Year,1,1);     

     leap = (Year % 4 == 0) && (Year % 100) || (Year % 400==0);  

 

    for(i=0;i<12;i  )

        for(j=0;j<6;j  )

            for(k=0;k<7;k  )

                date[i][j][k]=0;       

            

    for(i=0;i<12;i  )

    {

        wd = 0;

        for(day=1;day <= day_tbl[leap][i];day  )

        {   

            date[i][wd][FirstDay] = day;

            FirstDay =   FirstDay % 7;

            if(FirstDay == 0) 

                wd  ;   

        }

    }



    

    for(i=0;i<12;i  )

    {    

        for(k=0,wd=0;k<7;k  )

            wd =date[i][5][k];

            wd = wd ? 6 : 5;          

            printf(" %s\n",title);

            for(j=0;j<wd;j  )

            {        

                for(k=0;k<7;k  )

                    if(date[i][j][k])

                        printf("M",date[i][j][k]);

                    else printf("    ");

                    printf("\n");

            }

    }

    puts("\n press any key to quit....");

    getch();

}



关键字:万年历,语言,代码,问题,
上一篇:返回值

相关文章

文章评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面