服务器之家

服务器之家 > 正文

C++实现万年历小功能

时间:2021-08-26 13:50     来源/作者:silencebreak

本文实例为大家分享了C++实现万年历的具体代码,供大家参考,具体内容如下

用C++写了个简易的万年历。

具体功能如下:

1.打印指定年(用户输入)所有月份的年历

2.打印指定年指定月(用户输入)的月份

3.打印指定日期(用户输入)的星期数

4.可重复输入

贴上源码:

  1. #include<iostream>
  2. #include<windows.h>
  3. #include<iomanip>
  4. using namespace std;
  5. int number; //菜单键
  6. int year, month, day; //年、月、日
  7. int i, j, t; //for循环用的量
  8. int s; //星期X
  9. char c; //存放随机输入的数字,以实现“按任意键返回主菜单”的功能
  10. char months[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 }; //平年每个月的天数
  11.  
  12. void Pos(int x, int y); //光标位置
  13. void menu(); //主菜单函数
  14. void runnian(); //如是闰年则变第二个月天数28为29
  15. void oneyear(); //输出一整年的年历
  16. void onemonth(); //输出一个月的月历
  17. void xianshiweek(); //显示星期数
  18.  
  19. void Pos(int x, int y)//光标位置
  20. {
  21. COORD pos;
  22. HANDLE hOutput;
  23. pos.X = x;
  24. pos.Y = y;
  25. hOutput = GetStdHandle(STD_OUTPUT_HANDLE);
  26. SetConsoleCursorPosition(hOutput, pos);
  27. }
  28. void menu()//主菜单函数
  29. {
  30. Pos(40, 3);
  31. cout << "***********************************" << endl;
  32. Pos(40, 4);
  33. cout << "* 欢迎使用万年历 *" << endl;
  34. Pos(40, 5);
  35. cout << "* ---made by pjr *" << endl;
  36. Pos(40, 6);
  37. cout << "***********************************" << endl;
  38. Pos(20, 8);
  39. cout << "操作键:" << endl;
  40. Pos(20, 9);
  41. cout << "1.显示一年的年历" << endl;
  42. Pos(20, 10);
  43. cout << "2.显示一月的月历" << endl;
  44. Pos(20, 11);
  45. cout << "3.显示某一天是星期几" << endl;
  46. Pos(20, 12);
  47. cout << "0.退出" << endl;
  48. Pos(20, 14);
  49. cout << "请输入操作键(0~3):";
  50. cin >> number;
  51. if (number < 0 || number>3)
  52. {
  53. system("cls");
  54. Pos(20, 15);
  55. cout << "输入数字无效,请重新输入!" << endl;
  56. menu();
  57. }
  58. }
  59. void runnian() //如是闰年则变第二个月天数28为29
  60. {
  61. cin >> year;
  62. if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) //闰年判断公式
  63. {
  64. months[2] = 29;
  65. }
  66. }
  67. void oneyear() //输出一整年的年历
  68. {
  69. cout << "请输入年份:";
  70. runnian();
  71. system("cls"); //清屏
  72. cout << "请输入年份:" << year << endl << endl;
  73. s = (year - 1 + (year - 1) / 4 - (year - 1) / 100 + (year - 1) / 400 + 1) % 7; //该年1月1日的星期数
  74. for (i = 1; i <= 12; i++)
  75. {
  76. cout << i << "月份的月历如下:" << endl;
  77. cout << setw(6) << "日" << setw(6) << "一" << setw(6) << "二" << setw(6) << "三" << setw(6) << "四" << setw(6) << "五" << setw(6) << "六" << endl;
  78. for (j = 0; j < s; j++)
  79. {
  80. cout << setw(6) << " ";
  81. }
  82. for (t = 1; t <= months[i]; t++)
  83. {
  84. cout << setw(6) << t;
  85. s = (s + 1) % 7;
  86. if (s % 7 == 0) //当打印到星期六时,换行
  87. {
  88. cout << endl;
  89. }
  90. }
  91. cout << endl;
  92. }
  93. fflush(stdin);
  94. cout << "请按任意键返回主菜单:";
  95. cin >> c;
  96. system("cls");
  97. menu();
  98. }
  99. void onemonth()//输出一个月的月历
  100. {
  101. int s = 0;
  102. cout << "请输入年份:";
  103. runnian();
  104. cout << "请输入月份:";
  105. cin >> month;
  106. system("cls");
  107. cout << "请输入年份:" << year << endl << endl;
  108. cout << "请输入月份:" << month << endl << endl;
  109. for (i = 1; i <= month - 1; i++)
  110. {
  111. s = s + months[i]; //该年1月1日到所求日期前一天的天数
  112. }
  113. s = (year - 1 + (year - 1) / 4 - (year - 1) / 100 + (year - 1) / 400 + 1 + s) % 7; //所求日期的星期数
  114. cout << month << "月份的月历如下:" << endl;
  115. cout << setw(6) << "日" << setw(6) << "一" << setw(6) << "二" << setw(6) << "三" << setw(6) << "四" << setw(6) << "五" << setw(6) << "六" << endl;
  116. for (j = 0; j < s; j++)
  117. {
  118. cout << setw(6) << " ";
  119. }
  120. for (t = 1; t <= months[month]; t++)
  121. {
  122. cout << setw(6) << t;
  123. s = (s + 1) % 7;
  124. if (s % 7 == 0)
  125. {
  126. cout << endl;
  127. }
  128. }
  129. cout << endl;
  130. cout << "请按任意键返回主菜单:";
  131. cin >> c;
  132. system("cls");
  133. menu();
  134. }
  135. void xianshiweek() //显示星期数
  136. {
  137. int s = 0;
  138. cout << "请输入年份:";
  139. runnian();
  140. cout << "请输入月份:";
  141. cin >> month;
  142. cout << "请输入日期:";
  143. cin >> day;
  144. system("cls");
  145. cout << "请输入年份:" << year << endl << endl;
  146. cout << "请输入月份:" << month << endl << endl;
  147. cout << "请输入日期:" << day << endl << endl;
  148. for (i = 1; i <= month - 1; i++)
  149. {
  150. s = s + months[i];
  151. }
  152. s = (year - 1 + (year - 1) / 4 - (year - 1) / 100 + (year - 1) / 400 + day + s) % 7;
  153. cout << "显示的星期数如下:" << s << endl;
  154. cout << endl;
  155. cout << "请按任意键返回主界面:";
  156. cin >> c;
  157. system("cls");
  158. menu();
  159. }
  160. int main()//主函数
  161. {
  162. setlocale(LC_ALL, "chs");//转中文
  163. menu();
  164. while (number != 0)
  165. {
  166. switch (number)
  167. {
  168. case 1:
  169. {
  170. oneyear();
  171. break;
  172. }
  173. case 2:
  174. {
  175. onemonth();
  176. break;
  177. }
  178. case 3:
  179. {
  180. xianshiweek();
  181. break;
  182. }
  183. }
  184. months[2] = 28; //把months[2]变为初值
  185. }
  186. if (number == 0)
  187. {
  188. system("pause");
  189. }
  190. return 0;
  191. }

运行效果如下:

C++实现万年历小功能

C++实现万年历小功能

C++实现万年历小功能

C++实现万年历小功能

C++实现万年历小功能

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

原文链接:https://blog.csdn.net/qq_36224413/article/details/73302156

标签:

相关文章

热门资讯

yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
2021年耽改剧名单 2021要播出的59部耽改剧列表
2021年耽改剧名单 2021要播出的59部耽改剧列表 2021-03-05
返回顶部