C语言编程题显示日历,C语言日历问题

已结贴√

问题点数:10 回复次数:3

ca56232b3bbedf9a539d07f37fffb99a.gif

3144d8b7615c79d9f638db40d5689d26.gif

a218af6549b45ee526caf607ebff1358.gif

0f8df0e29816ae721419de940fb833d1.gif

C语言日历问题

我是C语言初学者,在论坛上看到一篇日历程序(我稍微改动了下)。

现在显示的月份是1,2...12,怎样能变成显示是Jan,Feb...这样的。

还有就是能不能请大神说下这个程序的设计思路。

#include

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

{

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;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值