上機(jī)試驗(yàn)七答案請(qǐng)自行校對(duì)講解_第1頁
上機(jī)試驗(yàn)七答案請(qǐng)自行校對(duì)講解_第2頁
上機(jī)試驗(yàn)七答案請(qǐng)自行校對(duì)講解_第3頁
上機(jī)試驗(yàn)七答案請(qǐng)自行校對(duì)講解_第4頁
上機(jī)試驗(yàn)七答案請(qǐng)自行校對(duì)講解_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、二維數(shù)組姓名:上機(jī)實(shí)驗(yàn)七學(xué)號(hào) :目的要求1 掌握二維數(shù)組的基本概念,如何定義二維數(shù)組,如何初始化二維數(shù)組。2 掌握與數(shù)組有關(guān)的算法,如最大最小值(或位置)、轉(zhuǎn)置數(shù)組等。3 掌握 gets(s)、put(s) 等字符串函數(shù)的作用: 把以回車結(jié)束的鍵盤輸入的字符串賦值給 字符數(shù)組 s。二實(shí)驗(yàn)內(nèi)容第1題、 求一個(gè) 34 矩陣的所有靠外側(cè)的的元素之和/*解題思路: 矩陣外側(cè)元素總共有 4 部分組成: 第一行、最后一行、第一列和最后一列*/#define N 3#define M 4#include void main() int aNM;int i, j, sum;printf( 請(qǐng)輸入 %d*%d

2、二維數(shù)組的值: , N, M); for (i=0; iN; i+)for (j=0; jM; j+)scanf(%d, &aij);/先計(jì)算第 1 行和最后一行 所有元素的和sum = 0;for (i=0; iM; i+)sum += a0i+aN-1i;/計(jì)算第 1 列和最后 1 列 所有元素的和 for (i=0; iN; i+)sum += ai0 + aiM-1;/再減去 4 個(gè)角落的元素,因?yàn)樗鼈冎貜?fù)計(jì)算了一次 sum -= a00 + a0M-1 + aN-10 + aN-1M-1;printf( 矩陣的外側(cè)元素之和為 %dn, sum);第2題、 已知一個(gè) 34 矩陣 a34

3、=1,2,3,4,1,2,3,4,1,2,3,4,打印輸出其轉(zhuǎn)置矩陣。#include void main() int a34=1,2,3,4,1,2,3,4,1,2,3,4, b43; int i, j;printf( 矩陣 a 為: n);for (i=0; i3; i+) for (j=0; j4; j+)bji = aij;printf(%5d, aij); printf(n);printf( 矩陣 b 為: n);for (j=0; j4; j+) for (i=0; i3; i+)printf(%5d, bji); printf(n);第 3題、 給定一個(gè) N*N 的方陣,求出其上

4、三角元素之和/*解題思路: 上三角形是指主對(duì)角線右上角的所有元素*/#define N 10#include void main() int aNN;int i, j, sum;printf( 請(qǐng)輸入 %d*%d 二維數(shù)組的值: n, N, N); for (i=0; iN; i+)for (j=0; jN; j+)scanf(%d, &aij);/ 計(jì)算上三角形所有元素之和sum = 0;for (i=0; iN; i+) / 對(duì)于第 i行,列是從 i開始,直到 N-1 時(shí)結(jié)束 for (j=i; jN; j+) sum += aij;printf( 上三角形元素之和為: %dn, sum)

5、;第4題、 打印楊輝三角形前 10 行(分別用二維數(shù)組和一維數(shù)組實(shí)現(xiàn))1111211331146411510105 1/楊輝三角形 (二維數(shù)組 )#include main()int a1010;int i, j, k;for (i=0; i10; i+)ai0 = 1; / 第 i行的第 0個(gè)元素是 1aii = 1; / 第i 行的第 i個(gè)元素是 1/ 其它列的元素是由前一行的當(dāng)前列和前一列的和 for (j=1; ji; j+)aij = ai-1j-1+ai-1j;printf( 楊輝三角形為: n);for (i=0; i10; i+) for (j=0; j=i; j+) prin

6、tf(%d , aij);printf(n);printf(n);/楊輝三角形 (一維數(shù)組 )#include main() int a10;int i, j, k;printf( 楊輝三角形為: n);for (i=1; i0; j-) / 第 j 列是其本身與前一列之和aj = aj+aj-1;/ 打印第 i 行所有元素 for (j=0; ji; j+) printf(%d , aj);printf(n);printf(n);第5題、假設(shè)一個(gè)班級(jí)有 5 名學(xué)生,每個(gè)學(xué)生有 6 門課的成績,請(qǐng)求出每個(gè)學(xué)生 的平均成績和每門課的平均成績。#define N 5#define M 6#incl

7、ude void main() float aNM; / 分?jǐn)?shù)可能為實(shí)數(shù)int i, j;float sum;printf( 請(qǐng)輸入學(xué)生的成績( %d*%d ):n, N, M);for (i=0; iN; i+)for (j=0; jM; j+)scanf(%f, &aij);/ 對(duì)每個(gè)學(xué)生,計(jì)算其平均成績for (i=0; iN; i+) sum = 0;for (j=0; jM; j+)sum += aij;sum = sum / M;printf( 第%d 個(gè)學(xué)生的平均成績?yōu)椋?%.2fn, i+1, sum);/ 對(duì)每門課程,計(jì)算平均成績for (i=0; iM; i+) sum =

8、 0;for (j=0; jN; j+)sum += aji;sum = sum / N;printf( 第%d 門課的平均成績?yōu)椋?%.2fn, i+1, sum);第6題、 將一個(gè)整數(shù)字符串轉(zhuǎn)換為整數(shù)輸出。 (注:整數(shù)字符串和整數(shù)是不同的, 比如 123是一個(gè)整數(shù)字符串,每個(gè)元素都是一個(gè)數(shù)字,但不能進(jìn)行數(shù) 值運(yùn)算,而 123 是一個(gè)整數(shù),可以進(jìn)行數(shù)值運(yùn)算。兩者外觀形態(tài)相似, 本質(zhì)不同)/*解題思路:1、先輸入一個(gè)字符串;2、將字符串中每個(gè)字符分解, 并通過 ASCII 碼值轉(zhuǎn)換成數(shù)字;3、將轉(zhuǎn)換后的數(shù)字進(jìn)行合并,組合成一個(gè)整數(shù)。*/#define N 10#include #include

9、 / 處理字符串時(shí),這個(gè)庫文件必須包含進(jìn)來 void main() char aN; / 字符數(shù)組int i, k;long sum;printf( 請(qǐng)輸入一個(gè)字符串: n); gets(a);/ 下面對(duì)字符串 a從第 0個(gè),到最后一個(gè)字符 逐個(gè)進(jìn)行處理 sum = 0;for (i=0; ai!=0; i+) k = ai - 48; / 把字符的 asc 碼值 轉(zhuǎn)換成 對(duì)應(yīng)的數(shù)字sum = sum * 10 + k; / 把轉(zhuǎn)換后的 k 和前面得到的數(shù)字進(jìn)行合并 printf( 轉(zhuǎn)換后,數(shù)值為: %ldn, sum);第7題、編寫一個(gè)字符串復(fù)制程序,它的功能是把一個(gè)字符串的所有內(nèi)容復(fù)制給

10、另一個(gè)字符串,并輸出復(fù)制后的字符串。/*解題思路:1、先輸入一個(gè)字符串;2、對(duì)字符串中每個(gè)字符,復(fù)制到另外一個(gè)數(shù)組中;3、復(fù)制時(shí),還需要復(fù)制字符串結(jié)束符 0 。*/#define N 100#include #include / 處理字符串時(shí),這個(gè)庫文件必須包含進(jìn)來void main() char aN, bN; / 字符數(shù)組 int i;printf( 請(qǐng)輸入一個(gè)字符串: ); gets(a);/ 下面對(duì)字符串 a 從每個(gè)字符逐個(gè)進(jìn)行復(fù)制 for (i=0; i N & ai!=0; i+) bi = ai; / 把 ai中的字符復(fù)制到 bi中 if (iN) / 此時(shí) 還需要復(fù)制 0 bi

11、 = 0;printf( 復(fù)制后的字符串為: %sn, b);第8題、編寫一個(gè)求字符串長度的程序,它的功能求出一個(gè)字符串中有效字符的 個(gè)數(shù)。/*解題思路:1、先輸入一個(gè)字符串;2、對(duì)字符串中每個(gè)字符進(jìn)行計(jì)數(shù),直到遇到字符串結(jié)束符0 時(shí)結(jié)束;*/#define N 100#include #include / 處理字符串時(shí),這個(gè)庫文件必須包含進(jìn)來void main() char aN; / 字符數(shù)組int i;printf( 請(qǐng)輸入一個(gè)字符串: );gets(a);/ 下面的 for 語句也可以改為 while 語句for (i=0; ai!=0; i+) printf( 字符串長度為: %dn

12、, i);第9題、 編寫一個(gè)字符串連接程序,它的功能是把兩個(gè)不知道長度的字符串s1、s2的內(nèi)容連接成為一個(gè)字符串,并保存在字符串s1 中。(提示:要定義足夠長的字符串 s1)/*解題思路:1、先輸入兩個(gè)字符到 a 和 b 中;2、判斷字符串 a 的長度;3、將 b 中字符,逐個(gè)復(fù)制到 a 中的結(jié)束符 0的位置上; */ #define N 1000#include #include / 處理字符串時(shí),這個(gè)庫文件必須包含進(jìn)來 void main() char aN, bN; / 字符數(shù)組int l, i;printf( 請(qǐng)輸入第一個(gè)字符串 a:); gets(a);printf( 請(qǐng)輸入第二個(gè)字

13、符串 b: ); gets(b);/ 獲取字符串 a 的長度:用下面的循環(huán)語句,或是直接 l=strlen(a); l=0;while (al!=0)l+;/此時(shí) al = 0; 下面將 b0直接賦給 ali=0;while (bi!=0) ai+l = bi ;i+;ai+l = 0; / 最后還需要將 0放到 a 數(shù)組的最后面/* 上面 i=0 語句開始部分,也可以用下面語句代替: for (i=0; i=strlen(b); i+) ai+l = bi;*/printf( 連接后的字符串為: %sn, a);第 10題、 判斷一個(gè)字符串是否為回文,如果是輸出“ yes”,否則輸出“ no

14、”。 所謂回文是指正讀和反讀相同的字符串,比如“ 12321”/*解題思路:1、先輸入字符串到字符數(shù)組 a 中;2、然后判斷 a 的第一個(gè)字符與最后一個(gè)字符是否相同;3、如果不同,則跳出循環(huán),輸出 NO ;4、否則,判斷第 2個(gè)字符,與倒數(shù)第 2 個(gè)字符是否相同;5、這個(gè)過程一直繼續(xù), 直到到 a 的中間位置時(shí)停止。*/#define N 100#include #include / 處理字符串時(shí),這個(gè)庫文件必須包含進(jìn)來void main() char aN; / 字符數(shù)組int i, n;printf( 請(qǐng)輸入一個(gè)字符串: );gets(a);/ 獲取字符串 a的長度 ;n=strlen(a

15、);for (i=0; in/2; i+)/ 判斷第 i 個(gè)字符與第 n-i-1 個(gè)字符是否相同,如果不同,跳出循環(huán)if (ai != an-i-1)break;if (i=n/2)printf(Yes!n);elseprintf(No!n);第11題、 有一篇文章,共有 3 行文字,每行有 80 個(gè)字符,統(tǒng)計(jì)這篇文章中各 個(gè)英文字母的個(gè)數(shù)。 (提示:可以定義一個(gè)長度為 26 的整型數(shù)組 num, 分別記錄 26 個(gè)英文字母的個(gè)數(shù),比如讀入的字母為 a,則 num0+, 讀入的字母為 b, 則 num1+,)/*解題思路:1、先定義一個(gè)二維數(shù)組,用于存放輸入的三個(gè)字符串;num0 存放字符就得

16、到對(duì)應(yīng)的下2、定義一個(gè) num 數(shù)組,大小是 26,用于存放字母出現(xiàn)的次數(shù),其中 a 出現(xiàn)的次數(shù) ;3、首先,讀入三個(gè)字符串;4、其次,對(duì)每個(gè)字符串中的字符,逐個(gè)進(jìn)行統(tǒng)計(jì)其次數(shù);5、對(duì)字符轉(zhuǎn)換成 num 數(shù)組下標(biāo)的方法:將字符的 asc 碼值減去 97, 標(biāo)值。例如 a為 0, b為 1, ., z為 25。*/ #define N 100#include #include / 處理字符串時(shí),這個(gè)庫文件必須包含進(jìn)來 void main() char a3N; / 字符數(shù)組int num26 = 0;int i, j, n;printf( 請(qǐng)輸入三行字符串: );for (i=0; i3; i+

17、) gets(ai);/ 下面對(duì)每個(gè)字符串進(jìn)行處理 ;for (i=0; i3; i+)/ 對(duì) ai 字符串進(jìn)行處理j = 0;while ( aij !=0)n = aij - 97; / 將字符的 asc 碼減去 97,得到對(duì)應(yīng)的下標(biāo) numn +; / 出現(xiàn)次數(shù)加 1; j+;/ 輸出各字符串出現(xiàn)的次數(shù)for (i=0; i26; i+)if ( numi !=0 )printf( 字符 %c 出現(xiàn)的次數(shù)為: %dn, i+97, numi);第 12題、 該程序功能:輸入 1 個(gè)字符串,按字母出現(xiàn)次序輸出其中所出現(xiàn)過 的大寫英文 字母。如運(yùn) 行時(shí)輸入字 符串FONTNAME and F

18、ILENAME ,應(yīng)輸出 F O N T A M E I L 。/*解題思路:1、先定義 2 個(gè)字符數(shù)組 a 和 b,其中 a 存放輸入的字符串,而 b 存放 a 中出現(xiàn)的大寫 字母(注意不能重復(fù)出現(xiàn)) ;2、首先,輸入一個(gè)字符串,并保存到a 中;3、其次,對(duì)數(shù)組 a 中每個(gè)字符進(jìn)行逐個(gè)判斷,如果ai是大寫字母,那么做如下處理:4、在數(shù)組 b 中查找 ai是否出現(xiàn),如果沒有,則將 ai加入到數(shù)組 b 中 ; 5、最后,輸出數(shù)組 b 中的字符;*/ #define N 100#include #include / 處理字符串時(shí),這個(gè)庫文件必須包含進(jìn)來 void main() char aN, bN; / 字符數(shù)組int i, j, n;printf( 請(qǐng)輸入字符串: n); gets(a);n = 0; / n 用來表

溫馨提示

  • 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)論