C语言编程题显示日历,C语言日历问题
已結貼√
問題點數:10?回復次數:3
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;
}
總結
以上是生活随笔為你收集整理的C语言编程题显示日历,C语言日历问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2.5e2.0是合法的c语言常量,二级考
- 下一篇: c语言 内存搜索,怎么在一段内存中搜索一