一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C/C++ - C++實現萬年歷小功能

C++實現萬年歷小功能

2021-08-26 13:50silencebreak C/C++

這篇文章主要為大家詳細介紹了C++實現萬年歷小功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了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

延伸 · 閱讀

精彩推薦
  • C/C++C語言中炫酷的文件操作實例詳解

    C語言中炫酷的文件操作實例詳解

    內存中的數據都是暫時的,當程序結束時,它們都將丟失,為了永久性的保存大量的數據,C語言提供了對文件的操作,這篇文章主要給大家介紹了關于C語言中文件...

    針眼_6702022-01-24
  • C/C++詳解c語言中的 strcpy和strncpy字符串函數使用

    詳解c語言中的 strcpy和strncpy字符串函數使用

    strcpy 和strcnpy函數是字符串復制函數。接下來通過本文給大家介紹c語言中的strcpy和strncpy字符串函數使用,感興趣的朋友跟隨小編要求看看吧...

    spring-go5642021-07-02
  • C/C++學習C++編程的必備軟件

    學習C++編程的必備軟件

    本文給大家分享的是作者在學習使用C++進行編程的時候所用到的一些常用的軟件,這里推薦給大家...

    謝恩銘10102021-05-08
  • C/C++C/C++經典實例之模擬計算器示例代碼

    C/C++經典實例之模擬計算器示例代碼

    最近在看到的一個需求,本以為比較簡單,但花了不少時間,所以下面這篇文章主要給大家介紹了關于C/C++經典實例之模擬計算器的相關資料,文中通過示...

    jia150610152021-06-07
  • C/C++c++ 單線程實現同時監聽多個端口

    c++ 單線程實現同時監聽多個端口

    這篇文章主要介紹了c++ 單線程實現同時監聽多個端口的方法,幫助大家更好的理解和學習使用c++,感興趣的朋友可以了解下...

    源之緣11542021-10-27
  • C/C++深入理解goto語句的替代實現方式分析

    深入理解goto語句的替代實現方式分析

    本篇文章是對goto語句的替代實現方式進行了詳細的分析介紹,需要的朋友參考下...

    C語言教程網7342020-12-03
  • C/C++C++之重載 重定義與重寫用法詳解

    C++之重載 重定義與重寫用法詳解

    這篇文章主要介紹了C++之重載 重定義與重寫用法詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下...

    青山的青6062022-01-04
  • C/C++C語言實現電腦關機程序

    C語言實現電腦關機程序

    這篇文章主要為大家詳細介紹了C語言實現電腦關機程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    xiaocaidayong8482021-08-20
主站蜘蛛池模板: 好男人好资源在线观看免费 | 2021国产麻豆剧传媒剧情 | 1769亚洲欧美资源站 | 清纯漂亮女友初尝性过程 | 欧美1区 | 国产在线观看一区 | 午夜在线观看免费完整直播网 | 国产精品日本亚洲777 | 亚洲激情在线 | 亚洲风情无码免费视频 | 轻轻色在线视频中文字幕 | 91国产在线播放 | 好大好长好紧爽免费 | 高h扶她文肉| 国产成人精品日本亚洲网址 | 九九热在线视频观看这里只有精品 | 我的妹妹最近有点怪免费播放 | 国产高清在线播放免费观看 | 欧美性受xxxx88喷潮 | 精品视频久久久久 | 纲手被鸣人插 | a一区二区三区视频 | 日韩欧美国产一区二区三区 | 亚洲高清视频网站 | 成人国产精品一区二区不卡 | www日本高清视频 | 亚洲国产欧美另类va在线观看 | 91aaa免费免费国产在线观看 | 桥本有菜在线四虎福利网 | 91手机看片国产永久免费 | 婷婷色天使在线视频观看 | 免费在线视频一区 | 久久学生精品国产自在拍 | 52av我爱avhaose01| 国产日韩一区二区三区在线播放 | 鸥美毛片| 午夜久| 精品国产自在现线久久 | 日本午夜vr影院新入口 | 无码毛片内射白浆视频 | 轻轻操在线视频 |