本文实例为大家分享了C语言实现万年历的具体代码,供大家参考,具体内容如下
一、学了C语言,相信大家都可以做出来。我们要实现的就是用户输入年,月,日。然后打印出来。
二、需要用到的知识点
1.for循环。2.if判断。3.函数的调用
如果您们学了图形库的话,可以贴图上去,效果更加好看。我没有素材,所以,直接用C语言来完成。
三、运行结果
四、我们用C语言代码实现
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
/************************************************************************
* 项目名称:万年历
* 项目描述:算法,判断
* 项目环境:VS2013
* 生成日期:2020-3-8
* 作者所属:追梦
*************************************************************************/
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
int year, month, day;
int run[12] = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; //闰年
int ping[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; //平年
char weekday[7][10] = { "一" , "二" , "三" , "四" , "五" , "六" , "日" }; //星期
void printStar() //打印
{
printf ( "**************************************************\n" );
}
void printBegin() //打印抬头
{
printf ( "\t\t万年历\t\n" );
printStar();
for ( int i = 0; i < 7; i++) //打印星期
{
printf ( "%s\t" , weekday[i]);
}
printf ( "\n" );
}
//打印下面的日期,判断当前年份是平年还是闰年
int leap( int year)
{
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) //闰年
return 1;
else if (year % 4 == 0 && year % 100 != 0 && year % 400 == 0) //闰年
return 1;
else
return 0; //平年
}
//计算year离1900年有多少天
int daySum( int year, int month, int day, int run[], int ping[])
{
//参照物1900-1-1-星期一(百度)
int i, sum = 0;
//计算年份天数,闰年+366,平年+365
for ( i = 1900; i < year;i++)
{
if (leap(i) == 1)
sum += 366;
else
sum += 365;
}
for (i = 0; i < month-1; i++) //计算月份的天数
{
if (leap(year) == 1)
sum += run[i];
else
sum += ping[i];
}
return sum;
}
//打印日历
void printData( int sum, int year, int month)
{
int result, temp, i; //result空格
result = sum % 7; //前面的空格就是余数---->0-6
//当前月份空余的天数,空格表示
for ( i = 0; i < result; i++)
{
printf ( "\t" );
}
temp = 7 - result; //开始打印1号
if (leap(year) == 1)
{
//数组下标是从0开始,月份从一号开始i=1
for (i = 1; i <= run[month - 1]; i++)
{
printf ( "%d\t" , i);
if (i == temp || (i - temp) % 7 == 0) //换行
printf ( "\n" );
}
printf ( "\n" );
}
else
{
for (i = 1; i <= ping[month - 1]; i++)
{
printf ( "%d\t" , i);
if (i == temp || (i - temp) % 7 == 0) //换行
printf ( "\n" );
}
printf ( "\n" );
}
}
int main()
{
system ( "color 2f" ); //改变黑窗口的颜色
printf ( "请输入年 月 日:" );
scanf ( "%d%d%d" , &year, &month, &day);
int sum = daySum(year, month, day, run, ping);
printBegin();
printData(sum, year, month);
system ( "pause" );
return 0;
}
|
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/qq_45893999/article/details/104727931