标题:C语言日历问题
取消只看楼主
loving桐
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2015-6-29
结帖率:100%
已结贴  问题点数:10 回复次数:1 
C语言日历问题
我是C语言初学者,在论坛上看到一篇日历程序(我稍微改动了下)。
 现在显示的月份是1,2...12,怎样能变成显示是Jan,Feb...这样的。
 还有就是能不能请大神说下这个程序的设计思路。

#include<stdio.h>
 void main()
 {
       int firstday(int year);

      int sw,leap,i,j,k,wd,day;  
      
      int date[12][6][7];         //定义一个三维数组 分别对应 月、周、日
     char title[] = "SUN MON TUE WED THU FRI SAT";
      int day_tab[][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}
                          };        //平年和闰年的月份天数
     int year;
      
      printf("请输入年份:");
      scanf("%d",&year);
      printf("                            year:%d\n",year);
      
      sw = firstday(year);        //计算这一年的第一天是星期几
    leap = (year%4 ==0 && year%100 != 0) || 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++)
          for( wd=0,day=1; day<=day_tab[leap][i]; day++)
          {
              date[i][wd][sw] = day;
              sw = ++sw%7;
              if(sw == 0)
                  wd++;
          }
         
         for( i=0; i<6; i++)
         {
            
             for(wd=0,k=0;k<7;k++)                   //将同一行的天数相加
               wd = wd + date[i][5][k] + date[i+6][5][k];
             wd=wd>0? 6:5;
             printf("\n");
             printf("   %d                                  %d\n",i+1,i+7);
             printf("   ___________________________       ___________________________\n");
             printf("   %s       %s   \n",title,title);
            
             for(j=0;j<wd;j++)
             {
                 
                 printf("  ");
                 for( k=0; k<7; k++)
                     if(date[i][j][k])
                         printf("%4d",date[i][j][k]);
                     else printf("    ");
                     printf("      ");
                 for( k=0; k<7; k++)
                     if(date[i+6][j][k])
                         printf("%4d",date[i+6][j][k]);
                     else printf("    ");
                     printf(" \n");
             }
         }
 }

 /*计算该年份第一天是星期几*/
int firstday(int year)
 {
      int leap(int ye);

      int i;
      long int n;

      
      n = year*365;

      for(i = 1; i < year; i++)
          if(leap(i))
              n += 1;   
      return (n%7);
 }

 int leap(int ye)
 {
      if( (ye%4 ==0 && ye%100 != 0) || ye%400 ==0 )
          return 1;
      else
          return 0;
 }
搜索更多相关主题的帖子: include C语言 title 日历 
2015-07-01 08:00
loving桐
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2015-6-29
得分:0 
回复 2楼 wp231957
成功了!万分感谢!
2015-07-01 10:20



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-454918-1-1.html




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

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