打印日历c语言函数 C语言打印月历
用C语言编写一个日历
# include stdio.h
创新互联公司主要从事网页设计、PC网站建设(电脑版网站建设)、wap网站建设(手机版网站建设)、响应式网站、程序开发、网站优化、微网站、微信小程序定制开发等,凭借多年来在互联网的打拼,我们在互联网网站建设行业积累了丰富的成都做网站、成都网站建设、网站设计、网络营销经验,集策划、开发、设计、营销、管理等多方位专业化运作于一体。
# include math.h
void printmonth(int m);
void printhead(int m);
int daysofmonth(int m);
int firstday(int y);
int year,weekday;
void main()
{
int i;
printf("请输入年份:");
scanf("%d", year);
weekday=firstday(year);
printf("\n\n");
printf(" %d年\n",year);
for(i=1;i=12;i++)
{
printmonth(i);
printf("\n");
}
printf("\n\n");
}
void printmonth(int m) //打印每月日历
{
int i,days;
printhead(m);
days=daysofmonth(m);
for(i=1;i=days;i++)
{
printf("%5d",i);
weekday=(weekday+1)%7;
if (weekday==0) printf("\n ");
}
}
void printhead(int m) //打印每月的日历头(判定起始位置)
{
int i;
printf("\n%d月 日 一 二 三 四 五 六\n",m);
printf(" ");
for(i=0;iweekday;i++)
printf(" ");
}
int daysofmonth(int m) //每月的天数
{
switch (m)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:return 31;
case 4:
case 6:
case 9:
case 11:return 30;
case 2:if (((year%4==0 year%100!=0)||year%400==0))
return 29;
else
return 28;
default: return 0;
}
}
int firstday(int y) //判断某年元旦是星期几
{
double s ;
s=floor(year-1+(year-1)/4.0-(year-1)/100.0+(year-1)/400.0+1);
return (int)s%7;
}
利用c语言输出某月日历
#include stdio.h
#include string.h
bool isLeapYear(int);
int getWeekDay(int, int, int);
int main(int argc, char const *argv[])
{
int year;
int month;
printf("输入日期(yyyy-mm):");
scanf("%d-%d-%d", year, month);//输入年和月
printf(" %d年%d月\n", year, month);//输出日历日历标题
printf("日 一 二 三 四 五 六\n");//输出星期
//本函数获取某个日期是星期几,这里获取每月的1号是星期几,返回是是[0-7]对应(星期天-星期六)
int week = getWeekDay(year, month, 1);
int i;
for (i = 0; i week; i++)//每月第一周前几天用空格填充
printf(" ");
int endDayOfMonth;//每个月的最后一天
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)
endDayOfMonth = 31;
else if (month == 2)
{
if (isLeapYear(year))
endDayOfMonth = 29;
else
endDayOfMonth = 28;
}
else
endDayOfMonth = 30;
int dayOfMonth = 1;
//从一号循环到本月末
while (dayOfMonth = endDayOfMonth)
{
printf("%2d ", dayOfMonth);
dayOfMonth++;
//每输出完星期六的日期后就换行(对应周数起点是从week开始的,所以要在天数上加上week)
if ((dayOfMonth + week- 1) % 7 == 0)
printf("\n");
}
printf("\n");
return 0;
}
//判断闰年
bool isLeapYear(int y)
{
if (y % 4 == 0 y % 100 != 0 || y % 400 == 0)
return true;
return false;
}
//获取某天是星期几返回值(0-7)
int getWeekDay(int y, int m, int d)
{
//计算星期几的固定公式,Y是年D是这个日期在本年的天数
//W = [Y-1] + [(Y-1)/4] - [(Y-1)/100] + [(Y-1)/400] + D
int days = d;
int i;
for (i = 1; i m; i++)
{
if (i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10 || i == 12)
days += 31;
else if (i == 2)
{
if (isLeapYear(y))
days += 29;
else
days += 28;
}
else
days += 30;
}
int temp = y - 1 + (int)((y - 1) / 4) - (int)((y - 1) / 100) + (int)((y - 1) / 400) + days;
return temp % 7;
}
c语言打印月历 怎么编写啊~ 谢谢!
我这儿有一个万年历的程序,楼主可以试着编写实现你所需要的功能。希望有所帮助。
#includestdio.h
#includestdlib.h
int m[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int n[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};
char w[7][3]={"日","一","二","三","四","五","六"};
char mon[13][7]={"","一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"};
/*判断是否为闰年*/
int IsLeap(int year)
{
if((year%4==0 year%100!=0)||(year%400==0))
return 1;
else
return 0;
}
/*计算某年某月某日是星期几*/
int Getweekday(int year,int month,int day)
{
int weekday;
int dayCount=0;
int i;
if(IsLeap(year))
{
for(i=1;imonth;i++)
dayCount+=n[i];
}
else
{
for(i=1;imonth;i++)
dayCount+=m[i];
}
dayCount=dayCount+day;
weekday=((year-1)+(year-1)/4-(year-1)/100+(year-1)/400+dayCount)%7;
return weekday;
}
/*判断某年某月某日是星期几的函数*/
void SelectDay()
{
int year,month,day;
char ch;
int weekday;
printf("请输入年月日(xxxx-xx-xx):\t");
scanf("%d-%d-%d",year,month,day);
weekday=Getweekday(year,month,day);
printf("\n");
printf("%d年%d月%d日是:星期%s\n",year,month,day,w[weekday]);
printf("\n您还需要继续查询吗?\t是(Y)/否(N)");
getchar();
ch=getchar();
if(ch=='y'||ch=='Y')
SelectDay();
}
/*输出某月的日历*/
void GetMonth(int year,int month )
{
int weekday,i,monthday;
weekday=Getweekday(year,month,1);
printf("日\t一\t二\t三\t四\t五\t六\n");
for(i=0;iweekday;i++)
printf("\t");
if(IsLeap(year))
monthday=n[month];
else
monthday=m[month];
for(i=1;i=monthday;i++)
{
printf("%2d\t",i);
weekday++;
if(weekday%7==0)
printf("\n");
}
printf("\n");
}
/*打印某年某月日历函数*/
void Month()
{
int year,month;
char ch;
printf("请输入年月(xxxx-xx):\t");
scanf("%d-%d",year,month);
printf("\n");
GetMonth(year,month );
printf("\n您还需要继续查询吗?\t是(Y)/否(N)");
getchar();
ch=getchar();
if(ch=='y'||ch=='Y')
Month();
}
/*打印某年日历函数*/
void Year()
{
int year,i;
char ch;
printf("请输入年份:\n");
scanf("%d",year);
for(i=1;i=12;i++)
{
printf("%s\n",mon[i]);
GetMonth(year,i);
printf("\n\n");
}
printf("\n您还需要继续查询吗?\t是(Y)/否(N)");
getchar();
ch=getchar();
if(ch=='y'||ch=='Y')
Year();
}
/*退出程序*/
void Exit()
{
char ch;
getchar();
printf("是否确定退出?\t是(Y)/否(N)");
ch=getchar();
if(ch=='y'||ch=='Y')
printf("感谢您的使用!!\n\n");
exit(0);
}
/*主函数*/
void main()
{
int choice;
while(1)
{
printf("欢迎使用该系统!!\n");
printf("**===**===**===**===**===**===**===**===**===**\n");
printf("1.查询某年某月某日是星期几\n");
printf("2.打印某年某月的全月日历\n");
printf("3.打印某年的全年日历\n");
printf("4.退出系统\n");
printf("**===**===**===**===**===**===**===**===**===**\n");
printf("请输入您需要进行的操作前面的序号: ");
scanf("%d",choice);
switch(choice)
{
case 1:SelectDay(); break;
case 2:Month(); break;
case 3:Year(); break;
case 4:Exit(); break;
}
}
}
c语言打印日历,大神帮我看看代码。。。,
改3个地方就可以了。
1.把PrintMonthCalender()中的
for(;i=m;i++)
{
startDay++;
printf("\t%d",i);
if(startDay==6)
printf("\n");
}
改成
for(;i=m;i++){
if(startDay++==6){
printf("\n");
startDay=0;
}
printf("\t%d",i);
}
2.把GetMonthDays()中的
case 2:
if(c==1)
return 29 ;break;
if(c==0)
return 28 ;break;
改成
case 2:
if(c==1) return 29;
else return 28;
3. 把GetWeekDay()中的
case 2: result+=30;
改成
case 2: result+=28;
并把
if (c==1)
result++;
改成if(c==1 month2) result++;
再把凡是紧跟在return后面的break删除;在system("pause")前加一句printf("\n")就OK了……
C语言编写日历
#include stdio.h
int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
void print_calendar(int y);
void main()
{
int y;
printf("Calendar system :\n");
printf("Please input a year between 1600 2500:");
while(scanf("%d",y)!=EOF)//输入年份
{
if (y1600 || y2500)
{
printf("Invalid input. Please try again!\n");
printf("Please input a year between 1600 2500:");
continue;
}
print_calendar(y);
}
}
void print_calendar(int y) //打印日历
{
int i,sum,days,k,m;
char monthname[12][20] = {"January","February","March","April","May","June","July","August","September","October","November","December"};
if((0==y%4y%100!=0)||0==y%400 ) //闰年判断
month[2]=29;
for(m=1;m13;m++)
{
days = 0;
for (i=1;im;i++) //计算m月1号是第几天
days+=month[i];
days++;
sum=y-1+(y-1)/4-(y-1)/100+(y-1)/400+days;
k=sum%7; //k是星期几,k=0星期日
printf("%s %d\n",monthname[m-1],y);
printf(" S M Tu W Th F S\n");
printf("%*d",3*(k+1)-1,1);//先输出3*(k+1)-1个空格,在输出1
k++;
for(i=2;i=month[m];i++)
{
if(k == 7)
{
printf("\n");
k=0;
}
if (k == 0)
printf("%2d",i);
else
printf("%3d",i);
k++;
}
printf("\n\n");
}
}
C语言“打印日历”的程序是什么?
#include stdio.h
void main()
{
int i,j,k,year,week;
int day[]={31,28,31,30,31,30,31,31,30,31,30,31};
char month[12][10]={"January","February","March","April","May","June","July","August","September","October","November","December"};
printf("Input year you want to print:");
scanf("%d",year);
if((year%4==0year%100!=0)||(year%400==0)) day[1]++; //判断是否闰年
week=(35+year+year/4-year/100+year/400)%7; //计算当年的1月1日是周几的公式
for(i=0;i12;i++)
{
printf("\n%s\n",month[i]); //输出月份的英文
printf("Sun Mon Tue Wed Thu Fri Sat\n"); //输出表头
for(k=0;kweek;k++) printf(" "); //每月一号对齐它的星期数
for(j=1;j=day[i];j++)
{
printf("%3d ",j);
if(++week=7)
{
printf("\n");
week=week%7;
}
}
printf("\n");
}
}
标题名称:打印日历c语言函数 C语言打印月历
URL网址:http://azwzsj.com/article/doohshs.html