2021年06月 C/C++(二級)真題解析#中國電子學會#全國青少年軟件編程等級考試

在這里插入圖片描述

第1題:數字放大

給定一個整數序列以及放大倍數x,將序列中每個整數放大x倍后輸出。
時間限制:1000
內存限制:65536
輸入
包含三行: 第一行為N,表示整數序列的長度(N ≤ 100); 第二行為N個整數(不超過整型范圍),整數之間以一個空格分開; 第三行包含一個整數(不超過整型范圍),為指定的整數x。
輸出
N個整數,為原序列放大之后的序列,整數之間以一個空格分開。
樣例輸入
3
1 5 7
2
樣例輸出
2 10 14
提示
注意答案的數據范圍

以下是使用C語言編寫的解決方案,用于將給定整數序列中的每個整數放大x倍后輸出:

#include <stdio.h>int main() {int N;scanf("%d", &N);int sequence[N];for (int i = 0; i < N; i++) {scanf("%d", &sequence[i]);}int x;scanf("%d", &x);for (int i = 0; i < N; i++) {printf("%d ", sequence[i] * x);}printf("\n");return 0;
}

在此解決方案中,我們首先定義一個變量N,用于存儲整數序列的長度。

然后,我們使用scanf函數讀取N的值。

接下來,我們定義一個整數數組sequence,大小為N,用于存儲整數序列。

使用循環結構,我們遍歷整數序列,并使用scanf函數將每個整數讀取到sequence數組中。

然后,我們定義一個變量x,用于存儲放大倍數。

再次使用scanf函數,我們讀取x的值。

接下來,使用循環結構,我們遍歷整數序列,并將每個整數乘以x,然后使用printf函數輸出結果。

最后,我們使用printf函數輸出換行符,以便將結果打印在一行。

編譯并運行上述代碼,根據給定的輸入示例,將會輸出"2 10 14",表示原序列放大后的序列。

第2題:統一文件名

小A在命名文件的時候經常不注意大小寫,格式比較混亂。現要求你寫一個程序將目錄下的文件統一規范的格式,即文件名的第一個字符如果是字母要大寫,其他字母小寫。如將Test、test整理成Test。
時間限制:1000
內存限制:65536
輸入
第一行一個數字n,表示有n個文件名要統一,n不超過100。 接下來n行,每行一個單詞,長度不超過20,表示文件的名字。文件名由字母、數字和-組成。
輸出
n行,每行一個單詞,對應統一后的文件名。
樣例輸入
4
Test
data
2-TEST
problem-6
樣例輸出
Test
Data
2-test
Problem-6

以下是使用C語言編寫的解決方案,用于將給定的文件名統一規范化格式:

#include <stdio.h>
#include <ctype.h>void normalizeFilename(char *filename) {int length = strlen(filename);// 將第一個字符轉換為大寫if (isalpha(filename[0])) {filename[0] = toupper(filename[0]);}// 將其余字符轉換為小寫for (int i = 1; i < length; i++) {filename[i] = tolower(filename[i]);}
}int main() {int n;scanf("%d", &n);char filenames[n][21];for (int i = 0; i < n; i++) {scanf("%s", filenames[i]);normalizeFilename(filenames[i]);}for (int i = 0; i < n; i++) {printf("%s\n", filenames[i]);}return 0;
}

在此解決方案中,我們首先定義一個函數normalizeFilename,用于將給定的文件名規范化為統一格式。

在函數中,我們首先獲取文件名的長度。

然后,我們將文件名的第一個字符轉換為大寫,使用isalpha函數檢查字符是否為字母,使用toupper函數將字符轉換為大寫。

接下來,我們使用循環結構,將文件名的其余字符轉換為小寫,使用tolower函數將字符轉換為小寫。

main函數中,我們首先定義一個變量n,用于存儲文件名的個數。

然后,使用scanf函數讀取n的值。

接下來,我們定義一個二維字符數組filenames,大小為n行,每行最多可以存儲20個字符的文件名。

使用循環結構,我們遍歷每個文件名,并使用scanf函數將文件名讀取到相應的行中。

接著,我們調用normalizeFilename函數,將每個文件名規范化為統一格式。

最后,使用循環結構,我們遍歷每個文件名,并使用printf函數輸出結果。每個文件名占一行。

編譯并運行上述代碼,根據給定的輸入示例,將會輸出統一規范化后的文件名。

第3題:內部元素之和

輸入一個整數矩陣,計算位于矩陣內部的元素之和。所謂矩陣內部的元素,不在第一行和最后一行的元素以及第一列和最后一列的元素。
時間限制:1000
內存限制:65536
輸入
第一行分別為矩陣的行數m和列數n(m < 100,n < 100),兩者之間以一個空格分開。 接下來輸入的m行數據中,每行包含n個整數(每個數大于等于0,小于1000),整數之間以一個空格分開。
輸出
輸出對應矩陣的內部元素和
樣例輸入
3 3
3 4 1
3 7 1
2 0 1
樣例輸出
7

以下是使用C語言編寫的解決方案,用于計算位于矩陣內部的元素之和:

#include <stdio.h>int main() {int m, n;scanf("%d %d", &m, &n);int matrix[m][n];for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {scanf("%d", &matrix[i][j]);}}int sum = 0;for (int i = 1; i < m - 1; i++) {for (int j = 1; j < n - 1; j++) {sum += matrix[i][j];}}printf("%d\n", sum);return 0;
}

在此解決方案中,我們首先定義兩個變量mn,分別表示矩陣的行數和列數。

然后,使用scanf函數讀取mn的值。

接下來,我們定義一個二維整數數組matrix,大小為mn列,用于存儲矩陣。

使用兩個嵌套的循環結構,我們遍歷矩陣的每個元素,使用scanf函數將每個整數讀取到相應的位置。

然后,我們定義一個變量sum,用于存儲內部元素之和。初始值為0。

使用兩個嵌套的循環結構,我們遍歷位于矩陣內部的元素,即從第二行到倒數第二行,從第二列到倒數第二列。我們忽略了第一行、最后一行、第一列和最后一列的元素。

在每個內部元素的位置,我們將該元素的值累加到sum中。

最后,我們使用printf函數輸出sum的值,表示矩陣內部元素之和。

編譯并運行上述代碼,根據給定的輸入示例,將會輸出"7",表示矩陣內部元素之和為7。

第4題:整數排序

給定10個整數的序列,要求對其重新排序。排序要求:
1.奇數在前,偶數在后;
2.奇數按從大到小排序;
3.偶數按輸入順序逆序排序。
時間限制:1000
內存限制:65536
輸入
輸入一行,包含10個整數,彼此以一個空格分開,每個整數的范圍是大于等于0,小于等于100。
輸出
按照要求排序后輸出一行,包含排序后的10個整數,數與數之間以一個空格分開。
樣例輸入
4 7 3 13 11 12 0 47 34 98
樣例輸出
47 13 11 7 3 98 34 0 12 4

以下是使用C語言編寫的解決方案,用于對給定的10個整數進行排序:

#include <stdio.h>void swap(int *a, int *b) {int temp = *a;*a = *b;*b = temp;
}void bubbleSort(int arr[], int n) {for (int i = 0; i < n - 1; i++) {for (int j = 0; j < n - i - 1; j++) {if (arr[j] < arr[j + 1]) {swap(&arr[j], &arr[j + 1]);}}}
}void customSort(int arr[], int n) {int odd[n];int even[n];int oddCount = 0;int evenCount = 0;for (int i = 0; i < n; i++) {if (arr[i] % 2 == 0) {even[evenCount++] = arr[i];} else {odd[oddCount++] = arr[i];}}bubbleSort(odd, oddCount);for (int i = evenCount - 1; i >= 0; i--) {printf("%d ", even[i]);}for (int i = 0; i < oddCount; i++) {printf("%d ", odd[i]);}
}int main() {int arr[10];for (int i = 0; i < 10; i++) {scanf("%d", &arr[i]);}customSort(arr, 10);return 0;
}

在此解決方案中,我們首先定義了一個函數swap,用于交換兩個整數的值。

然后,我們定義了一個函數bubbleSort,用于對數組進行冒泡排序。

bubbleSort函數中,我們使用兩個嵌套的循環結構,逐個比較相鄰的元素,并根據條件進行交換,從而將較大的元素移動到數組的前面。

接下來,我們定義了一個函數customSort,用于按照給定的排序要求對數組進行排序。

customSort函數中,我們首先定義了兩個輔助數組oddeven,用于存儲奇數和偶數。

我們遍歷原始數組,并根據奇偶性將元素分別存儲到oddeven數組中。

然后,我們對odd數組進行冒泡排序,以滿足要求的奇數排序要求。

接著,我們逆序遍歷even數組,并按順序輸出其中的元素,以滿足偶數的逆序排序要求。

最后,我們按順序輸出odd數組中的元素。

main函數中,我們定義一個整數數組arr,用于存儲輸入的10個整數。

使用循環結構,我們讀取輸入的10個整數,并將它們存儲到arr數組中。

然后,我們調用customSort函數,對數組進行排序和輸出。

編譯并運行上述代碼,根據給定的輸入示例,將會輸出排序后的10個整數。

第5題:計算好數

若將一個正整數化為二進制數,在此二進制數中,我們將數字1的個數多于數字0的個數的這類二進制數稱為好數。
例如:
(13)10 = (1101)2,其中1的個數為3,0的個數為1,則此數是好數;
(10)10 = (1010)2,其中1的個數為2,0的個數也為2,則此數不是好數;
(24)10 = (11000)2,其中1的個數為2,0的個數為3,則此數不是好數;
對于給定的N,寫程序求出1~N之中(包括1與N)中的好數個數。
時間限制:1000
內存限制:65536
輸入
一個整數,題目中的N(N ≤ 1000)
輸出
一個整數,表示1~N之中(包括1與N)中的好數個數
樣例輸入
10
樣例輸出
5

以下是使用C語言編寫的解決方案,用于計算1~N范圍內的好數個數:

#include <stdio.h>int isGoodNumber(int n) {int ones = 0;int zeros = 0;while (n > 0) {if (n % 2 == 1) {ones++;} else {zeros++;}n /= 2;}return ones > zeros;
}int countGoodNumbers(int N) {int count = 0;for (int i = 1; i <= N; i++) {if (isGoodNumber(i)) {count++;}}return count;
}int main() {int N;scanf("%d", &N);int result = countGoodNumbers(N);printf("%d\n", result);return 0;
}

在此解決方案中,我們定義了兩個函數。

isGoodNumber函數用于判斷一個整數是否為好數。我們使用循環結構,將整數轉換為二進制數,并統計其中1和0的個數。如果1的個數大于0的個數,則返回1,表示是好數;否則返回0,表示不是好數。

countGoodNumbers函數用于計算1~N范圍內的好數個數。我們使用循環結構,從1遍歷到N,對每個數調用isGoodNumber函數進行判斷,如果返回值為1,則計數器加1。

main函數中,我們首先讀取輸入的整數N。

然后,調用countGoodNumbers函數計算好數個數,并將結果存儲到變量result中。

最后,我們使用printf函數輸出result的值,表示1~N范圍內的好數個數。

編譯并運行上述代碼,根據給定的輸入示例,將會輸出"5",表示1~10范圍內的好數個數為5。

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

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

相關文章

(css)點擊前隱藏icon圖表 點擊后顯示

(css)點擊前隱藏icon圖表 點擊后顯示 效果 html <liv-for"(item,index) in sessionList":key"index"class"liClass":class"{ active: change2 index }"tabindex"2">...<el-tooltip class"item" effec…

c++病毒/惡搞代碼大全( 下 )

注&#xff1a;以下代碼應勿用于非法&#xff08;Dev-c5.11實測可用&#xff09; 警告:以下為危險/永久性程序&#xff0c;請慎重使用 8. 效果:禁用任務管理器 提示:可能被殺毒軟件攔截 #include <stdio.h> #include <windows.h> int main() {HKEY hkey;DWORD …

Neo4j之OPTIONAL MATCH基礎

OPTIONAL MATCH 是 Neo4j 查詢語言 Cypher 中的一種關鍵字&#xff0c;用于在查詢中執行可選的模式匹配。它允許你在匹配節點和關系的過程中&#xff0c;即使匹配失敗也不影響整個查詢結果。OPTIONAL MATCH 允許你查找與指定模式匹配的數據&#xff0c;如果匹配失敗&#xff0c…

分布式監控平臺——Zabbix

市場上常用的監控軟件&#xff1a; 傳統運維&#xff1a;zabbix、 Nagios 一、zabbix概述 作為一個運維&#xff0c;需要會使用監控系統查看服務器狀態以及網站流量指標&#xff0c;利用監控系統的數據去了解上線發布的結果&#xff0c;和網站的健康狀態。 利用一個優秀的監…

Dedecms V110最新版RCE---Tricks

前言 剛發現Dedecms更新了發布版本&#xff0c;順便測試一下之前的day有沒有修復&#xff0c;突然想到了新的tricks去實現RCE。 文章發布的時候估計比較晚了&#xff0c;一直沒時間寫了。 利用 /uploads/dede/article_string_mix.php /uploads/dede/article_template_rand.…

Blender增強現實3D模型制作指南【AR】

推薦&#xff1a;用 NSDT編輯器 快速搭建可編程3D場景 將靜態和動畫 3D 內容集成到移動增強現實 (AR) 體驗中是增強用戶沉浸感和參與度的高效方法。 然而&#xff0c;為 AR 創建 3D 對象可能相當艱巨&#xff0c;尤其是對于那些缺乏 3D 建模經驗的人來說。 與添加視頻或照片 AR…

黑馬項目一階段面試58題 蒼穹外賣具體技術細節9題

一、Nginx的作用 1.反向代理 前端把請求發送給nginx&#xff0c;再由nginx將請求發送給后端服務器。 2.負載均衡 提高訪問速度&#xff1b;進行負載均衡&#xff1b;保證后端服務安全 二、Swagger有什么作用 直接調試后端請求響應 三、Redis常見數據類型 String、Hash、L…

flutter 解壓 zip 中文亂碼問題處理

前言 很簡單的一個 zip 包解壓縮的功能&#xff0c;但是 windows 平臺中文顯示亂碼&#xff0c;很糟心&#xff0c;搜了一圈沒找到現成的方法&#xff0c;在此貼上我的解決方式。 實現 導入需要的包 flutter pub add archiveflutter pub add fast_gbkflutter pub add path代…

THUDM/chatglm2-6b-int4體驗

在gpu下 gpu&#xff1a; Telsa T4 資源消耗&#xff1a;RAM大概4G&#xff0c;GPU顯存大概6G # 安裝transformers等包 !pip install protobuf transformers4.30.2 cpm_kernels torch>2.0 gradio mdtex2html sentencepiece accelerate# 導入AutoTokenizer, AutoModel from…

CSAPP Lec01

1. CMU 15213_15513 CSAPP 深入理解計算機系統 Lecture 01 Course Overview 中英字幕_嗶哩嗶哩_bilibili 從這個課程中可以學到什么&#xff1f;&#xff08;為什么要學這門課&#xff09; Great Reality #1&#xff08;數字類型&#xff09;: Ints are not Integers, Floats…

idea打jar包

目錄 1、打包設置 2、打包介紹 3、開始打包 1、打包設置 先設置要打包的模塊信息&#xff0c;即打包進去的內容。如下圖所示&#xff1a;File --> Project Structure --> Artifacts&#xff0c;點擊&#xff0b;號完成模塊創建&#xff0c;其中有兩種方式&#xff1a;…

《零基礎實踐深度學習》(第2版)學習筆記,(二)機器學習和深度學習綜述

文章目錄 1. 人工智能、機器學習、深度學習的關系2. 機器學習2.1 實現原理2.2 如何實施 3. 深度學習神經網絡核心概念 1. 人工智能、機器學習、深度學習的關系 **人工智能&#xff08;Artificial Intelligence&#xff0c;AI&#xff09;**是研發用于模擬、延伸和擴展人的智能…

微服務系列(2)--注冊中心

在博文&#xff1a;微服務系列(1)里我們提到過注冊中心的概念&#xff0c;簡單來說微服務注冊中心是一個用于存儲和管理微服務實例信息的組件&#xff0c;它提供了服務注冊、服務發現、服務健康檢查等功能&#xff0c;以確保微服務之間的穩定通信。在微服務架構中&#xff0c;各…

Debian純凈系統安裝php常用擴展和程序

適用于 php-fpm debian容器 mysql擴展 docker-php-ext-install pdo_mysql docker-php-ext-install mysqliredis擴展 pecl install redis docker-php-ext-enable redis# pecl無法裝就&#xff1a; docker-php-source extract # 創建并初始化 /usr/src/php目錄&#xff08;擴展…

應用層協議——TCP(上)

文章目錄 1. TCP協議1.1 TCP協議段格式1.2 確認應答(ACK)機制1.3 16位窗口大小1.4 6位標志位1.4.1 TCP三次握手 1.5 確認應答(ACK)機制1.6 超時重傳機制1.7 連接管理機制1.7.1 理解TIME_WAIT狀態1.7.2 理解 CLOSE_WAIT 狀態 1. TCP協議 TCP全稱為傳輸控制協議&#xff0c;意思…

【uniapp 中使用uni-popup阻止左滑退出程序】

在uniapp中&#xff0c;可以使用uni-app插件uni-popup提供的阻止左滑退出程序的功能。具體步驟如下&#xff1a; 安裝uni-popup插件&#xff1a;在HBuilderX編輯器中&#xff0c;打開manifest.json文件&#xff0c;找到“dependencies”字段&#xff0c;在其后添加&#xff1a…

〔AI 繪畫〕Stable Diffusion 之 VAE 篇

? 目錄 &#x1f388; 什么是VAE&#x1f388; 開啟VAE&#x1f388; 下載常見的VAE&#x1f388; 對比不同VAE生成的效果 &#x1f388; 什么是VAE VAE&#xff1a;是 Variational Auto-Encoder 的簡稱&#xff0c;也就是變分自動編碼器可以把它理解成給圖片加濾鏡&#xff…

JavaWeb-Filter過濾器

目錄 Filter過濾器 1. Filter的生命周期 2.Filter的配置 3.攔截路徑 4.攔截具體的使用 5.攔截方式配置&#xff08;資源被訪問方式&#xff09; 6.FilterChain攔截鏈 Filter過濾器 filter是過濾器&#xff0c;相比于Servlet的發送請求&#xff0c;filter是用于攔截請求。…

2023-08-14 linux 串口終端輸入長命令不換行,覆蓋前面內容,stty命令設置串口終端行列數

一、linux 串口終端輸入長命令不換行&#xff0c;覆蓋前面內容&#xff0c;現象如下圖&#xff1a; 二、解決方法&#xff1a;用stty 命令設置行列數 stty columns 200 stty rows 10三、參考文章 https://www.cnblogs.com/goloving/p/15170537.html 常用Linux串口設備操作命…

【Servlet】(Servlet API HttpServlet 處理請求 HttpServletRequest 打印請求信息 前端給后端傳參)

文章目錄 Servlet APIHttpServlet處理請求 HttpServletRequest打印請求信息前端給后端傳參 Servlet API Servlet中常用的API HttpServlet 實際開發的時候主要重寫 doXXX 方法, 很少會重寫 init / destory / service destory 服務器終止的時候會調用. //下面的注解把當前類和…