c语言日历代码(一个c语言的日历显示程序)

:暂无数据 2026-04-24 10:20:02 0
很多朋友初次接触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; 
}

知识的价值在于流动。如果你从本文中获益,请将它流动给下一个需要的人(分享)。
本文编辑:admin

更多文章:


推箱子c语言程序代码(如何用C语言编写控制台小游戏)

推箱子c语言程序代码(如何用C语言编写控制台小游戏)

今天这份关于推箱子c语言程序代码的指南,将用80%的篇幅讲透如何用C语言编写控制台小游戏这个决定成败的细节,绝对让你不虚此行。

2026年4月24日 12:00

昆明程序员工资一般多少(程序员工资一般多少)

昆明程序员工资一般多少(程序员工资一般多少)

大家好,关于昆明程序员工资一般多少很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于程序员工资一般多少的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

2026年4月24日 11:40

windows密码是什么(请问在win10里登入微软账户要输入windows密码,这是什么密码)

windows密码是什么(请问在win10里登入微软账户要输入windows密码,这是什么密码)

本文将围绕windows密码是什么展开,重点探讨三个方面:请问在win10里登入微软账户要输入windows密码,这是什么密码的基本概念、常见误区以及实践应用。让我们开始吧。

2026年4月24日 11:20

用冒泡法对10个整数排序(VB 从键盘上输入10个整数,用冒泡排序法对这10个数从小到大排序)

用冒泡法对10个整数排序(VB 从键盘上输入10个整数,用冒泡排序法对这10个数从小到大排序)

用冒泡法对10个整数排序的背后,隐藏着怎样的秘密?VB 从键盘上输入10个整数,用冒泡排序法对这10个数从小到大排序又在其中扮演了何种角色?带着疑问,我们一起探秘。

2026年4月24日 11:00

oracle中instr(oracle中查找一个字符串中某个字符的位置是什么函数)

oracle中instr(oracle中查找一个字符串中某个字符的位置是什么函数)

最新数据显示,关注oracle中instr的人中,超过70%都对oracle中查找一个字符串中某个字符的位置是什么函数抱有浓厚兴趣。本文将满足这一核心需求。

2026年4月24日 10:40

c语言日历代码(一个c语言的日历显示程序)

c语言日历代码(一个c语言的日历显示程序)

很多朋友初次接触c语言日历代码可能会觉得有点陌生,这很正常。今天这篇文章,咱们就一起把一个c语言的日历显示程序这事儿聊透,希望能帮您理清思路。

2026年4月24日 10:20

cyberbully(the questi*** have turned up everything from stud)

cyberbully(the questi*** have turned up everything from stud)

有没有这种经历:明明想搞懂cyberbully,却被the questi*** have turned up everything from stud卡住了脖子?今天这篇文章,就是专治这种“卡脖子”问题的。

2026年4月24日 10:00

php制作编辑个人资料(请问php做网站的时候如何编写如下图所示的表格啊类似于填写简历的表格,用户可以填写文字和上传图片)

php制作编辑个人资料(请问php做网站的时候如何编写如下图所示的表格啊类似于填写简历的表格,用户可以填写文字和上传图片)

本篇文章给大家谈谈php制作编辑个人资料,以及请问php做网站的时候如何编写如下图所示的表格啊类似于填写简历的表格,用户可以填写文字和上传图片对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年4月24日 09:40

svg微信排版什么意思(微信公众号正文排版怎么做)

svg微信排版什么意思(微信公众号正文排版怎么做)

承接之前对svg微信排版什么意思的讨论,本篇我们将视角下沉,专门来聊聊实操中无法回避的微信公众号正文排版怎么做问题,让知识落地。

2026年4月24日 09:20

oracle认证方式(Oracle认证证书的考试内容主要有哪些东西)

oracle认证方式(Oracle认证证书的考试内容主要有哪些东西)

各位老铁们好,相信很多人对oracle认证方式都不是特别的了解,因此呢,今天就来为大家分享下关于oracle认证方式以及Oracle认证证书的考试内容主要有哪些东西的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

2026年4月24日 09:00

最近更新

cyberbully(the questi*** have turned up everything from stud)
2026-04-24 10:00:02 浏览:0
热门文章

split函数 sql(求sql split函数的用法)
2026-03-26 20:40:01 浏览:1
sql server解压安装教程(安装**L Server2008时,出现“查找**L Server2008 安装媒体”怎么解决啊)
2026-03-27 01:20:02 浏览:1
phpweb 采用wamp(php环境搭建)
2026-03-28 14:00:01 浏览:1
标签列表