C語言實(shí)驗(yàn)報(bào)告 實(shí)驗(yàn)六參考答案

上傳人:xia****ai 文檔編號(hào):159459654 上傳時(shí)間:2022-10-09 格式:DOC 頁數(shù):10 大?。?22KB
收藏 版權(quán)申訴 舉報(bào) 下載
C語言實(shí)驗(yàn)報(bào)告 實(shí)驗(yàn)六參考答案_第1頁
第1頁 / 共10頁
C語言實(shí)驗(yàn)報(bào)告 實(shí)驗(yàn)六參考答案_第2頁
第2頁 / 共10頁
C語言實(shí)驗(yàn)報(bào)告 實(shí)驗(yàn)六參考答案_第3頁
第3頁 / 共10頁

下載文檔到電腦,查找使用更方便

10 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《C語言實(shí)驗(yàn)報(bào)告 實(shí)驗(yàn)六參考答案》由會(huì)員分享,可在線閱讀,更多相關(guān)《C語言實(shí)驗(yàn)報(bào)告 實(shí)驗(yàn)六參考答案(10頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、實(shí)驗(yàn)六 二維數(shù)值數(shù)組(參考答案) (1) 設(shè)計(jì)程序 sy6-1.c,從鍵盤上輸入一個(gè) 3 行 3 列矩陣各個(gè)元素的值,輸出其主對(duì)角線元素和反向?qū)蔷€元 素之和。 算法分析: 方陣主對(duì)角線上的元素,行下標(biāo)和列下標(biāo)相同;輔對(duì)角線元素,如果行下標(biāo)為 i,列下標(biāo)就為 2-i; 參考答案: # include # include # include # include void main() { int a[3][3]; int i,j,sum=0; srand( time( NULL )

2、); printf("矩陣:\n"); for(i=0;i<3;i++) //用隨機(jī)函數(shù)生成 3 行 3 列的二維數(shù)組并按矩陣格式輸出 { for(j=0;j<3;j++) { a[i][j]=rand()%20; printf("%4d",a[i][j]); } printf("\n"); } for(i=0;i<3;i++) sum=sum+a[i][i]+a[i][2-i]; printf("該矩陣的正、反對(duì)角線元素之和為:%d\n",sum); } 運(yùn)行結(jié)果: (2) 設(shè)計(jì)程序 sy6-2.c,找出 N×N 矩陣中每列元素中的最大值,并按順序依次存放

3、于 b 數(shù)組中。 算法分析: 按列序遍歷二維數(shù)組,每列用打擂臺(tái)的方法求最大數(shù),N 列則有 N 個(gè)最大值,分別存于 b 數(shù)組的對(duì)應(yīng) 元素中。 # include # include # include # include # define N 4 void main() { int a[N][N],b[N]; int i,j; srand( time( NULL ) ); printf("矩陣:\n"); for(i=0;i

4、按矩陣格式輸出 { for(j=0;j

5、結(jié)果: (3) 設(shè)計(jì)程序 sy6-3.c,定義一個(gè) 3×3 的二維數(shù)組,通過隨機(jī)函數(shù)自動(dòng)賦值。然后輸入一個(gè)整數(shù) n,使數(shù)組 左下三角(含對(duì)角線元素)元素中的值乘以 n 。例如:若 n 的值為 3,a 數(shù)組中的值為 | 1 9 7 |則程序運(yùn)行后 a 數(shù)組中的值應(yīng)為 | 3 9 7 | | 2 3 8 | | 6 9 8 | | 4 5 6 | | 12 15 18 | 算法分析: 按行序遍歷二維數(shù)組元素,若用 i 變量表示行下標(biāo),則 i 的范圍是 0~2,用 j 變量表示列下標(biāo),則 j 的 范圍是 0~i(含對(duì)角線元素)。 參考答案: # include

6、h> # include # include # include void main() { int a[3][3]; int i,j,n; srand( time( NULL ) ); 1 2 ? ? ? ÷ 3 6 9 12 è ? 4 8 12 16 printf("原矩陣:\n"); for(i=0;i<3;i++) //用隨機(jī)函數(shù)生成 3 行 3 列的二維數(shù)組并按矩陣格式輸出 { for(j=0;j<3;j++) { a[i][j]=rand()%20; // rand()%

7、20 產(chǎn)生一個(gè) 20 以內(nèi)的整數(shù) printf("%5d",a[i][j]); } printf("\n"); } printf("請(qǐng)輸入 n:"); scanf("%d",&n); for(i=0;i<3;i++) //i 控制行下標(biāo) for(j=0;j<=i;j++) //j 從 0 到 i,即每行的對(duì)角線及前面的數(shù)的列下標(biāo) a[i][j]=a[i][j]*n; printf("\n 矩陣左下三角元素乘以 %d 后值為:\n",n); for(i=0;i<3;i++) { for(j=0;j<3;j++) printf("%5d",a[i][j]); printf(

8、"\n"); } } 運(yùn)行結(jié)果: (4) 設(shè)計(jì)程序 sy6-4.c,輸入一個(gè)整數(shù) m(2≤m≤9〕,在 m 行 m 列的二維數(shù)組中存放如下所示規(guī)律的數(shù)據(jù)。 ?1 2 3 4 ? ? ÷ 例如,若輸入 2,則輸出: ? ÷,若輸入 4,則輸出: ?2 4 6 8 ÷ 2 4 ? ÷ ? ÷ ? ÷ è ? 算法分析: 分析:m 的值是不定的,所以可以申明一個(gè)二維數(shù)組 int a[10][10],當(dāng) m=2 時(shí),只用前兩行兩列,當(dāng) m=4 時(shí),就只用前四行四列;元素 a[i][j]的值和他的行列下標(biāo)可找到規(guī)律如下:a[i][j]=(i+1)*(j+1)。 參考答

9、案: #include void main() { int a[10][10],i,j,m; //數(shù)組定義到足夠大 printf("Input m:"); scanf("%d",&m); for(i=0;i

10、.c,將 M 行 N 列的二維數(shù)組中的數(shù)據(jù), 按列的順序依次放到一個(gè)一維數(shù)組中。例如, 二 維數(shù)組中的數(shù)據(jù)為: 33 33 33 33 44 44 44 44 55 55 55 55 則一維數(shù)組中的內(nèi)容應(yīng)是: 33 44 55 33 44 55 33 44 55 33 44 55。 算法分析: 按列序遍歷原二維數(shù)組,存入的一維數(shù)組元素用第三個(gè)下標(biāo)(例如 k),初值為 0,每用一個(gè)元素,k 加 1,為下一個(gè)元素的下標(biāo)。最終 k 的值為實(shí)際使用一維數(shù)組元素的個(gè)數(shù)。 參考答案: # include # include # include

11、 # include # define M 3 # define N 4 void main() { int a[M][N],b[ M*N ]; int i,j,k=0; srand( time( NULL ) ); printf("原矩陣:\n"); for(i=0;i

12、0;j

13、果為 3 1 2 6 4 5 9 7 8 算法分析: 二維數(shù)組的移動(dòng),類似于一維數(shù)組的元素移動(dòng);只是在一維數(shù)組移動(dòng)的外面加上控制行的外循環(huán)。即: 對(duì)每一行元素(i 行),首先把最后一列即 a[i][2]用中間變量 t 保存;然后就從第 1 列到第 0 列,每個(gè)元素向 右移動(dòng)一個(gè)位置(a[i][j]=a[i][j-1]);最后再給 a[i][0]賦值為 t(之前 a[i][2]的值)。 參考答案: # include # include # include # include void main(

14、) { int a[3][3]; int i,j,t; srand( time( NULL ) ); printf("原來數(shù)組 a 的值:\n"); for(i=0;i<3;i++) //用隨機(jī)函數(shù)生成 3 行 3 列的二維數(shù)組并按矩陣格式輸出 { for(j=0;j<3;j++) { a[i][j]=rand()%20; printf("%5d",a[i][j]); } printf("\n"); } for(i=0;i<3;i++) //外循環(huán)控制行下標(biāo) { t=a[i][2]; //每一行的最后列元素用 t 暫存 for(j=1;j>=0;j--) /

15、/從該行倒數(shù)第二個(gè)元素開始逐個(gè)往右搬動(dòng)一個(gè)位置 a[i][j+1]=a[i][j]; a[i][0]=t; //將暫存于 t 中的最后一個(gè)元素值存入第一個(gè)元素 } printf("矩陣變換后:\n"); for(i=0;i<3;i++) { for(j=0;j<3;j++) printf("%5d",a[i][j]); printf("\n"); } } 運(yùn)行結(jié)果: (7) 設(shè)計(jì)程序 sy6-7.c,有 N×N 矩陣,以主對(duì)角線為對(duì)稱線,對(duì)稱元素相加并將結(jié)果存放在左下三角元素中, 右上三角元素置為 0。例如,若 N=3,有 1 2 3 下列矩陣:(4 5 6)

16、 7 8 9 1 計(jì)算結(jié)果為:( 6 10  0 5 14  0 0 9  ) 算法分析: 按 行 序 遍 歷 二 維 數(shù) 組 左 下 半 三 角 元 素 , 使 其 和 右 上 半 三 角 元 素 相 加 后 存 入 左 下 半 三 角 (a[i][j]=a[i][j]+a[j][i]),再將右上半三角的元素改為 0(a[j][i]=0 )。 參考答案: # include # include # include # include # define N

17、 4 void main() { int a[N][N]; int i,j; srand( time( NULL ) ); 700 800 900 300 600 900 printf("原矩陣:\n"); for(i=0;i

18、< i ; j++) //遍歷左下半三角 (不含對(duì)角線) 元素 { a[i][j]=a[i][j]+a[j][i] ; //與右上半三角對(duì)稱元素相加后置于左下半三角 a[j][i]=0; //將右上角元素改為 0 } } printf("結(jié)果矩陣:\n"); for(i=0;i

19、  ?100 200 300 ? ? ÷ ?400 500 600 ÷  ,程序輸出:  ? ? ?  100 400 700 200 500 800  ? ÷ ÷  。 ? ÷ è ? ? ÷ è ? 算法分析: 方陣的轉(zhuǎn)置可以在原矩陣上將主對(duì)角線以下的元素與右上角的對(duì)稱元素交換即可。 參考答案: # include # include # include # include # define N 4 void main() { int

20、 a[N][N]; 7 8 9 3 6 9 10 14 1 int i,j,t; srand( time( NULL ) ); printf("原矩陣:\n"); for(i=0;i

21、(不含對(duì)角線) 元素 { t = a[i][j] ; a[i][j] = a[j][i] ; a[j][i] = t ; } } printf("轉(zhuǎn)置矩陣是:\n"); for(i=0;i

22、 è ?  其轉(zhuǎn)置矩陣為:  ?1 4 7 ? ?2 6 10 ? ? ÷ ? ÷ ?2 5 8 ÷,程序輸出: ?6 10 14 ÷ ? ÷ ? ÷ è ? è ?  。 算法分析: 矩陣 A 和 A 的轉(zhuǎn)置矩陣 A'以及相加后的結(jié)果矩陣 B 大小都一樣,而轉(zhuǎn)置矩陣 A'中 i,j 元素的值正好是 原矩陣 A 中 j,i 元素的值,所以有 b[i][j]=a[i][j]+a[j][i] ,最后輸出 B 矩陣即可 。 參考答案: # include # include # include

23、> # include # define N 3 void main() { int a[N][N],b[N][N]; int i,j; srand( time( NULL ) ); printf("矩陣 A :\n"); for(i=0;i

24、;j++) //按列序遍歷矩陣 A 并按矩陣格式輸出即是 A 的轉(zhuǎn)置矩陣 { for(i=0;i

25、f("%5d",b[i][j]); printf("\n"); } } 運(yùn)行結(jié)果: (10) 設(shè)計(jì)程序 sy6-10.c,求出二維數(shù)組周邊元素的平均值。例如:a 數(shù)組中的值為 0 1 2 7 9 1 9 7 4 5 a = 2 3 8 3 1 4 5 6 8 2 5 9 1) 4 1 則周邊元素的平均值應(yīng)為: 3.375。 算法分析: N 行 N 列矩陣周邊元素的下標(biāo)特點(diǎn):首行的行下標(biāo)為 0,末行的行下標(biāo)為 N-1;第一列的列下標(biāo)為 0, 最后一列的列下標(biāo)為 N-1。如果先累加了第一行和最后一行的所有元素,則在累加第一列和最后一列元素值 時(shí)應(yīng)跳過與第一

26、行和最后一行相重疊的元素。最后除以元素個(gè)數(shù)即可 參考答案: # include # include # include # include # define N 4 void main() { int a[N][N],i,j; double sum=0,ave; srand( time( NULL ) ); printf("矩陣 A :\n"); for(i=0;i

27、][j]=rand()%10; printf("%5d",a[i][j]); } printf("\n"); } for( j=0 ; j < N ; j++) // 累加首行和末行的元素值 sum=sum + a[0][j] + a[N-1][j]; for( i=1 ; i < N-1 ; i++) // 累加第一列和最后一列除去首行和末行的元素值 sum=sum + a[i][0] + a[i][N-1]; ave = sum / ( 4*N - 4 ) ; printf("該矩陣周邊元素的和是 %g . \n",sum); printf("該矩陣周邊元素的平均值是 %f . \n",ave); } 運(yùn)行結(jié)果:

展開閱讀全文
溫馨提示:
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ì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!

五月丁香婷婷狠狠色,亚洲日韩欧美精品久久久不卡,欧美日韩国产黄片三级,手机在线观看成人国产亚洲