c语言日历代码(一个c语言的日历显示程序)
本文目录
- 一个c语言的日历显示程序
- 利用c语言输出某月日历
- C语言 日历
- 求C语言编日历源代码的详细说明
- C语言程序编写日历
- c语言年历编程
- c语言 高手们 帮帮我吧 做一个日历 输入 年月 输出 该年该月的 日历
- 用C语言编写一个程序:输入任意一个年份,输出该年的日历,要求日历自上而下排成两列
- 如何用c语言做个日历表
一个c语言的日历显示程序
#include 《*****》
#include 《*****》
main()
{
//定义一个时间结构存储时间数据;
SYSTEMTIME *stm;
//定义了十二个月份的数组,用的时候直接调用
char month = {"January","February","March",
"April","May","June","July","August",
"September","October","November","December"};
//为时间结构体申请空间(c语言中必须)
stm = (SYSTEMTIME*)malloc(sizeof(SYSTEMTIME));
//获取系统时间
GetSystemTime(stm);
//显示时间
printf("%d\st %s %d",stm-》wDay,month,stm-》wYear);
}
利用c语言输出某月日历
#include 《*****》
#include 《*****》
bool isLeapYear(int);
int getWeekDay(int, int, int);
int main(int argc, char c***t *argv)
{
int year;
int month;
printf("输入日期(yyyy-mm):");
scanf("%d-%d-%d", &year, &month);//输入年和月
printf(" %d年%d月\n", year, month);//输出日历日历标题
printf("日 一 二 三 四 五 六\n");//输出星期
//本函数获取某个日期是星期几,这里获取每月的1号是星期几,返回是是对应(星期天-星期六)
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 = + 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语言 日历
#include 《*****》
#include 《*****》
//判断是否是闰年
bool isLeap(int year)
{
if((year%4==0 && year%100 !=0) || (year%400==0))
{
return true;
}
return false;
}
//返回指定年,指定月的天数(即返回某月的天数)
int getDays(int year,int month)
{
switch(month)
{
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;
}
if(isLeap(year))
{
return 29;
}
return 28;
}
//返回指定年月中该月的第一天的星期
int getWeekday(char date)
{
int j,k,m,q;
j=date-48;
k=date-48;
m=date-48;
q=1;
return (q+((m+1)*26/10)+k/4+j/4-2*j)%7;
}
void showTips()
{
printf("星期日 星期一 星期二 星期三 星期四 星期五 星期六\n");
}
int main()
{
char date;
int i,year,month,days,weekday,temp;
printf("请输入年月,格式为xxxx年x月,或者xxxx年xx月\n");
gets(date);
//strcpy(date,"2007年7月");
year=0;
for(i=0;i《4;i++)
{
year*=10;
year+=date-48;
}
//如果给定日期的月份是1位 即1~9
if(strlen(date)==9)
{
month=date-48;
}
//如果给定的日期的月份是2位 即10~12
else
{
month=(date-48;
}
days=getDays(year,month);
weekday=getWeekday(date);
printf("星期六 星期日 星期一 星期二 星期三 星期四 星期五\n");
temp=weekday;
for(i=0;i《temp;i++)
{
printf("\t");
}
for(i=1;i《=days;i++)
{
printf(" %d\t",i);
temp++;
if(temp==7)
{
printf("\n");
temp=0;
}
}
printf("\n");
return 0;
}
这是根据你提供的星期计算公式得出来的结果,所以不保证与当前的日历一致性,结果附图所示!
求C语言编日历源代码的详细说明
/*
稍微改了下对齐格式,加了注释
*/
/*
1、闰年的算法:
如果某年能被4整除但不能被100整除,
或者能被400整除,
则该年是闰年.
用表达式表示就是
(year
%4
==
0
&&
year%100
!=
0)
||
(year%400
==
0)
2、计算某一天是星期几:
已知1900年的1月1号为星期一,
然后就可以用某一天和1900年的1月1号相差的天数对7取余来求星期,
本题是用的公元1年的1月1号作为基准
*/
#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};
printf("Please
enter
the
year:
");
scanf("%d",&year);
//输入年份
while(Year_Start
《
year)
//从公元1年开始执行while循环,
该年的一月一号为星期一
{
if(
IsLeapYear(
Year_Start
)
)
Per_Year_Days
=
366;
//如果是闰年,
则一年有366天
else
Per_Year_Days
=
365;
//如果不是闰年,
则一年有365天
Year_days
=
Year_days
+
Per_Year_Days;
//Year_days为从公元1年到输入年份的前一年的天数的总和
Year_Start++;
}
for(
temp
=
1;
temp
《=12;
temp++
)
//temp从1到12,
对应一年内12个月
{
switch(
temp
)
//用switch语句将temp和12个月对应起来
{
case
1:
printf("
January(%d)\n",year);
//一月
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;
//每个星期有7天,
故用每年的天数对7取余
printf("Mon\tTue\tWed\tThu\tFri\tSat\tSun\n");
if(
i
!=
0
)
//如果余数不为零
for(
temp_i
=
0;
temp_i
《
i;
temp_i++)
printf("\t");
//则打印空格(这里用\t代替空格,
更加美观),
空格数为i
day
=
1;
//初始化day为1,
为下面的while循环做准备
if(
IsLeapYear(year)
&&
temp
==
2)
//如果输入的年份是闰年,
并且月份为2
while(
day
《=
month_day
)
//day为一循环变量,
取值为1-365(闰年的话为1-366)
{
if(
day
》1
)
//如果天数大于一
if(
Year_days
%
7
==
0
)
//如果是星期日,
则换行
printf("\n");
if(
day
》=
10
)
printf("%d\t",day);
//打印天数+空格
else
printf("%d\t",day);
Year_days++;
day++;
}
else
//如果不满足"输入的年份是闰年,
并且月份为2"
while
(day
《=
month_day)
{
if(
day
》
1
)
if(
Year_days
%
7
==
0
)
printf("\n");
if(
day
》=10
)
printf("%d\t",day);
else
printf("%d\t",day);
Year_days++;
day++;
}
printf("\n");
if(
getch()
==
’q’
)
//如果输入为q,
则退出程序
exit(0);
}
getch();
//每按一次键,
打印一个月份
}
int
IsLeapYear(
int
year
)
{
//判断是否是闰年,
是则返回1,
否则返回0
if
((year
%4
==
0)
&&
(year
%
100
!=
0)
||
(year
%
400
==
0)
)
return
1;
else
return
0;
}
C语言程序编写日历
/*你好,这个问题我来回答,希望能被采纳:*//*函数功能输出year的日历*/#include《*****》void
main(){int
a,b,c,d,e,f,i,j,k,n,m,year;printf("input
the
year:\n");
scanf("%d",&year);
//输入数据的初始化;b=year;c=year%4;d=year/4;e=d*1461+c*365;f=e%7;j=f;
//初始化Year年的第一天的星期;m=j;printf("***%d年的日历***\n",year);for(a=1;a《=12;a++)
//函数的主要部分,主要实现日历的打印部分
{
if(a==1||a==3||a==5||a==7||a==8||a==10||a==12)k=31;
else
if(a==4||a==6||a==9||a==11)k=30;
else
if((year%4==0&&year%100!=0)||(year%400==0))k=29;
else
k=28;
printf("%d月份\n
STAT
SUN
MON
TUE
WED
THUR
FRI\n",a);
m=j;
if(m《=5)m=m+1;
else
m=m-6;
for(n=1;n《=m;n++)printf("
");
for(i=1;i《=k;i++,j++)
{if(j==7)j=0;
if(i《10)printf("
%d",i);
else
printf("
%d",i);
if(j==5)printf("\n");
}
printf("\n\n\n");
}}
c语言年历编程
#include《*****》
static int year;
static int weekDay;
bool isLeapYear(int y) //判断是否是闰年
{
return(y%4==0&&y%100!=0||y%400==0); //闰年的条件就是年份同时能被4和100整除或
// 者能被400整除
}
long firstDayOfYear(int y) //求出输入的那年第一天是星期几
{
long n;
n=y*365;
for(int i=1;i《y;i++)
if(isLeapYear(i))
n+=1;
return n%=7;
}
void printHead(int m) //打印每个月的标题
{
if(m《10)
printf(" %d月 日 一 二 三 四 五 六\n",m);
else
printf(" %d月 日 一 二 三 四 五 六\n",m);
printf(" ");
for(int i=0;i《weekDay;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(isLeapYear(year))
return 29;
else
return 28;
}
return 0;
}
void printMonth(int m) //打印每月的日历
{
printHead(m);
int days=daysOfMonth(m);
for(int i=1;i《=days;i++)
{
if(i《10)
printf(" %d",i);
else
printf(" %d",i);
weekDay=(weekDay+1)%7;
if(weekDay==0)
{
printf("\n");
printf(" ");
}
}
}
void main() //主程序入口,接收输入的年份,调用函数打印日历
{
int y;
printf("请输入年份:");
scanf("%d",&y);
year=y;
if(year《1)
{
printf("输入年份不能小于1\n");
return;
}
weekDay=(int)firstDayOfYear(year);
printf(" %d年\n",year);
printf(" ========================================\n");
for(int i=1;i《=12;i++)
{
printf("\n");
printMonth(i);
printf("\n");
}
}
可以显示公元1世纪以后的所有年份的日历,第2和第3问其实都包含在第1问里,程序看懂了自然也就会了(话说为什么不能上传附件?)
c语言 高手们 帮帮我吧 做一个日历 输入 年月 输出 该年该月的 日历
#include《*****》
#include《*****》
main(){
//定义变量
struct tm t,*date;
time_t t_day;
int year,month;
int month_day;
int i,j;
struct tm *local;
time_t t_mow;
t_mow=time(NULL);
local=gmtime(&t_mow);
//输入年份和月份
printf("请输入年份:\n");
scanf("%d",&year);
printf("请输入月份:\n");
scanf("%d",&month );
if(month==2 ){
if(year%4==0 && year%100!=0)
month_day=29;
else
month_day=28;
}
else if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
{
month_day=31;
}
else
month_day=30;
printf("当前时间是: ");
printf(asctime(local));
printf("\n\n");
printf("当月天数是:%d \n\n 日历\n",month_day); //输出当前天数
printf("一\t二\t三\t四\t五\t六\t日\t\n"); //日历的第一行,显示一二三四五六日
for (i=1;i《=month_day;i++)
{
****_year=year-1900;
****_mon=month-1;
****_mday=i;
****_hour=0;
****_min=0;
****_sec=0;
****_isdst=0;
t_day=mktime(&t);
date=gmtime(&t_day);
if(i==1)
{
for(j=0;j《date-》tm_wday;j++)
printf("\t");
}
if(date-》tm_wday==6)
{
printf("%d\n",i);
}
else
printf("%d\t",i);
}
printf("\n\n",i);
}
用C语言编写一个程序:输入任意一个年份,输出该年的日历,要求日历自上而下排成两列
//万年历.
#include 《*****》
long int f(int year,int month)
{
if(month《3) return year-1;
else return year;
}
long int g(int month)
{
if(month《3) return month+13;
else return month+1;
}
long int n(int year,int month,int day)
{
return 1461L*f(year,month)/4+153L*g(month)/5+day;
}
int w(int year,int month,int day)
{
return(int) ((n(year,month,day)%7-621049L%7+7)%7);
}
int date;
int day_tbl={{31,28,31,30,31,30,31,31,30,31,30,31},{31,29,31,30,31,30,31,31,30,31,30,31}};
main()
{
int sw,leap,i,j,k,wd,day;
int year;
char title="SUM MON TUE WED THU FRI SAT";
printf("Please input the year whose calendar you want to know:\n");
scanf("%d%*c",&year);
sw=w(year,1,1);
leap=year%4==0&&year%100||year%400==0;
for(i=0;i《12;i++)
for(j=0;j《6;j++)
for(k=0;k《7;k++)
date=0;
for(i=0;i《12;i++)
for(wd=0,day=1;day《=day_tbl;day++)
{
date=day;
sw=++sw%7;
if(sw==0) wd++;
}
printf("\n|================== The Calendar of Year %d==================|\n|",year);
for(i=0;i《6;i++)
{
for(wd=0,k=0;k《7;k++)
wd+=date;
wd=wd?6:5;
printf(" %2d %s %2d %s|\n|",i+1,title,i+7,title);
for(j=0;j《wd;j++)
{
printf(" ");
for(k=0;k《7;k++)
if(date)
printf("%4d",date);
else printf(" ");
printf(" ");
for(k=0;k《7;k++)
if(date)
printf("%4d",date);
else printf(" ");
printf("|\n|");
}
}
puts("==============================================================|");
}
如何用c语言做个日历表
1、功能要求 :
1)输入任一年将显示出该年的所有月份日期,对应的星期
2)注意闰年情况
其显示格式要求如下:
1)份:中文英文都可以,
2)下一行显示星期,从周日到周六,中英文都可以
3)下一行开始显示日期从1号开始,并按其是周几实际情况与上面的星期数垂直对齐
2、例程:
#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 )
{
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) //输出,同上
{
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;
}
更多文章:
windows密码是什么(请问在win10里登入微软账户要输入windows密码,这是什么密码)
2026年4月24日 11:20
用冒泡法对10个整数排序(VB 从键盘上输入10个整数,用冒泡排序法对这10个数从小到大排序)
2026年4月24日 11:00
oracle中instr(oracle中查找一个字符串中某个字符的位置是什么函数)
2026年4月24日 10:40
cyberbully(the questi*** have turned up everything from stud)
2026年4月24日 10:00
php制作编辑个人资料(请问php做网站的时候如何编写如下图所示的表格啊类似于填写简历的表格,用户可以填写文字和上传图片)
2026年4月24日 09:40
oracle认证方式(Oracle认证证书的考试内容主要有哪些东西)
2026年4月24日 09:00




