_數(shù)組c++_習(xí)習(xí)題答案解析_第1頁
_數(shù)組c++_習(xí)習(xí)題答案解析_第2頁
_數(shù)組c++_習(xí)習(xí)題答案解析_第3頁
_數(shù)組c++_習(xí)習(xí)題答案解析_第4頁
_數(shù)組c++_習(xí)習(xí)題答案解析_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余6頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、習(xí)題 4一、單項(xiàng)選擇題1. 若有說明 int a34;則a數(shù)組元素的非法引用是【 】A. a02*1 B. a13 C. a4-20 D. a04【答案】 D【解析】數(shù)組下標(biāo)從0開始,a04的列下標(biāo)越界。2. 在C+語言中,引用數(shù)組元素時(shí),其數(shù)組下標(biāo)的數(shù)據(jù)類型允許是【 】A. 整型常量 B. 整型表達(dá)式 C. 整型常量或整型表達(dá)式 D. 任何類型的表達(dá)式【答案】 C3. 以下不正確的定義語句是【 】A. double x5=,;B. int y5=0,1,3,5,7,9;C. char c1=1,2,3,4,5;D. char c2=x10,xa,x8;【答案】 B【解析】初始值的個(gè)數(shù)大于數(shù)組

2、的大小,系統(tǒng)會(huì)出現(xiàn)編譯錯(cuò)誤。4. 對(duì)以下說明語句的正確理解是【 】int a10=6,7,8,9,10;A. 將5個(gè)初值依次賦給a1至a5B. 將5個(gè)初值依次賦給a0至a4C. 將5個(gè)初值依次賦給a6至a10D. 因?yàn)閿?shù)組長度與初值的個(gè)數(shù)不相同,所以此語句不正確【答案】 B5. 若有說明:int a 4=0,0;則下面不正確的敘述是【 】A. 數(shù)組a的每個(gè)元素都可得到初值0B. 二維數(shù)組a的第一維大小為1C. 當(dāng)初值的個(gè)數(shù)能被第二維的常量表達(dá)式的值除盡時(shí),所得商數(shù)就是第一維的大小D. 只有元素a00和a01可得到初值,其余元素均得不到確定的初值【答案】 D【解析】二維數(shù)組初始化時(shí),行大小可以省

3、略,被省略的大小根據(jù)初值的個(gè)數(shù)系統(tǒng)來確定,本題中,有2個(gè)初值說明是1行4列,所以第一維為1。元素a00和a01賦初值為0 ,其余元素初值系統(tǒng)默認(rèn)為0。6. 以下能對(duì)二維數(shù)組c進(jìn)行正確的初始化的語句是【 】A. int c3=3,3,4; B. int c3=3,3,4;C. int c32=3,3,4,5; D. int c3=3,3;【答案】 B【解析】二維數(shù)組初始化時(shí),行大小可以省略,列大小不可以省略,所以A答案錯(cuò)誤。C答案中初始值行數(shù)多于數(shù)組大小中的行大小,也是錯(cuò)誤的。另外初始化時(shí),初值之間不能有空位置,故D錯(cuò)誤。7. 以下不能對(duì)二維數(shù)組a進(jìn)行正確初始化的語句是【 】A. int a23

4、=0;B. int a3=1,2,0;C. int a23=1,2,3,4,5,6;D. int a3=1,2,3,4,5,6;【答案】 C8. 閱讀下面程序,則程序段的功能是【 】#include<iostream>using namespace std; int main() int c=23,1,56,234,7,0,34,i,j,t;for(i=1;i<7;i+) t=ci;j=i-1; while(j>=0 && t>cj) cj+1=cj;j-; cj+1=t; for(i=0;i<7;i+) cout<<ci<

5、<'t' putchar('n'); return 0;A. 對(duì)數(shù)組元素的升序排列 B. 對(duì)數(shù)組元素的降序排列C. 對(duì)數(shù)組元素的倒序排列 D. 對(duì)數(shù)組元素的隨機(jī)排列【答案】 B【解析】每層外層for循環(huán)結(jié)束會(huì)增加對(duì)一個(gè)元素的排序,確定c0 ,c1的大小順序,如圖4-1所示。圖4-1 第一次排序第二次將c2分別與前2兩個(gè)元素比較,插入最前面,確定c0 ,c1, c2 的大小順序,如圖4-2所示。圖4-2 第二次排序以此類推,外層6次循環(huán)后,將無序的數(shù)組實(shí)現(xiàn)大到小的降序排列。9. 下列選項(xiàng)中錯(cuò)誤的說明語句是【 】A. char a=t,o,y,o,u,0;B.

6、 char a="toyou0"C. char a="toyou0"D. char a=toyou0;【答案】 D10. 下述對(duì)C+語言字符數(shù)組的描述中錯(cuò)誤的是【 】A. 字符數(shù)組的下標(biāo)從0開始B. 字符數(shù)組中的字符串可以進(jìn)行整體輸入/輸出C. 可以在賦值語句中通過賦值運(yùn)算符“=”對(duì)字符數(shù)組整體賦值D. 字符數(shù)組可以存放字符串【答案】 C11. 以下二維數(shù)組c的定義形式正確的是【 】A. int c3 B. float c3,4C. double c34 D. float c(3)(4)【答案】 C12. 已知:int c34;則對(duì)數(shù)組元素引用正確的是【

7、 】A. c14 B. c0 C. c1+00 D. 以上表達(dá)都錯(cuò)誤【答案】 C13. 若有以下語句,則正確的描述是【 】char a="toyou"char b=t,o,y,o,u;A. a數(shù)組和b數(shù)組的長度相同 B. a數(shù)組長度小于b數(shù)組長度C. a數(shù)組長度大于b數(shù)組長度 D. a數(shù)組等價(jià)于b數(shù)組【答案】 C【解析】 a數(shù)組中存放的是字符串,數(shù)組大小為6個(gè)字節(jié)空間,分別存放t,o,y,o,u和0,b數(shù)組的長度為5個(gè)字節(jié)空間,只存放t,o,y,o,u,5個(gè)字符。 二、填空題1. 若有說明:int a3=1,2,3,4,5,6,7;則a數(shù)組第一維的大小是_?!敬鸢浮?32.

8、 設(shè)有數(shù)組定義: char array="China" 則數(shù)組 array所占的空間為_個(gè)字節(jié)?!敬鸢浮?63. 假定int類型變量占用兩個(gè)字節(jié),其有定義:int x10=0,2,4;,則數(shù)組x在內(nèi)存中所占字節(jié)數(shù)是_?!敬鸢浮?204. 下面程序的功能是輸出數(shù)組s中最大元素的下標(biāo),請(qǐng)?zhí)羁铡?include<iostream>using namespace std;int main() int k, p,s=1, -9, 7, 2, -10, 3; for(p =0, k =p; p< 6; p+) if(sp>sk) _ cout<< k

9、<<endl;return 0;【答案】 k=p;5. 下面程序是刪除輸入的字符串中字符H,請(qǐng)?zhí)羁铡?include<iostream>using namespace std;int main() char s80; int i,j; gets(s); for(i=j=0;si!=0;i+) if(si!=H)_sj=0;puts(s);return 0;【答案】 sj+ =si;【解析】 此處相當(dāng)于補(bǔ)充了2條語句,等價(jià)于sj =si; j+;。6. 已知:char a20= "abc",b20= "defghi"則執(zhí)行cout&

10、lt;<strlen(strcpy(a,b);語句后的輸出結(jié)果為_。【答案】 67. 有如下定義語句:int aa3=12,23,34,4,5,6,78,89,45;,則45在數(shù)組aa中的行列坐標(biāo)各為 _?!敬鸢浮?2和28. 若二維數(shù)組a有m列,則計(jì)算任一元素aij在數(shù)組中相對(duì)位置的公式為(假設(shè)a00位于數(shù)組的第一個(gè)位置上) _?!敬鸢浮?i*m+j+19. 定義如下變量和數(shù)組:int k;int a33=9,8,7,6,5,4,3,2,1;則語句for(k=0;k<3;k+) cout<<akk;的輸出結(jié)果是_?!敬鸢浮?951【解析】 定義的二維數(shù)組可以描述一個(gè)方

11、陣: 9 8 76 5 43 2 1語句功能是實(shí)現(xiàn)該方陣主對(duì)角線上元素的輸出。10. 已知:char a15,b15="I love china"則在程序中能將字符串I love china賦給數(shù)組a的語句是_?!敬鸢浮?strcpy(a,b);三、讀程序?qū)懡Y(jié)果1. 程序代碼如下#include<iostream>using namespace std; int main() char arr24;strcpy(arr0,"you"); strcpy(arr1,"me");arr03='&'cout

12、<<arr0<<endl;return 0;【答案】 you&me2. 程序代碼如下:#include<iostream>using namespace std; int main() char a='a', 'b', 'c', 'd', 'e', 'f', 'g','h','0' int i,j;i=sizeof(a); j=strlen(a);cout<< i <<",&

13、quot;<<j<<endl;return 0;【答案】 9,83. 程序代碼如下:#include<iostream>using namespace std;int main() int i;int a33=1,2,3,4,5,6,7,8,9;for(i=0;i<3;i+)cout<<a2-ii;return 0;【答案】 753【解析】 程序功能是實(shí)現(xiàn)一個(gè)方陣次對(duì)角線上元素的輸出。4. 程序代碼如下:#include<iostream>using namespace std; int main() char a30=&quo

14、t;nice to meet you!" strcpy(a+strlen(a)/2,"you"); cout<<a<<endl;return 0;【答案】nice to you5. 程序代碼如下:#include<iostream>using namespace std; int main() int k30=12,324,45,6,768,98,21,34,453,456;int count=0,i=0;while(ki) if(ki%2=0|ki%5=0)count+;i+;cout<< count <&l

15、t;","<<i<<endl;return 0;【答案】8,106. 程序代碼如下:#include<iostream>using namespace std; int main() char a30,b30;int k;gets(a);gets(b);k=strcmp(a,b);if(k>0) puts(a);else if(k<0) puts(b);return 0;輸入loveåChinaå輸出結(jié)果是【答案】love【解析】 strcmp(a,b)函數(shù)功能是比較a和b字符串的大小,比較是逐個(gè)字符的比較

16、,比較方法是ASCII碼值做減法,k='l'-'C'>,所以結(jié)果輸出字符串a(chǎn)。四、編程題1編程實(shí)現(xiàn)功能:刪去一維數(shù)組中所有相同的數(shù),使之只剩一個(gè)。數(shù)組中的數(shù)已按由小到大的順序排列,函數(shù)返回刪除后數(shù)組中數(shù)據(jù)的個(gè)數(shù)。例如,若一維數(shù)組中的數(shù)據(jù)是:2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10刪除后,數(shù)組中的內(nèi)容應(yīng)該是:2 3 4 5 6 7 8 9 10。思路:fun函數(shù)的2個(gè)形式參數(shù),分別接收數(shù)組名,即數(shù)組的首地址,和數(shù)組中存放的原始數(shù)據(jù)的個(gè)數(shù),fun函數(shù)對(duì)原始數(shù)組按題目處理后,在主函數(shù)中輸出的數(shù)組a就是處理后的數(shù)組,這里函數(shù)

17、之間參數(shù)傳遞屬于地址傳遞。程序代碼如下:#include<iostream>using namespace std; const N=80;int fun(int a, int n) int i,j=1; for(i=1;i<n;i+) if(aj-1!=ai) aj+=ai; return j;int main() int aN= 2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10, i, n=19; cout<<"原始數(shù)組中的數(shù)據(jù)是:"<<endl; for(i=0;i<19;i+) cout

18、<<ai<<" " n=fun(a,n); cout<<"n刪除后,數(shù)組中的數(shù)據(jù)是:"<<endl; for(i=0;i<n;i+) cout<<ai<<" " cout<<endl; return 0;2編程實(shí)現(xiàn)功能:從鍵盤上輸入若干個(gè)學(xué)生的成績,當(dāng)輸入負(fù)數(shù)時(shí)表示輸入結(jié)束,計(jì)算學(xué)生的平均成績,并輸出低于平均分的學(xué)生成績。思路:使用循環(huán)輸入學(xué)生的成績,注意循環(huán)條件有2個(gè),分別是輸入成績個(gè)數(shù)大于數(shù)組的大小和輸入成績?yōu)樨?fù)數(shù)時(shí)結(jié)束,同時(shí)記錄輸入成績的個(gè)

19、數(shù)n。結(jié)束輸入后,計(jì)算平均值和篩選小于60分的成績并輸出。程序代碼如下:#include<iostream> using namespace std;int main( ) const N=800; float xN,sum=0,ave,a; int n=0,i; cout<<"輸入學(xué)生成績:"<<endl; cin>>a; while (a>=0 && n<N) sum+=a; xn=a; n+; cin>>a; cout<<"輸入的"<<n

20、<<"名學(xué)生成績?yōu)椋?quot;for (i=0; i<n; i+) cout<<xi<<" "cout<<endl;ave=sum/n;cout<<"平均分:"<<ave<<endl;cout<<"低于平均分的成績:"for (i=0; i<n; i+) if (xi<ave) cout<<xi<<" " cout<<endl; return 0;3編程實(shí)

21、現(xiàn)功能:對(duì)從鍵盤上輸入的兩個(gè)字符串進(jìn)行比較,然后輸出兩個(gè)字符串中第一個(gè)不相同字符的ASCII碼值之差。例如:輸入的兩個(gè)字符串分別為abcdefg和abceef,則輸出為-1。思路:題目要求實(shí)現(xiàn)的功能,相當(dāng)于字符串處理函數(shù)strcmp的功能,即:圖4-3 字符串比較示意圖使用循環(huán)逐個(gè)比較兩個(gè)字符串的每個(gè)字符,當(dāng)字符出現(xiàn)不相等時(shí),跳出循求不相同的兩個(gè)字符的ASCII碼值的差輸出。程序代碼如下:#include<iostream> using namespace std;#include ""int main( ) char str180, str280,c; int

22、 i=0,s; gets (str1); gets (str2); while (str1i=str2i) && (str1i!= '0') i+; s= str1i-str2i; cout<<s<<endl;return 0;4編程實(shí)現(xiàn)功能:求二維數(shù)組周邊元素之和。思路:二維數(shù)組中的數(shù)據(jù)可以看成一個(gè)二維矩陣,例如下面的二維數(shù)組,輸出周邊元素之和為:sum=48,用兩個(gè)并列的for循環(huán)實(shí)現(xiàn)求累加和。 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7 程序代碼如下:#include<iostream> using

23、namespace std;#include ""const M=4;const N=4;int main( ) int aMN,i,j,sum=0; for (i=0; i<M; i+) for (j=0; j<N; j+) cin>>aij; for (i=0; i<N; i+) /*求第1行和第4行元素和*/ sum+=a0i; sum+= aM-1i; for (i=1; i<M-1; i+) /*求第1列和第4列元素和,但不包括a00, a30, a03, a33四個(gè)角上的元素*/ sum+=ai0; sum+= aiN-1; cout<<"二維數(shù)組周邊元素之和為:"<<

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論