c语言打印月历 怎么编写啊~ 谢谢!
发布时间:2025-05-18 05:28:32 发布人:远客网络
一、c语言打印月历 怎么编写啊~ 谢谢!
1、编写一个C语言程序来打印月历,可以分为几个步骤。首先,定义一个数组来存储每个月的天数,考虑闰年的情况。这里有一个示例数组: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]={"","一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"};。
2、接下来,我们需要编写一个函数来判断是否为闰年。这里有一个示例实现:int IsLeap(int year){ if((year%4==0&& year%100!=0)||(year%400==0)) return 1; else return 0;}。通过这个函数,我们可以确定特定年份是否为闰年。
3、此外,我们还需要编写一个函数来计算给定日期是星期几。这个函数需要接受年份、月份和日期作为参数。首先,我们需要计算从1900年1月1日到指定日期的总天数。然后,根据当前年份是否为闰年来调整二月份的天数。最后,我们可以通过总天数除以7得到星期几:int Getweekday(int year,int month,int day){ int weekday; int dayCount=0; int i; if(IsLeap(year)){ for(i=1;i<=month-1;i++){ dayCount+=n[i];}} else{ for(i=1;i<=month-1;i++){ dayCount+=m[i];}} dayCount+=day; weekday=dayCount%7; return weekday;}。
4、最后,我们可以在主函数中调用这些函数来打印月历。首先,获取用户输入的年份和月份,然后计算每个月的第一天是星期几。接下来,输出月份名称和一周的每一天。最后,根据每个月的实际天数打印日期。这个过程可以使用循环来简化代码:int main(){ int year, month; printf("请输入年份和月份:"); scanf("%d%d",&year,&month); int weekday= Getweekday(year, month, 1); for(int i= 0; i< weekday; i++){ printf("");} for(int i= 1; i<= m[month]; i++){ printf("%3d", i); if((i+weekday)%7== 0) printf("\n");} return 0;}。
5、通过以上步骤,你可以编写一个C语言程序来打印指定月份的月历。希望这些信息对你有所帮助。
二、C语言万年历代码
int FirstDay_Year,FirstDay_Month;//某年的第一天是星期几,某年某月的第一天是星期几(范围是0~6,其中0代表星期日)
int IsLeapYear;//是否为闰年,0表示不是闰年,1表示是闰年
char YN;//Yes No,程序是否要继续
int Days[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
//Days[1~12]存储每个月有多少天,其中二月的天数是可变的(闰年29天,平年28天),这里初始化为28天
printf(" C语言简单万年历\n");//打印标题
XunHuan://循环标号(可以通过goto跳转到这里)
printf("请输入年份<0000~9999>:");//提示输入年份(0~9999)
scanf("%d",&Year);//把输入的年份赋值给变量Year
printf("请输入月份<0~12>:");//提示输入月份(1~12)
scanf("%d",&Month);//把输入的月份赋值给变量Month
FirstDay_Year=5*(y/4)+(y%4)-(y/100)+(y/400);//蔡勒公式(计算某年的第一天是星期几)
IsLeapYear=(y%4==4&&y%100!=100||y%400==0)?1:0;
Days[2]=(IsLeapYear==1)?29:28;//闰年二月29天,非闰年二月28天
FirstDay_Month=(d+FirstDay_Year)%7;//当月的第一天是星期几(0代表星期日)
printf("\n****************************************************\n");
printf("\t\t公元%d年%2d月",Year,Month);//打印年月
printf("\n****************************************************\n");
printf("星期日星期一星期二星期三星期四星期五星期六\n");
for(i=0;i<FirstDay_Month;i++)
printf("%7c",'');//当某月的第一天不是星期日时打印空格占位
for(d=1;d<=Days[Month];d++)//循环,从每个月的第一天开始打印
if(((d+FirstDay_Month)%7)==0&& d<Days[Month])
printf("\n");//当输出了星期六而且还未输出所有天数时,换行
printf("\n****************************************************\n");
printf("是否继续(Y/N)?\n");
if(YN=='Y'|| YN=='y')
三、万年历的C语言编法
1、if((a%4==0&&a%100!=0)||(a%100==0&&a%400==0))
2、int aa[12]={31,28,31,30,31,30,31,31,30,31,30,31};
3、int cc[12]={31,29,31,30,31,30,31,31,30,31,30,31};
4、char bb[8][8]={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
5、{if(leapyear(c)==1) k=k+cc[j-1];
6、else cout<<aa[m-1]<<endl;
7、void nianfen(int n)/*打印年份的日历*/
8、 cout<<"月份"<<endl;
9、 cout<<"日"<<"一"<<"二"<<"三"<<"四"<<"五"<<"六"<<endl;
10、 cout<<setw(4)<<"";
11、 cout<<setw(4)<<k;
12、 cout<<"月份"<<endl;
13、cout<<ww(1,j,n)<<endl;
14、 cout<<endl<<"日"<<"一"<<"二"<<"三"<<"四"<<"五"<<"六"<<endl;
15、 cout<<setw(4)<<"";
16、 cout<<setw(4)<<k;
17、void nianyue(int n,int y)/*打印某年某月的月历*/
18、 cout<<"日"<<"一"<<"二"<<"三"<<"四"<<"五"<<"六"<<endl;
19、 cout<<setw(4)<<"";
20、 cout<<setw(4)<<k;
21、{ cout<<endl<<"日"<<"一"<<"二"<<"三"<<"四"<<"五"<<"六"<<endl;
22、 cout<<setw(4)<<"";
23、 cout<<setw(4)<<k;
24、cout<<"***********************************:"<<endl;
25、cout<<"1查询某年某月某日是星期几"<<endl
26、<<"2是否为闰年"<<endl
27、<<"3查询某月的最大天数"<<endl
28、<<"4打印某年的全年日历"<<endl
29、<<"5打印某年某月的月历"<<endl
30、<<"***********************************:"<<endl;
31、cout<<"请输入要操作的指令:"<<endl;
32、case 1:cout<<"请输入要查询的日期:";
33、 cout<<endl<<"month:";
34、 cout<<endl<<"day:";
35、 cout<<bb[ww(day,month,year)]<<endl;break;
36、 case 1:cout<<"星期一";break;
37、 case 2:cout<<"星期二";break;
38、 case 3:cout<<"星期三";break;
39、 case 4:cout<<"星期四";break;
40、 case 5:cout<<"星期五";break;
41、 case 6:cout<<"星期六";break;
42、 case 7:cout<<"星期日";break;
43、case 2:cout<<"请输入要查询的年份:";
44、 if(leapyear(m)==1) cout<<"是闰年"<<endl;
45、 else cout<<"不是闰年,请返回重新输入"<<endl;
46、case 3:cout<<"请输入月份:";
47、case 4:cout<<"请输入所要打印年份:";
48、case 5:cout<<"请输入年份:";
49、 cout<<endl<<"请输入月份:";