| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 524 人关注过本帖
标题:C语言日历问题
只看楼主 加入收藏
loving桐
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2015-6-29
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:3 
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
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:10 
增加一行    char* month[12]={"JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC"};
再修改一行      printf("   %s                               %s\n",month[i],month[i+6]);

搞定

DO IT YOURSELF !
2015-07-01 09:55
loving桐
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2015-6-29
收藏
得分:0 
回复 2楼 wp231957
成功了!万分感谢!
2015-07-01 10:20
tini22
Rank: 1
等 级:新手上路
帖 子:11
专家分:8
注 册:2015-6-28
收藏
得分:0 
以下是引用loving桐在2015-7-1 10:20:20的发言:

成功了!万分感谢!

那就把这10分给他啊
2015-07-01 10:26
快速回复:C语言日历问题
数据加载中...
 
   



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

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