1.如果在一個函數中的複合語句中定義了一個變量,則該變量( )。
A 只在該複合語句中有效
B 在本程序範圍內有效
C 在該函數中有效
D 為非法變量
2.當函數的參數是普通變量時,關於函數的形參和形參,以下説法正確的是( )。\
A 實參和與其對應的形參共佔用一個存儲單元
B 只有當實參和與其對應的形參同名時才共佔用相同的存儲單元
C 實參和與其對應的形參各佔用獨立的存儲單元
D 形參是虛擬的,不佔用存儲單元
3.在以下各組標識符中,合法的標識符是( )。
A B01 table_1 0_t k%
B sj snt _xy w_y23
C xy_ longdouble *p CHAR
DFast void pbl <book>
4.觀察以下代碼,關於對象成員訪問的描述正確的是( )。
class Point {
public:
int x, y;
void print() { cout << x << "," << y; }
};
int main() {
Point p1;
Point p2;
p1.x = 10;
p1.y = 20;
p2 = p1;
p2.x = 30;
p1.print();
p2.print();
}
A p1.print()和p2.print()調用的是同一個函數代碼
B p1.x的值現在為30
C p2 = p1調用了複製構造函數
D p1和p2指向同一個內存地址
5.以下數組聲明中正確的是( )。
A int y[5]={0,1,3,5,7,9} ;
B double x[5]={2.0,4.0,6.0,8.0,10.0};
C double [3] []={1,2,3,4,5,6};
D char s[5]=”abcde”;
6.已有定義int k=2,ptr1,ptr2;且ptr1和ptr2均已指向變量k,下面不能正確執行的賦值語句是( )。
A k=*ptr1*(*ptr2)
B ptr1=ptr2
C ptr2=k
D k=*ptr1+*ptr2
7.能正確表示“當x的取值在[1,10]和[200,210]範圍內為真,否則為假”的表達式是( ) 。
A (x>=1) && (x<=10) | | (x>=200) && (x<=210)
B (x>=1) && (x<=10) && (x>=200) && (x<=210)
C (x>=1) | | (x<=10) && (x>=200) | | (x<=210)
D (x>=1) | | (x<=10) | | (x>=200) | | (x<=210)
8.若有定義:`int a[10],則對數組a元素的正確引用是( )。
A a(5)
B a[10]
C a{3}
D a[10-10]
9.下列關於類和對象的描述中,正確的是( )。
A 類的私有數據成員只能被類的成員函數訪問
B 類是對一組具有相同屬性和行為的對象的抽象
C 對象是類的模板,類通過對象來創建
D 一個類的不同對象擁有不同的成員函數實現
10.關於構造函數,以下説法錯誤的是( )。
A 構造函數名與類名相同
B 構造函數在創建對象時自動調用
C 構造函數可以重載
D 構造函數可以有返回值
11.該程序的功能是輸出100-1000之間的所有素數以及素數的個數,請補全程序。
#include<iostream>
using namespace std;
int main()
{int i,s=0,j;
for(i=100;i<=1000;i++)
{ for(j=2;__4__;j++)
if(i%j==0)
___5____
if(__6____)
{cout<<i<<" ";
s++;}
}
cout<<endl;
cout<<s;
return 0;
}
12.子函數factors(int x,int k)的功能是返回整數x中包含因子k的個數,如果沒有該因子,則返回0,請補全程序。
#include<iostream>
using namespace std;
int factors(int x,int k)
{ int i=0;
if(_1_) return 0;
while(_2__)
{
i++;
___3____ }
return i;
}
int main()
{
int x,k;
cin>>x>>k;
cout <<factors(x,k);
return 0;
}
13.聲明一個時間類(Time),用於記錄警務活動的時間,包含私有數據成員:小時(hour)、分鐘(minute)。設計以下函數:
(1)用於將數據成員初始化的成員函數;
(2)用於輸出時間的成員函數;
(3)重載加法運算符“+”,實現兩個時間對象的相加(例如,1小時20分鐘+2小時30分鐘=3小時50分鐘)。注意分鐘超過60要進位。
編寫主函數測試以上函數。
14.已知分數序列:1/2,2/3,3/5,5/8,8/13,…,編寫程序完成:
(1)該序列的累加和首次大於7.0時停止計算;
(2)以逗號分隔輸出從首項到該滿足條件項的所有項;
(3)輸出該滿足條件項的位置序號和該項的數值;
(4)輸出上述所有項的累加和
15.某市某區公安分局下轄6個派出所,每個派出所每季度處理治安案件數量不同,編寫程序輸入該分局每個派出所各季度的案件數量(4個季度),並計算每個派出所全年案件總量,將案件總量添加到二維數組的最後一列,輸出完整的二維數組。
16.在一次警務技能比武中,有12名選手參加了射擊比賽,成績即射擊環數(比如10.2環,9.8環),編寫函數將成績按降序排序,主函數用户輸入環數,調用函數,輸出排序後的成績。要求自己實現排序算法,不能直接調用系統函數。
17.某市公安局為表彰先進,需要從各警種中找出累計立功次數最多的警員。每個警員有姓名、警號、年齡、從警年限、所屬警種(刑偵、治安、交警等)和立功次數等信息。
要求:
(1)設計PoliceOfficer類,包含上述私有數據成員;
(2)實現帶參數構造函數、複製構造函數、析構函數(輸出“信息已銷燬”);
(3)實現顯示警員完整信息的成員函數;
(4)編寫普通函數:int findMostMeritorious(PoliceOfficer arr[],int n),參數n為數組元素個數,查找立功次數最多的警員並返回該對象的序號(需要訪問對象的私有成員,可使用友元函數);
(5)主函數中創建5個警員對象數組,調用函數找出立功最多者並輸出其信息,並測試以上所有函數。
輸入示例:
張偉,1001,35,10,刑偵,5
李娜,1002,28,5,治安,3
王剛,1003,42,18,交警,7
劉靜,1004,38,12,經偵,7
陳明,1005,45,20,刑偵,9
18.編寫程序對字符串完成以下操作:
(1)編寫子函數,統計a字符串中字母字符的個數。
函數原型:int mystrlen(const char a[]);
如a字符串"aB56cd8_7",則函數返回值為4。
(2)編寫子函數,將a字符串中的數字字符拷貝到字符串b中。
函數原型:void extract_digits(const char a[], char b)
如a字符串"aB56cd8_7",則b串為:“5687”。
(3)編寫子函數,將a字符串加密,存到字符串c中,加密規則為:如果是字母字符,則大小寫轉換,如果是數字字符,將數字乘以2,超出9則只保留個位,其他字符不變。
函數原型: void myEncipher(const char a[], char c[]);
如a字符串為: "aB56cd8_7",加密後的結果為:"Ab02CD6_4"。
編寫主函數測試以上函數。