提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔
文章目錄
- 一、選擇題
- 1-5題
- 6-10題
- 二、編程題
- 題目一
- 題目二
一、選擇題
1-5題
如圖所示,如圖所示p-3指向的元素是6,printf里面的是%s,從6開始連續打印直到遇到0結束,所以打印的是6789。
答案選B。
首先第一個switch里x%3是1,為真,進入case 1,進入第二個switch,y是3,所以會進入default輸出hello,又因為沒有break,所以會進入第一個switch的case 2,輸出third。
所以最終會輸出hellothird,答案選D。
A:二維數組可以省略列,不可以省略行,故A錯。
B: B正確。
C: 兩行,初始化的時候有三個{},越界了。
D: {0,,2}不能間隔初始化,就是不能連續倆逗號,中間啥都不寫。
故選B。
A不正確,C語言中不能return 兩個數回去的.
–
int *p[4] 是一個指針數組,即存放指針的數組,這個是一個數組,里面放著4個int類型的指針。
A: 是放int類型的數組,不符。
B: 是一個int類型的指針。
C: []優先級本來就比*高,因此加上括號和不加括號int *p[4]等同,
D: p先和*結合表示p是一個指針,前面的在和int [4]結合,表示指向一個存放4個1int類型元素的數組,是一個數組指針,即指向數組的指針。
故選C。
6-10題
ABC均可。
D選項中ch=getchar放在了for循環的預處理位置
預處理位置的語句只會執行一次,所以無法統計,故選D。
mystring指向數組首元素,mystring賦值給ptr,ptr也指向數組首元素,ptr+=5,向后便宜五個單位,指向fg。
故選B。
考察指針常量和常量指針,const在*右邊是指針常量,const在*左邊是常量指針。故12是常量指針,3是指針常量。
故選C。
32位系統下指針大小是四個字節,[]優先級比**高,所以先和[]結合,是個三行四列的數組,放的是二級指針,3*4*4=48,故選B。
大端:低位存高地址
小端:低位存低地址
例如int i=1
大端:00 00 00 01
小端:01 00 00 00
低地址---------->高地址
long long a=1,b=2,c=3;
故選B。
二、編程題
題目一
題目鏈接:
字符串中找出連續最長的數字串
運行代碼:
#include <iostream>
#include<string>
using namespace std;int main() {string a, b, c;std::cin >> a;for (char i : a) {if (i >= '0' && i <= '9')b += i;else {if (b.size() > c.size()) {c = b;b.clear();}b.clear();}}if (b.size() > c.size()) {c = b;b.clear();}cout << c;
}
// 64 位輸出請用 printf("%lld")
運行結果:
題目二
題目鏈接:
數組中出現次數超過一半的數字
運行代碼:
class Solution {public:int MoreThanHalfNum_Solution(vector<int> numbers) {
// 因為用到了sort,時間復雜度O(NlogN),并非最優if (numbers.empty()) return 0;sort(numbers.begin(), numbers.end()); // 排序,取數組中間那個數int middle = numbers[numbers.size() / 2];int count = 0; // 出現次數for (int i = 0; i < numbers.size(); ++i) {if (numbers[i] == middle) ++count;}return (count > numbers.size() / 2) ? middle : 0;}
};
運行結果: