第十一屆藍橋杯C++青少年組中/高級組選拔賽2019年真題解析

一、單選題

第1題

一個C++語言的源程序中,有關主函數的說法正確的是( ).

A:可以有多個主函數
B:必須有一個主函數
C:必須有主函數和其他函數
D:可以沒有主函數

答案:

第2題

在下面的條件語句中(其中s1和s2代表C++語言的語句),只有一個在功能上與其它三個語句不等價,它是( )。

A:if(a)s1;else s2;
B:if(a==0)s2;else s1;
C:if(a!=0)s1;else s2:
D:if(a==0)s1;else s2;

答案:

第3題

有如下程序段,則以下說法中正確的是( )。

int k=5do
{k--;
}while(k<=0;

A:循環執行5次
B:循環體語句一次也不執行
C:循環是無限循環
D:循環體語句執行一次

答案:

第4題

桌上放著紅桃、黑桃和梅花三種牌,共20張。以下說法中正確的是( )
桌上至少有一種花色的牌少于6張
桌上至少有一種花色的牌多于6張
桌上任意兩種牌的總數將不超過19張

A:(1)、(2)
B:(1)、(3)
C:(2)、(3)
D:(1)、(2)和(3)

答案:

第5題

小藍和小青以及他們的爸爸媽媽共計6個人外出游玩,乘坐有6個座位的游覽車,游覽車每排只有1個座位,每人都要單獨坐一個座位·為安全起見,車的首尾兩座一定要坐兩位爸爸:小藍和小青一定要前后挨著坐,那么,這6人的排座方法共有( )種。

A:2
B:24
C:36
D:48

答案:B

二、編程題

第6題:參賽組別推薦

2019年11月,為了讓選手們獲得更好的參賽體驗,藍橋杯大賽青少年創意編程C++組細分為初級組和高級組,小藍第一次報名參C++組的比賽,不知道自己該選擇哪一組參賽,你能給他一些建認嗎?藍橋杯規定8到12歲的選手可以參加初級組:13到18歲的選手可以參加高級組的此賽:如果小于8歲,告訴他:“他還太小”:如果大于18歲,告訴他:“他太大了”。
程序命名:age.cpp
輸入:
一個整數n(1<n<100),代表小藍的年齡。
輸出:
請給出參賽建議:
小于8歲,輸出信息為:“You are too young!”
8到12歲,輸出信息為:“Welcome to Junior Class!”
13到18歲,輸出信息為:“Welcome to Senior Class!”
19歲及以上,輸出信息為:“You are too old!”

樣例輸入:

9

樣例輸出:

Welcome to Junior Class!

答案:
參考程序:

#include <stdio.h>
int main() {int n;scanf("%d", &n);if (n < 8) {printf("You are too young!");}if (n >= 8 && n <= 12) {printf("Welcome to Junior Class!");}if (n >= 13 && n <= 18) {printf("Welcome to Senior Class!");}if (n >= 19) {printf("You are too old!");}return 0;
}

評分標準:
30分:完成題目樣例和給出的一個樣例;
40分:在30分的基礎上完成給出的第三個樣例;
50分:在40分的基礎上完成給出的第四個樣例。

第7題:還差多少天到2020年?

編程實現:還差多少天到2020年?
時光飛逝,轉眼間就到了2019年的最后一個月,小藍也在期盼著2020年的到來,那意味著小藍又長大了一歲。你能幫小藍計算一下還有幾天就到2020年了嗎?
輸入
兩個整數 month,day 表示2019年的某月某日(0<month<13, 0<day<32).
輸出
一個整數,表示距離2020年的天數。

樣例輸入

12 31

樣例輸出

1

答案:
參考程序一:

#include <iostream>
using namespace std;
int main() {int month, day, days, i,months[12] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30};// month:輸入的月份 day:輸入的天數 days:2019年總天數 i:控制循環次數// months:數組存儲1月到11月的天數 1月:31 2月:28 3月:31 4月:30 5月:31// 6月:30 7月:31 8月:31 9月 30 10月:31 11月:30 12月:31cin >> month >> day; // 輸入當前月份和時間days = 366; // days為2019年總天數+1    加1是因為12月31號要在過一天才到2020年for (i = month - 1; i > 0;i--) // month-1原因:當月天數最后再減,先把之前月份天數減去{days = days - months[i]; // 用循環減去之前每月的總天數}days = days - day;    // 再減去當月的天數cout << days << endl; // 輸出還剩幾天
}

參考程序二:

#include <iostream>
using namespace std;
int main() {int month, day, sum = 0;cin >> month >> day;switch (month) {case 1:sum += 31;case 2:sum += 28;case 3:sum += 31;case 4:sum += 30;case 5:sum += 31;case 6:sum += 30;case 7:sum += 31;case 8:sum += 31;case 9:sum += 30;case 10:sum += 31;case 11:sum += 30;case 12:sum += 31;}sum -= day;sum++;cout << sum << endl;return 0;
}

評分標準:
30分:完成題目樣例和給出的一個樣例;
40分:在30分的基礎上完成給出的第三個樣例;
50分:在40分的基礎上完成給出的第四個樣例。

第8題:大寫字母Y

自從小藍學會編程之后,他酷愛用編程的方式寫字母。你能幫助他寫出字母"Y”嗎?
輸入
整數n(1<n<50)。
輸出
輸出高度為2n-1行的大寫字母"Y”
提示
第一行第一顆*左側無多余空格,每行最后一顆*后無多余空格。
輸入、輸出要求如圖所示
樣例輸入1:

2

樣例輸出1:

* ***

樣例輸入2:

4

樣例輸出2:

*     **   ** *****

答案:
參考程序:

#include <iostream>
using namespace std;
int main() {int n;cin >> n;int t = 2 * n - 1;for (int i = 1; i < n; i++) {for (int j = 1; j <= i - 1; j++)cout << " ";for (int j = 1; j <= t; j++) {if (j == 1 || j == t)cout << "*";elsecout << " ";}t -= 2;cout << endl;}for (int i = 1; i <= n; i++) {for (int j = 1; j <= n; j++)if (j == n)cout << "*";elsecout << " ";cout << endl;}return 0;
}

第9題:計算24

“計算24"
程序命名:c24.cpp
“計算24"是一個流傳已久的數字游戲,小藍最近對此癡迷不已。
游戲規則是:對4個1-10之間的自然數,進行加、減、乘三種運算,要求運算結果等于24。乘法的優先級高于加、減,并且算式中不可以用括號,不可以改變4個數字出現的順序。
下面我們給出兩個游戲的具體例子:
若給出的4個操作數是:10、2、4、8,則有兩種可能的解答方案:
10+2+4+8=24,10*2-4+8=24,輸出內容:2
若給出的4個操作數是:7、2、3.6,則沒有解答案,輸出內容:0。
輸入
四個整數。
輸出
輸出方案總數

樣例輸入1:

7 2 3 6

樣例輸出1:

0

樣例輸入2:

10 2 4 8

樣例輸出2:

2

答案:
參考程序一:

// 暴力枚舉所有的可能性
#include <stdio.h>
int a, b, c, d, f1, f2, f3, tmp;
int main(int argc, char *argv[]) {int tj = 0;scanf("%d %d %d %d", &a, &b, &c, &d);for (f1 = 1; f1 <= 3; f1++)for (f2 = 1; f2 <= 3; f2++)for (f3 = 1; f3 <= 3; f3++) {if (f1 == 3 && f2 == 3 && f3 == 3)tmp = a * b * c * d;else if (f1 == 3 && f2 == 3 && f3 != 3) {tmp = a * b * c;if (f3 == 1)tmp += d;elsetmp -= d;} else if (f1 != 3 && f2 == 3 && f3 == 3) {tmp = b * c * d;if (f1 == 1)tmp = a + tmp;elsetmp = a - tmp;} else if (f1 == 3 && f2 != 3 && f3 == 3) {if (f2 == 1)tmp = a * b + c * d;elsetmp = a * b - c * d;} else if (f1 == 3 && f2 != 3 && f3 != 3) {tmp = a * b;if (f2 == 1)tmp += c;elsetmp -= c;if (f3 == 1)tmp += d;elsetmp -= d;} else if (f1 != 3 && f2 == 3 && f3 != 3) {tmp = b * c;if (f1 == 1)tmp = a + tmp;elsetmp = a - tmp;if (f3 == 1)tmp += d;elsetmp -= d;} else if (f1 != 3 && f2 != 3 && f3 == 3) {if (f1 == 1)tmp = a + b;elsetmp = a - b;if (f2 == 1)tmp += c * d;elsetmp -= c * d;} else {if (f1 == 1)tmp = a + b;elsetmp = a - b;if (f2 == 1)tmp += c;elsetmp -= c;if (f3 == 1)tmp += d;elsetmp -= d;}if (tmp == 24)tj++;}printf("%d\n", tj);return 0;
}

參考程序二:

#include <iostream>
using namespace std;
int main() {// char op[] = "+-*";// for(int i = 0; i < 3; i ++)//     for(int j = 0; j < 3; j ++)//         for(int k = 0; k < 3; k ++)//         {//             cout <<"x = a "<< op[i] << " b " << op[j] << " c " << op[k] <<//             " d;" << endl; cout << "if(x == 24) res ++;" << endl;//         }int a, b, c, d;cin >> a >> b >> c >> d;int res = 0, x;x = a + b + c + d;if (x == 24)res++;x = a + b + c - d;if (x == 24)res++;x = a + b + c * d;if (x == 24)res++;x = a + b - c + d;if (x == 24)res++;x = a + b - c - d;if (x == 24)res++;x = a + b - c * d;if (x == 24)res++;x = a + b * c + d;if (x == 24)res++;x = a + b * c - d;if (x == 24)res++;x = a + b * c * d;if (x == 24)res++;x = a - b + c + d;if (x == 24)res++;x = a - b + c - d;if (x == 24)res++;x = a - b + c * d;if (x == 24)res++;x = a - b - c + d;if (x == 24)res++;x = a - b - c - d;if (x == 24)res++;x = a - b - c * d;if (x == 24)res++;x = a - b * c + d;if (x == 24)res++;x = a - b * c - d;if (x == 24)res++;x = a - b * c * d;if (x == 24)res++;x = a * b + c + d;if (x == 24)res++;x = a * b + c - d;if (x == 24)res++;x = a * b + c * d;if (x == 24)res++;x = a * b - c + d;if (x == 24)res++;x = a * b - c - d;if (x == 24)res++;x = a * b - c * d;if (x == 24)res++;x = a * b * c + d;if (x == 24)res++;x = a * b * c - d;if (x == 24)res++;x = a * b * c * d;if (x == 24)res++;cout << res;return 0;
}

評分標準:
30分:完成題目樣例和給出的一個樣例;
50分:在30分的基礎上完成給出的另外一個樣例;
100分:在50分的基礎上完成給出的最后一個樣例。

第10題:超級素數

編程實現:超級素數
在大于1的自然數中,除了1和它本身以外不再有其他因數的數,被稱為素數,又叫質數。超級素數是指一個素數,每去掉最后一位上一個數字,總能保證剩下的數依然為素數。比如
"373"就是一個超級素數,去掉個位的"3"后,"37"依然是素數:繼續去掉"37"個位的"7"后,"3"還是素數。
程序命名:prime.cpp
輸入
輸人一個整數n(10<=n<=10^8)
輸出
輸出所有小于等于n的超級素數的個數

樣例輸入1:

30

樣例輸出1:

6

樣例輸出1提示:2 3 5 7 23 29
樣例輸入2:

50

樣例輸出2:

8

樣例輸出2提示:2 3 5 7 23 29 31 37

答案:
參考程序:

#include <cmath>
#include <iostream>using namespace std;
int ans, n;
int a[] = {2, 3, 5, 7}; // 最高位
int b[] = {1, 3, 7, 9}; // 其他位
bool check(int x) {     // 判斷素數if (x == 1)return false;for (int i = 2; i <= sqrt(x); i++)if (x % i == 0)return false;return true;
}
void dfs(int x) { // 深搜if (x > n)return;ans++;for (int i = 0; i < 4; i++)if (check(x * 10 + b[i]))dfs(x * 10 + b[i]);
}
int main(int argc, char *argv[]) {cin >> n;for (int i = 0; i < 4; i++)dfs(a[i]);cout << ans << endl;return 0;
}

算法思想:
暴力枚舉(70分)
可以通過線性篩素數法將所有不超過n的素數求出,然后枚舉每個素數,判斷是否符合超級素數的性質,時間復雜度 O(10^8),最終70分,TLE.
DFS
分析超級素數的性質,會發現最高位只能由素數2、3、5、7組成,其余各位只能從是奇數1、3、7、9中選擇,因此可以使用DFS構造所有滿足性質的超級素數。
評分標準:
30分:完成題目樣例和給出的一個樣例;
50分:在30分的基礎上完成給出的另外一個樣例;
100分:在50分的基礎上完成給出的最后一個樣例。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/22370.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/22370.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/22370.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

計算機基礎(8)——音頻數字化(模電與數電)

&#x1f497;計算機基礎系列文章&#x1f497; &#x1f449;&#x1f340;計算機基礎&#xff08;1&#xff09;——計算機的發展史&#x1f340;&#x1f449;&#x1f340;計算機基礎&#xff08;2&#xff09;——馮諾依曼體系結構&#x1f340;&#x1f449;&#x1f34…

如何在GlobalMapper中加載高清衛星影像?

GlobalMapper在GIS行業幾乎無人不知&#xff0c;無人不曉&#xff0c;但它可以直接加載衛星影像也許就不是每個人都知道的了。 這里就來分享一下如何在GlobalMapper中加載高清衛星影像&#xff0c;并可以在文末查看領取軟件安裝包和圖源的方法。 如何加載高清圖源 首先&…

45-1 waf繞過 - 文件上傳繞過WAF方法

環境準備: 43-5 waf繞過 - 安全狗簡介及安裝-CSDN博客然后安裝dvwa靶場:構建完善的安全滲透測試環境:推薦工具、資源和下載鏈接_滲透測試靶機下載-CSDN博客打開dvwa靶場,先將靶場的安全等級調低,然后切換到文件上傳 一、符號變異 在PHP中,由于其弱類型特性,有時候僅有一…

4月份新出!外網爆火的大模型黑書!內行人都在學~

今天給大家推薦一本4月份才新出的大型語言模型&#xff08;LLM&#xff09;的權威教程《基于GPT-3、ChatGPT、GPT-4等Transformer架構的自然語言處理》&#xff01;Google工程總監Antonio Gulli作序&#xff0c;一堆大佬推薦&#xff01;這含金量不用多說&#xff0c;在這里給大…

Docker容器搭建ELK日志分析系統

Docker容器搭建ELK日志分析系統 文章目錄 Docker容器搭建ELK日志分析系統資源列表基礎環境一、創建容器網絡二、創建容器掛載目錄三、構建systemctl鏡像三、構建Elasticsearch鏡像3.1、構建Elasticsearch3.2、構建鏡像3.3、啟動容器3.4、進入容器3.5、查看節點信息 四、構建Log…

NLP基礎——語言模型(動手學深度學習)

語言模型 聯合概率 給定文本序列 x 1 , ? , x t x_1,\cdots,x_t x1?,?,xt?&#xff0c;語言模型的目標是估計聯合概率 P ( x 1 , ? , x t ) P(x_1,\cdots,x_t) P(x1?,?,xt?). 這里的 x t x_t xt? 可以認為是文本序列在時間步 t t t 處的觀測或標簽&#xff0c;而…

亞信安慧AntDB:卓越的拓展性和靈活性

在當今這個信息爆炸的時代&#xff0c;企業對數據處理的需求不斷增長&#xff0c;傳統的數據庫系統往往難以應對海量數據的存儲和處理挑戰。然而&#xff0c;隨著亞信安慧AntDB的出現&#xff0c;解決這一難題的曙光終于出現在眼前。AntDB不僅僅具備了高吞吐、高并發、高性能的…

Linux系統之mv命令的基本使用

Linux系統之mv命令的基本使用 一、mv命令介紹1. mv命令簡介2. mv命令的使用結果 二、mv命令的使用幫助1. 在命令行的幫助信息2. mv常用選項 三、mv命令的基本使用1. 創建源目錄和目標目錄2. 新建測試文件3. 將源目錄文件復制到目標目錄4. 將文件進行改名5. 將目錄的所有文件轉移…

前端面試寶典總結4-手搓代碼JavaScript(數據處理)

前端面試寶典總結4之手寫代碼JavaScript&#xff08;數據處理&#xff09; 本文章 對各大學習技術論壇知識點&#xff0c;進行總結、歸納自用學習&#xff0c;共勉&#x1f64f; 上一篇&#x1f449;: 前端面試寶典總結3-JavaScript&#xff08;2&#xff09; 文章目錄 前端…

python長方形周長面積 2024年3月青少年編程電子學會python編程等級考試二級真題解析

目錄 python長方形周長面積 一、題目要求 1、編程實現 2、輸入輸出 二、算法分析 三、程序代碼 四、程序說明 五、運行結果 六、考點分析 七、 推薦資料 1、藍橋杯比賽 2、考級資料 3、其它資料 python長方形周長面積 2024年3月 python編程等級考試級編程題 一、…

matlab模擬太陽耀斑噴發

代碼 function simulate_solar_flare% 參數設置gridSize 100; % 網格大小timeSteps 200; % 時間步數dt 0.1; % 時間步長% 初始化網格[X, Y] meshgrid(linspace(-5, 5, gridSize));Z zeros(size(X));% 設置耀斑初始位置和強度flareCenter [0, 0]; % 耀斑中心位置flareRad…

【實用技巧】Unity中的Image組件

Unity中的Image組件是UI系統的核心部分&#xff0c;用于顯示圖像和紋理。以下是一些關于Unity Image組件的實用技巧&#xff1a; 使用Sprite作為Image源&#xff1a; 將Sprite直接拖拽到Image組件的Source Image字段中&#xff0c;可以快速設置顯示的圖像。 調整顏色和透明度&a…

9 -力扣高頻 SQL 50 題(基礎版)

9 - 上升的溫度 -- 找出與之前&#xff08;昨天的&#xff09;日期相比溫度更高的所有日期的 id -- DATEDIFF(2007-12-31,2007-12-30); # 1 -- DATEDIFF(2010-12-30,2010-12-31); # -1select w1.id from Weather w1, Weather w2 wheredatediff(w1.recordDate,w2.recordDat…

SolidWorks功能強大的三維設計軟件下載安裝,SolidWorks最新資源獲取!

SolidWorks&#xff0c;它憑借出色的三維建模能力&#xff0c;使得設計師們能夠輕松構建出復雜且精細的機械模型&#xff0c;大大提升了設計效率和質量。 在機械設計領域&#xff0c;SolidWorks憑借其豐富的工具和特性&#xff0c;讓設計師們能夠隨心所欲地揮灑創意。無論是零…

Flutter 中的 LayoutBuilder 小部件:全面指南

Flutter 中的 LayoutBuilder 小部件&#xff1a;全面指南 Flutter 是一個功能豐富的 UI 框架&#xff0c;它允許開發者使用 Dart 語言來構建高性能、美觀的跨平臺應用。在 Flutter 的布局系統中&#xff0c;LayoutBuilder 是一個強大的組件&#xff0c;它可以根據父容器的約束…

家政預約小程序12用戶登錄

目錄 1 創建全局變量2 創建頁面3 搭建頁面4 實現登錄邏輯總結 在小程序中&#xff0c;登錄是一個常見的場景。比如我們在小程序預約或者購買時&#xff0c;通常要求用戶先登錄后購買。如果使用傳統方案&#xff0c;登錄這個動作其實最終的目的是為了獲取用戶的openid。而使用低…

Python學習圣經:從0到1,精通Python使用

尼恩&#xff1a;LLM大模型學習圣經PDF的起源 在40歲老架構師 尼恩的讀者交流群(50)中&#xff0c;經常性的指導小伙伴們改造簡歷。 經過尼恩的改造之后&#xff0c;很多小伙伴拿到了一線互聯網企業如得物、阿里、滴滴、極兔、有贊、希音、百度、網易、美團的面試機會&#x…

【智能體】文心智能體大賽第二季持續進行中,一起在智能體的海洋里發揮你的創意吧

目錄 背景作文小助手AI迅哥問答程序員黃歷助手比賽時間第二期賽題豐厚獎品評選說明獲獎智能體推薦文章 背景 AI應用&#xff08;智能體&#xff09;&#xff0c;持續火熱&#xff0c;一句話就能創建一個有趣、好玩的應用。 可以說一分鐘內就能創建一個有創意的智能體。 看大多…

Linux網絡-自定義協議、序列化和反序列化、網絡計算服務器的實現和Windows端客戶端

文章目錄 前言一、自定義協議傳結構體對象 序列化和反序列化什么是序列化&#xff1f;反序列化 二、計算器服務端&#xff08;線程池版本&#xff09;1.main.cc2.Socket.hpp3.protocol.hpp4.Calculator.hpp5.serverCal.hpp6.threadPool.hpp7.Task.hpp8. log.hpp 客戶端Windows客…

我有點想用JDK17了

大家好呀&#xff0c;我是summo&#xff0c;JDK版本升級的非常快&#xff0c;現在已經到JDK20了。JDK版本雖多&#xff0c;但應用最廣泛的還得是JDK8&#xff0c;正所謂“他發任他發&#xff0c;我用Java8”。 其實我也不太想升級JDK版本&#xff0c;感覺投入高&#xff0c;收…