第1題
在C++中,下面哪個關(guān)鍵字用于聲明一個變量,其值不能被修改?( )。
unsigned
const
static
mutable
第2題
八進制數(shù)123456708 和076543218的和為( )。
222222218
211111118
221111118
222222118
第3題
閱讀下述代碼,請問修改data的value成員以存儲3.14,正確的方式是( )。
union Data{ int num; float value; char symbol; }; union Data data;
data.value = 3.14;
value.data = 3.14;
data->value = 3.14;
value->data = 3.14;
第4題
假設(shè)有一個鏈表的節(jié)點定義如下:
struct Node { int data; Node* next; };
現(xiàn)在有一個指向鏈表頭部的指針:Node* head。如果想要在鏈表中插入一個新節(jié)點,其成員data的值為42,并使新節(jié)點成為鏈表的第一個節(jié)點,下面哪個操作是正確的?( )
Node* newNode = new Node; newNode->data = 42; newNode->next = head; head = newNode;
Node* newNode = new Node; head->data = 42; newNode->next = head; head = newNode;
Node* newNode = new Node; newNode->data = 42; head->next = newNode;
Node* newNode = new Node; newNode->data = 42; newNode->next = head;
第5題
根節(jié)點的高度為1,一根擁有2023個節(jié)點的三叉樹高度至少為( )。
6
7
8
9
第6題
小明在某一天中依次有七個空閑時間段,他想要選出至少一個空閑時間段來練習(xí)唱歌,但他希望任意兩個練習(xí)的時間段之間都有至少兩個空閑的時間段讓他休息,則小明一共有( )種選擇時間段的方案。
31
18
21
33
第7題
以下關(guān)于高精度運算的說法錯誤的是( )。
高精度計算主要是用來處理大整數(shù)或需要保留多位小數(shù)的運算。
大整數(shù)除以小整數(shù)的處理的步驟可以是,將被除數(shù)和除數(shù)對齊,從左到右逐位嘗試將除數(shù)乘以某個數(shù),通過減法得到新的被除數(shù),并累加商。
高精度乘法的運算時間只與參與運算的兩個整數(shù)中長度較長者的位數(shù)有關(guān)。
高精度加法運算的關(guān)鍵在于逐位相加并處理進位。
第8題
后綴表達式“6 2 3 + - 3 8 2 / + * 2 ^ 3 +”對應(yīng)的中綴表達式是( )
((6 - (2 + 3)) * (3 + 8 / 2)) ^ 2 + 3
6 - 2 + 3 * 3 + 8 / 2 ^ 2 + 3
(6 - (2 + 3)) * ((3 + 8 / 2) ^ 2) + 3
6 - ((2 + 3) * (3 + 8 / 2)) ^ 2 + 3
第9題
數(shù)1010102和1668的和為( )。
101100002
2368
15810
A016
第10題
假設(shè)有一組字符{a,b,c,d,e,f},對應(yīng)的頻率分別為5%,9%,12%,13%,16%,45%。請問以下哪個選項是字符a,b,c,d,e,f分別對應(yīng)的一組哈夫曼編碼?( )
1111,1110,101,100,110,0
1010,1001,1000,011,010,00
000,001,010,011,10,11
1010,1011,110,111,00,01
第11題
給定一棵二叉樹,其前序遍歷結(jié)果為:ABDECFG,中序遍歷結(jié)果為:DEBACFG。請問這棵樹的正確后序遍歷結(jié)果是什么?( )
EDBGFCA
EDBGCFA
DEBGFCA
DBEGFCA
第12題
考慮一個有向無環(huán)圖,該圖包括4條有向邊:(1,2),(1,3),(2,4),和(3,4)。以下哪個選項是這個有向無環(huán)圖的一個有效的拓撲排序?( )
4,2,3,1
1,2,3,4
1,2,4,3
2,1,3,4
第13題
在計算機中,以下哪個選項描述的數(shù)據(jù)存儲容量最小?( )
字節(jié)(byte)
比特(bit)
字(word)
千字節(jié)(kilobyte)
第14題
一個班級有10個男生和12個女生。如果要選出一個3人的小組,并且小組中必須至少包含1個女生,那么有多少種可能的組合?( )
1420
1770
1540
2200
第15題
以下哪個不是操作系統(tǒng)?( )
Linux
Windows
Android
HTML
第16題
#include<iostream> #include<cmath> using namespace std; double f(double a,double b,double c){ double s=(a+b+c)/2; return sqrt(s*(s-a)*(s-b)*(s-c)); } int main(){ cout.flags(ios::fixed); cout.precision(4); int a,b,c; cin>>a>>b>>c; cout<<f(a,b,c)<<endl; return 0; }
假設(shè)輸入的所有數(shù)都為不超過1000的正整數(shù),完成下面的判斷題和單選題:
當(dāng)輸入為“2 2 2”時,輸出為“1.7321”( )
正確
錯誤
第17題
將第7行中的"(s-b)*(s-c)"改為"(s-c)*(s-b)"不會影響程序運行的結(jié)果()
第18題
程序總是輸出四位小數(shù)( )
第19題
當(dāng)輸入為“3 4 5”時,輸出為( )
"6.0000"
"12.0000"
"24.0000"
"30.0000"
第20題
當(dāng)輸入為“5 12 13”時,輸出為( )
"60.0000"
"120.0000"
第21題
#include<iostream> #include<vector> #include<algorithm> using namespace std; int f(string x,string y){ int m=x.size(); int n=y.size(); vector<vector<int>> v(m+1,vector<int>(n+1,0)); for(int i=1;i<=m;i++){ for(int j=1;j<=n;j++){ if(x[i-1]==y[j-1]){ v[i][j]=v[i-1][j-1]+1; }else{ v[i][j]=max(v[i-1][j],v[i][j-1]); } } } return v[m][n]; } bool g(string x,string y){ if(x.size() != y.size()){ return false; } return f(x+x,y)==y.size(); } int main(){ string x,y; cin>>x>>y; cout<<g(x,y)<<endl; return 0; }
f函數(shù)的返回值小于等于min(n,m)。( )
第22題
f函數(shù)的返回值等于兩個輸入字符串的最長公共子串的長度。()
第23題
當(dāng)輸入兩個完全相同的字符串時,g函數(shù)的返回值總是true。()
第24題
將第19行中的“v[m][n]”替換為“v[n][m]”,那么該程序( )
行為不變
只會改變輸出
一定非正常退出
可能非正常退出
第25題
當(dāng)輸入為 "csp-j p-jcs" 時,輸出為( )
“0”
“1”
“T”
“F”
第26題
當(dāng)輸入為“csppsc spsccp”時,輸出為:( )
第27題
#include <iostream> #include <cmath> using namespace std; int solve1(int n){ return n*n; } int solve2(int n){ int sum=0; for(int i=1;i<=sqrt(n);i++){ if(n%i==0){ if(n/i==i){ sum+=i*i; }else{ sum+=i*i+(n/i)*(n/i); } } } return sum; } int main(){ int n; cin>>n; cout<<solve2(solve1(n))<<" "<<solve1((solve2(n)))<<endl; return 0; }
假設(shè)輸入的n是絕對值不超過1000的整數(shù),完成下面的判斷題和單選題:
如果輸入的n為正整數(shù),solve2函數(shù)的作用是計算n所有的因子的平方和( )
第28題
第13~14行的作用是避免n的平方根因子i(或n/i)進入第16行而被計算兩次()
第29題
如果輸入的n為質(zhì)數(shù),solve2(n)的返回值為n2+1()
第30題
如果輸入的n為質(zhì)數(shù)p的平方,那么solve2(n)的返回值為( )
p²+p+1
n²+n+1
n²+1
p4+2p²+1
第31題
當(dāng)輸入為正整數(shù)時,第一項減去第二項的差值一定( )
大于0
大于等于0 且不一定大于0
小于0
小于等于0 且不一定小于0
第32題
當(dāng)輸入為“5”時,輸出為( )
"651.625"
"650.729"
"651.676"
"652.625"
第33題
(尋找被移除的元素)問題,原有長度為n+1,公差為1的等差升序數(shù)列,將序列輸入到程序的數(shù)組時移除了一個元素,導(dǎo)致長度為n的升序數(shù)組可能不再連續(xù),除非被移除的是第一個或最后一個元素。需要在數(shù)組不連續(xù)時,找出被移除的元素。
#include <iostream> #include <vector> using namespace std; int find_missing(vector<int>& nums){ int left=0,right=nums.size()-1; while(left<right){ int mid=left+(right-left)/2; if(nums[mid]==mid+①){ ②; }else{ ③; } } return ④; } int main(){ int n; cin>>n; vector<int> nums(n); for(int i=0;i<n;i++) cin>>nums[i]; int misssing_number=find_missing(nums); if(missing_number==⑤){ cout<<"Sequence is consecutive"<<endl; }else{ cout<<"Missing numbers is"<<missing_number<<endl; } return 0; }
①處應(yīng)填( )
1
nums[0]
right
left
第34題
②處應(yīng)填( )
left=mid+1
right=mid-1
right=mid
left=mid
第35題
③處應(yīng)填( )
第36題
④處應(yīng)填( )
left+nums[0]
right+nums[0]
mid+nums[0]
right+1
第37題
⑤處應(yīng)填( )
nums[0]+n
nums[0]+n-1
nums[0]+n+1
nums[n-1]
第38題
(編輯距離)給定兩個字符串,每次操作可以選擇刪除(Delete)、插入(Insert)、替換(Replace),一個字符,求將第一個字符串轉(zhuǎn)換為第二個字符串所需要的最少操作次數(shù)。
#include <iostream> #include <string> #include <vector> using namespace std; int min(int x,int y,int z){ return min(min(x,y),z); } int edit_dist_dp(string str1,string str2){ int m=str1.length(); int n=str2.length(); vector<vector<int>> dp(m+1,vector<int>(n+1)); for(int i=0;i<=m;i++){ for(int j=0;j<=n;j++){ if(i==0) dp[i][j]=(1); else if(j==0) dp[i][j]=(2); else if((3)) dp[i][j]=(4); else dp[i][j]=1+min(dp[i][j-1],dp[i-1][j],(5)); } } return dp[m][n]; } int main(){ string str1,str2; cin>>str1>>str2; cout<<"Mininum number of operation:" <<edit_dist_dp(str1,str2)<<endl; return 0; }
j
i
m
n
第39題
第40題
str1[i-1]==str2[j-1]
str1[i]==str2[j]
str1[i-1]!=str2[j-1]
str1[i]!=str2[j]
第41題
dp[i-1][j-1]+1
dp[i-1][j-1]
dp[i-1][j]
dp[i][j-1]
第42題
dp[i][j] + 1
dp[i][j]
一、選擇題(1-15 共 15 題); 二、閱讀程序(16-32 共 17 題); 三、完善程序(33-42 共 10 題)。