刚回答了一个别人的问题,和你的题目是一样的,有源程序,要的是注释,我加上了注释,现在把它给你。
#include
#include
#include
int IsLeapYear(int); //声明头文件和函数
void main()
{
int i;
int day;
int year;
int temp;
int temp_i;
long int Year_days = 0;
int Year_Start = 1;
int Per_Year_Days;
int month_day[]={31,28,31,30,31,30,31,31,30,31,30,31,29}; //每个月的天数,最后一个是闰年2月
printf("Please enter the year: ");
scanf("%d",&year); //输入年份
while(Year_Start < year) //计算从公元1年1月1日到你所查询年份前一年的天数,是为了以后确定这一年的第一天是星期几
{
if( IsLeapYear( Year_Start ) ) //确定一年的天数,闰年为366天,一般为365天
Per_Year_Days = 366;
else
Per_Year_Days = 365;
Year_days = Year_days + Per_Year_Days;
Year_Start++;
}
for( temp = 1; temp <=12; temp++ ) //循环输出每个月的日历
{
switch( temp )
{
case 1:
printf(" January(%d)\n",year); //如 January(2008)
break;
case 2:
printf(" February(%d)\n",year);
break;
case 3:
printf(" March(%d)\n",year);
break;
case 4:
printf(" April(%d)\n",year);
break;
case 5:
printf(" May(%d)\n",year);
break;
case 6:
printf(" June(%d)\n",year);
break;
case 7:
printf(" July(%d)\n",year);
break;
case 8:
printf(" August(%d)\n",year);
break;
case 9:
printf(" September(%d)\n",year);
break;
case 10:
printf(" October(%d)\n",year);
break;
case 11:
printf(" November(%d)\n",year);
break;
case 12:
printf(" December(%d)\n",year);
break;
}
i = Year_days % 7; //计算这个月第一天是星期几
printf("Mon Tue Wed Thu Fri Sat Sun\n");
if( i != 0 )
for( temp_i = 0; temp_i < i; temp_i++) //第一天不是星期一,在前面补空格,本来的空格少了,我加了两个
printf(" ");
day = 1;
if( IsLeapYear(year) && temp == 2) //闰年的2月
while( day <= month_day[12] )
{
if( day >1 )
if( Year_days % 7 == 0 ) //如果不是1号且昨天是星期天,输入回车, 换行
printf("\n");
if( day >= 10 ) //如果大于或等于10号则输出日期并加2个空格,小于10号输出日期并加3个空格
printf("%d ",day); //开始没想到这几行是干嘛用的,只要一个输出就好嘛,后来才想到是用来调整格式的
else //只是他并没有调整好,我做了下修改,现在很整齐了
printf("%d ",day);
Year_days++;
day++;
}
else //不是闰年2月的
while (day <= month_day[temp-1]) //输出,同上
{
if( day > 1 )
if( Year_days % 7 == 0 )
printf("\n");
if( day >=10 ) //理由同上
printf("%d ",day);
else
printf("%d ",day);
Year_days++;
day++;
}
printf("\n");
if( getch() == 'q' ) //输入q退出程序
exit(0);
}
getch();
}
int IsLeapYear( int year ) //判断是否为闰年
{
if ((year %4 == 0) && (year % 100 != 0) || //年份能被4整除且不能被100整除 或者 能被400整除的为闰年
(year % 400 == 0) )
return 1;
else
return 0;
}
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
void main(int argc, char** argv)
{
int yue[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, n, k=0, i, j, y, x, z;
char year[12][4] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"},
week[7][4] = {"Sun","Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
if ( argc < 2 )
{
printf( " Parameter is error.\n");
return;
}
if ( argc >= 2 )
{
i = strlen ( argv[1] );
for ( j = 0; j < i; j++ ) //求年数
{
y = y*10 + ( argv[1][j] - '0' );
}
n = y % 400;
n = ( n + (int)( n/4 ) - (int)( n/100 ) )%7;
if ( (y%4 == 0) && (y%100 != 0)) //润年二月29天
{
yue[1] = 29;
n = (n + 5)%7;
}
else if ( y%400 == 0 )
{
yue[1] = 29;
n = (n + 5)%7;
}
else
{
n = (n + 6)%7;
}
}
if ( argc >= 2 )
{
printf ( "%12d", y);
for(i = 0; i < 7; i++)
{
for( j = 0; j < 9; j++) //控制空格数
{
printf ( " ");
}
printf ( "%s", week[i] );
}
/*if ( n == 0 )
{
n = 7;
}*/
k = n + 1;
for ( i = 0; i < 12; i++)
{
printf("\n");
for( j = 0; j < 9; j++) //控制空格数
{
printf ( " ");
}
printf ( "%s\n", year[i] );
for ( j = 0; j < 12*(k+1); j++ ) //控制空格数
{
printf(" ");
}
for ( j = 1; j <= yue[i]; j++)
{
printf ( "%12d", j );
k++;
if( k%7 == 0)
{
printf("\n");
for( n = 0; n < 12; n++) //控制空格数
{
printf ( " ");
}
k = 0;
}
}
}
}
}
我的运行已经通过了,你是不是不会运行呀!
void main(int argc, char** argv)
这样的不知道怎么运行吗?