2d-array 二維陣列 1 *****0 ***** 1 ***** 2 ***** 3 ***** 4 ***** 5 ***** 6 ***** 7 ***** 8 *****...

21
2D-Array 二二二二 1 ***** 0 ***** 1 ***** 2 ***** 3 ***** 4 ***** 5 ***** 6 ***** 7 ***** 8 ***** 0 1* 2 ** 3 *** 4 **** 5 ***** 6 ****** 7 ******* 8 ******** 1 * 2 ** 3 *** 4 **** 5 ***** 6 ****** 7 ******* 8 ******** 9 ********* 0 ********* 1 ******** 2 ******* 3 ****** 4 ***** 5 **** 6 *** 7 ** 8* 5 * 4 *** 3 ***** 2 ******* 1 ********* 0 *********** 1 ********* 2 ******* 3 ***** 4 *** 5 * 0 * 1 *** 2 ***** 3 ******* 4 ********* 5 *********** 6 ************* 7 ************** * 8 *************** ** -5 * -4 ** -3 *** -2 **** -1 ***** 0 ****** 1 ***** 2 **** 3 *** 4 ** 5 *

Upload: gregory-morrison

Post on 19-Jan-2018

235 views

Category:

Documents


0 download

DESCRIPTION

2D-Array 二維陣列 3 int st01Subj01,st01Subj02,…st01Subj10; int st02Subj01,st02Subj02,…st02Subj10; … studSubj[0][0] = 100; 宣告大量 變數 宣告 2D-Array 二維陣列 int studSubj[40][10]; 沒有 2D-Array 二維陣列 scanf ("%i", &studSubj[0][0]); printf (" 學生 : %i 科目 :%i 成績 :%i ", 1,1,studSubj[0][0]); 第 1 個學生 第 1 科成績 =100

TRANSCRIPT

Page 1: 2D-Array 二維陣列 1 *****0 ***** 1 ***** 2 ***** 3 ***** 4 ***** 5 ***** 6 ***** 7 ***** 8 ***** 0 1 * 2 ** 3 *** 4 **** 5 ***** 6 ****** 7 ******* 8 ********

2D-Array 二維陣列 1

***** 0 *****1 *****2 *****3 *****4 *****5 *****6 *****7 *****8 *****

0 1 *2 **3 ***4 ****5 *****6 ******7 *******8 ********

1          *2         **3        ***4       ****5      *****6     ******7    *******8   ********9  *********

0 *********1 ********2 *******3 ******4 *****5 ****6 ***7 **8 *

5       *4      ***3     *****2    *******1   *********0  ***********1   *********2    *******3     *****4      ***5       *

0         *1        ***2       *****3      *******4     *********5    ***********6   *************7  ***************8 *****************

-5      *-4     **-3    ***-2   ****-1  ***** 0 ****** 1  ***** 2   **** 3    *** 4     ** 5      *

Page 2: 2D-Array 二維陣列 1 *****0 ***** 1 ***** 2 ***** 3 ***** 4 ***** 5 ***** 6 ***** 7 ***** 8 ***** 0 1 * 2 ** 3 *** 4 **** 5 ***** 6 ****** 7 ******* 8 ********

2D-Array 二維陣列 2

for(i=0;i<__;i++){

for(j=__;i<__;j++)printf("* ");

printf("\n");}

Page 3: 2D-Array 二維陣列 1 *****0 ***** 1 ***** 2 ***** 3 ***** 4 ***** 5 ***** 6 ***** 7 ***** 8 ***** 0 1 * 2 ** 3 *** 4 **** 5 ***** 6 ****** 7 ******* 8 ********

2D-Array 二維陣列 3

int st01Subj01,st01Subj02,…st01Subj10;int st02Subj01,st02Subj02,…st02Subj10;…

studSubj[0][0] = 100;

宣告大量變數宣告 2D-Array 二維陣列int studSubj[40][10];

沒有 2D-Array 二維陣列

scanf ("%i", &studSubj[0][0]);

printf (" 學生 :%i 科目 :%i 成績 :%i\n",1, 1, studSubj[0][0]);

第 1 個學生第 1 科成績

=100

Page 4: 2D-Array 二維陣列 1 *****0 ***** 1 ***** 2 ***** 3 ***** 4 ***** 5 ***** 6 ***** 7 ***** 8 ***** 0 1 * 2 ** 3 *** 4 **** 5 ***** 6 ****** 7 ******* 8 ********

2D-Array 二維陣列 4

int a[_][_]; // 5 列 (rows) 9 欄 (columns)

a[i][j] 0 1 2 3 4 5 6 7 8

row = 0 0 0 0 0 0 0 0 0 0

row = 1 1 1 1 1 1 1 1 1 1

row = 2 2 2 2 2 2 2 2 2 2

row = 3 3 3 3 3 3 3 3 3 3

row = 4 4 4 4 4 4 4 4 4 4

a[ ][ ]

a[ ][ ]

a[ ][ ]a[ ][ ]

名稱

Page 5: 2D-Array 二維陣列 1 *****0 ***** 1 ***** 2 ***** 3 ***** 4 ***** 5 ***** 6 ***** 7 ***** 8 ***** 0 1 * 2 ** 3 *** 4 **** 5 ***** 6 ****** 7 ******* 8 ********

2D-Array 二維陣列 5

printf("%i", a[0][0]);printf("%i", a[0][1]);printf("%i", a[0][2]);...printf("%i", a[0][8]);

for(i=0;i<__;i++){

printf("\n");}

int a[5][9]; // 5 列 (rows) 9 欄 (columns)a[i][j] 0 1 2 3 4 5 6 7 8

row = 0 0 0 0 0 0 0 0 0 0

row = 1 1 1 1 1 1 1 1 1 1

row = 2 2 2 2 2 2 2 2 2 2

row = 3 3 3 3 3 3 3 3 3 3

row = 4 4 4 4 4 4 4 4 4 4

for(j=0;j<__;j++)printf("%i",a[ ][ ]);

Page 6: 2D-Array 二維陣列 1 *****0 ***** 1 ***** 2 ***** 3 ***** 4 ***** 5 ***** 6 ***** 7 ***** 8 ***** 0 1 * 2 ** 3 *** 4 **** 5 ***** 6 ****** 7 ******* 8 ********

2D-Array 二維陣列 6

int A[3][4];int B[3][4]={{5,6,7,8},{2,4,6,8},{1,3,5,7}};int C[3][4]={5,6,7,8,2,4,6,8,1,3,5,7};int D[3][4]={{5,6,7},{8,2,4},{6,8,1},{3,5,7}}; // 錯誤A[0][0]=rand()%6+1;...A[2][3]=rand()%100+1;

ex1: int magic3[][]...8 1 63 5 74 9 2

ex2: int magic4[][]... 3 10 15 6 13 8 1 12 2 11 14 7 16 5 4 9

宣告 magic3列印幻方檢查每行每欄總和

Page 7: 2D-Array 二維陣列 1 *****0 ***** 1 ***** 2 ***** 3 ***** 4 ***** 5 ***** 6 ***** 7 ***** 8 ***** 0 1 * 2 ** 3 *** 4 **** 5 ***** 6 ****** 7 ******* 8 ********

2D-Array 二維陣列 7

輸入 :for(i=0;i<3;i++){

for(j=0;j<4;j++){scanf ("%d", &a[ ][ ]);

}}

輸出 :for(i=0;i<3;i++){

for(j=0;j<4;j++){printf ("%d\t", a[ ][ ]);

}printf("\n");

}

Page 8: 2D-Array 二維陣列 1 *****0 ***** 1 ***** 2 ***** 3 ***** 4 ***** 5 ***** 6 ***** 7 ***** 8 ***** 0 1 * 2 ** 3 *** 4 **** 5 ***** 6 ****** 7 ******* 8 ********

2D-Array 二維陣列 8

student 1: 50 60 70student 2: 55 66 77student 3: 70 60 50…student 40: 77 63 20

輸入分數 (40 學生,每人 3 科 )int score …

輸出平均分數student 1: 50 60 70 60.0student 2: 55 66 77 66.0…student 40: 77 63 21 30.3

61 72 81

rowTL[]

colTL[]

score[0][0]

Page 9: 2D-Array 二維陣列 1 *****0 ***** 1 ***** 2 ***** 3 ***** 4 ***** 5 ***** 6 ***** 7 ***** 8 ***** 0 1 * 2 ** 3 *** 4 **** 5 ***** 6 ****** 7 ******* 8 ********

2D-Array 二維陣列 9

初始化 init:for(i=0;i<__;i++){

for(j=0;j<__;j++){num[i][j]=0;

}}

int rowTL[__], colTL[__];for(i=0;i<___;i++) rowTL[i]=0;for(j=0;j<___;j++) colTL[j]=0;

num[i][j] j=0 j=1 j=2 j=3 rowTL[ ]i=0 num[0][0] num[0][1] num[0][2] num[0][3] rowTL[0]i=1 num[1][0] num[1][1] num[1][2] num[1][3] rowTL[1]i=2 num[2][0] num[2][1] num[2][2] num[2][3] rowTL[2]colTL[ ] colTL[0] colTL[1] colTL[2] colTL[3] TL

行列小計 sub-totals (row,column): i

j

Page 10: 2D-Array 二維陣列 1 *****0 ***** 1 ***** 2 ***** 3 ***** 4 ***** 5 ***** 6 ***** 7 ***** 8 ***** 0 1 * 2 ** 3 *** 4 **** 5 ***** 6 ****** 7 ******* 8 ********

2D-Array 二維陣列 10

i=0 rowTL[0] = num[0][0]+num[0][1]+num[0][2]+num[0][3];i=1 rowTL[1] = num[1][0]+num[1][1]+num[1][2]+num[1][3];i=2 rowTL[2] = num[2][0]+num[2][1]+num[2][2]+num[2][3];

j=0 colTL[0] = num[0][0]+num[1][0]+num[2][0];j=1 colTL[1] = num[0][1]+num[1][1]+num[2][1];j=2 colTL[2] = num[0][2]+num[1][2]+num[2][2];j=3 colTL[3] = num[0][3]+num[1][3]+num[2][3];

for(i=0;i<3;i++){for(j=0;j<4;j++)

rowTL_________________}

for(i=0;i<3;i++){for(j=0;j<4;j++)

colTL__________________}

[i][j][i]

[i][j][j]

Page 11: 2D-Array 二維陣列 1 *****0 ***** 1 ***** 2 ***** 3 ***** 4 ***** 5 ***** 6 ***** 7 ***** 8 ***** 0 1 * 2 ** 3 *** 4 **** 5 ***** 6 ****** 7 ******* 8 ********

2D-Array 二維陣列 11

總和 sum:sum=0;for(i=0;i<3;i++){

for(j=0;j<4;j++)sum________________________

}

總計 count:count=0;for(i=0;i<30;i++) // 層數 0-29

for(j=0;j<6;j++) // 單位 0-5if(B[i][j]___) count++; // 少於 4 人

for(i=0;i<30;i++) // 層數 0-29for(j=0;j<6;j++) // 單位 0-5

FloorAvg____________________

for(i=0;i<30;i++)FloorAvg[i]/=6;

Page 12: 2D-Array 二維陣列 1 *****0 ***** 1 ***** 2 ***** 3 ***** 4 ***** 5 ***** 6 ***** 7 ***** 8 ***** 0 1 * 2 ** 3 *** 4 **** 5 ***** 6 ****** 7 ******* 8 ********

2D-Array 二維陣列 12

例 :freq[i][j]| 1 2 3 4 5 6 rowTL[] rowMax[]------------------------------ rowMin[] 1| 4 6 3 8 5 4 30 3 8 2| 6 3 7 8 5 4 3| 3 8 9 2 5 4------------------------------ colTL[]| colMin[]| colMax[]|

宣告 :int freq[3][6],

colTL, colMin, colMax[6],rowTL, rowMin, rowMax[3];

Page 13: 2D-Array 二維陣列 1 *****0 ***** 1 ***** 2 ***** 3 ***** 4 ***** 5 ***** 6 ***** 7 ***** 8 ***** 0 1 * 2 ** 3 *** 4 **** 5 ***** 6 ****** 7 ******* 8 ********

2D-Array 二維陣列 13

輸入 :scanf("%d",&freq[0][0]);scanf("%d",&freq[0][1]);scanf("%d",&freq[0][2]);...scanf("%d",&freq[2][5]);

輸入 :for(i=0;i<3;i++)

for(j=0;j<6;j++)scanf("%d", &freq________);

輸出 :for(i=0;i<3;i++){

for(j=0;j<6;j++)printf("%d\t", freq_______);

printf("\n");}

Page 14: 2D-Array 二維陣列 1 *****0 ***** 1 ***** 2 ***** 3 ***** 4 ***** 5 ***** 6 ***** 7 ***** 8 ***** 0 1 * 2 ** 3 *** 4 **** 5 ***** 6 ****** 7 ******* 8 ********

2D-Array 二維陣列 14

小計 ( 列 ):for(i=0;i<3;i++)

for(j=0;j<6;j++)rowTL ____________________分析 :

i=0,j=0 rowTL[0] += freq[0][0]; ...i=2,j=5 rowTL[2] += freq[2][5];

小計 ( 欄 ):for(i=0;i<3;i++)

for(j=0;j<6;j++)colTL ____________________

分析 :i=0,j=0 colTL[0] += freq[0][0]; ...i=2,j=5 colTL[5] += freq[2][5];

Page 15: 2D-Array 二維陣列 1 *****0 ***** 1 ***** 2 ***** 3 ***** 4 ***** 5 ***** 6 ***** 7 ***** 8 ***** 0 1 * 2 ** 3 *** 4 **** 5 ***** 6 ****** 7 ******* 8 ********

2D-Array 二維陣列 15

最小值 ( 第 1 欄 ):min=freq[0,1];for(j=1;j<3;j++)

if(

最小值 ( 第 0-2 欄 ):for(j=0;j<3;j++)

colMin

for(i=0;i<3;i++){for(j=0;j<6;j++)

if( )colMin________________

Page 16: 2D-Array 二維陣列 1 *****0 ***** 1 ***** 2 ***** 3 ***** 4 ***** 5 ***** 6 ***** 7 ***** 8 ***** 0 1 * 2 ** 3 *** 4 **** 5 ***** 6 ****** 7 ******* 8 ********

2D-Array 二維陣列 16

最小值 ( 第 0-5 列 ):for(i=0;i<6;i++)

rowMin[i]=freq[i][0];

for(i=0;i<3;i++){for(j=0;j<6;j++)

if( )rowMin_______________總和 :

sum=0;for(i=0;i<3;i++){

for(j=0;j<6;j++)sum+=____________________

Page 17: 2D-Array 二維陣列 1 *****0 ***** 1 ***** 2 ***** 3 ***** 4 ***** 5 ***** 6 ***** 7 ***** 8 ***** 0 1 * 2 ** 3 *** 4 **** 5 ***** 6 ****** 7 ******* 8 ********

2D-Array 二維陣列 17

宣告 :char name[40][10];int score[40][4], studTL[40], gradeTL[90];float studAvg[40];char grade[40];輸入 :for(i=0;i<40;i++){ // 40 students

printf("%s: ",name[i]);for(j=0;j<4;j++) // 4 subjects

scanf("%d", &score );}

Page 18: 2D-Array 二維陣列 1 *****0 ***** 1 ***** 2 ***** 3 ***** 4 ***** 5 ***** 6 ***** 7 ***** 8 ***** 0 1 * 2 ** 3 *** 4 **** 5 ***** 6 ****** 7 ******* 8 ********

2D-Array 二維陣列 18

總分、平均分 :total and averagefor(i=0;i<40;i++) studTL[i]=0;

for(i=0;i<40;i++)for(j=0;j<4;j++)

studTL[__] += score[__][__];

for(i=0;i<40;i++)studAvg[__]=studTL[__]/4;

等級 : gradefor(i=0;i<40;i++)

if(studAvg[i]>=86) grade[__]='A'; elseif(studAvg[i]>=70) grade[__]='B'; elseif(studAvg[i]>=50) grade[__]='C'; elseif(studAvg[i]>=30) grade[__]='D'; else

else grade[__]='E';

Page 19: 2D-Array 二維陣列 1 *****0 ***** 1 ***** 2 ***** 3 ***** 4 ***** 5 ***** 6 ***** 7 ***** 8 ***** 0 1 * 2 ** 3 *** 4 **** 5 ***** 6 ****** 7 ******* 8 ********

2D-Array 二維陣列 19

等級統計 : grade Totalfor(g='A';g<='E';g++) gradeTL[g]=0;for(i=0;i<40;i++){

g=grade[__];gradeTL[__]++;

}

Page 20: 2D-Array 二維陣列 1 *****0 ***** 1 ***** 2 ***** 3 ***** 4 ***** 5 ***** 6 ***** 7 ***** 8 ***** 0 1 * 2 ** 3 *** 4 **** 5 ***** 6 ****** 7 ******* 8 ********

2D-Array 二維陣列 20

i=1;A[1][1] = A[0][0] + A[0][1];

A[i][j] 0 1 2 3 4 5 6 7 8 9

0 1 1

1 1 2 1

2 1 3 3 1

3 1 4 6 4 1

i=2;A[2][1] = A[1][0] + A[1][1];A[2][2] = A[1][1] + A[1][2];

nx 1

i=3;A[3][1] = A[2][0] + A[2][1];A[3][2] = A[2][1] + A[2][2];A[3][3] = A[2][2] + A[2][3];

Pascal triangle

A[i][j] A[i1][j1] A[i1][j]

Page 21: 2D-Array 二維陣列 1 *****0 ***** 1 ***** 2 ***** 3 ***** 4 ***** 5 ***** 6 ***** 7 ***** 8 ***** 0 1 * 2 ** 3 *** 4 **** 5 ***** 6 ****** 7 ******* 8 ********

2D-Array 二維陣列 21

A[i][j] 0 1 2 3 4 5 6 7 8 9

0 1 1

1 1 2 1

2 1 3 3 1

3 1 4 6 4 1

4 1 5 10 10 5 1

5 1 6 15 20 15 6 1

for (j=1; j<= ; j++)A[i][j] =___________________

for(i=0;…)for(j=0;…)

A[i][j]=1;

for (i=1; i<10; i++)

i

j

A[i][j]

A[i1][j1] A[i1][j]

i1

j1