Introduction to the C Programming Language Array CSIM

  • Slides: 23
Download presentation
Introduction to the C Programming Language 陣列 (Array) CSIM, PU C Language 1

Introduction to the C Programming Language 陣列 (Array) CSIM, PU C Language 1

一維陣列(1 D Array) q 範例一: 輸入並輸出 4個數字. #include <stdio. h> #include <stdlib. h> void

一維陣列(1 D Array) q 範例一: 輸入並輸出 4個數字. #include <stdio. h> #include <stdlib. h> void main( ) { int x[4]; int i; for ( i = 0; i < 4; i++ ) { printf(“x[%d] = ”, i); 存取語法 scanf(“%d”, &x[i]); 陣列元素 } printf(“n. The output is as following: n”); for ( i = 0; i < 4; i++ ) printf(“x[%d] is %dn”, i, x[i]); } CSIM, PU array[0] array[1] array[2] array[3] 15 10 2 5 C Language 5

一維陣列(1 D Array) q 範例二: 將使用者所輸入的字串, 反轉輸出. q void main( ) { char y[30];

一維陣列(1 D Array) q 範例二: 將使用者所輸入的字串, 反轉輸出. q void main( ) { char y[30]; int i, s, count=0; printf(“Type a sentence : ”); while (( s = getchar( )) != ‘n’ ) y[count++] = s; printf(“n Reverse the sentence is as following : n”); for ( i = count-1; i >= 0; i-- ) putchar(y[i]); } CSIM, PU C Language 6

一維陣列(1 D Array) q 範例三: 輸入一個正整數, 將它轉換為二進位數. q void main( ) { int b[20],

一維陣列(1 D Array) q 範例三: 輸入一個正整數, 將它轉換為二進位數. q void main( ) { int b[20], n, k, i; clrscr( ); /* 清除螢幕 */ printf(“Keyin an integer : ”); scanf(“%d”, &k); for ( n = 0; k > 0; n++ ) { b[n] = k % 2; k = k / 2; } printf(“The binary code is ”); for ( i = n-1; i >= 0; i-- ) printf(“%d”, b[i]); printf(“n”); } CSIM, PU C Language 7

一維陣列(1 D Array) q 範例四: 輸入學生人數及成績, 並列印出全班平均. q void main( ) { int score[10],

一維陣列(1 D Array) q 範例四: 輸入學生人數及成績, 並列印出全班平均. q void main( ) { int score[10], i, sum=0, num; float ave; printf(“Please input number of student : “); scanf(“%d”, &num); for ( i = 0; i < num; i++ ) { printf(“Input score here : “); scanf(“%d”, &score[i]); sum += score[i]; } ave = (float) sum / (float) num; printf(“The average is %6. 2 f n”, ave); } CSIM, PU C Language 8

一維陣列(1 D Array) --- 初值設定 q 範例一: 將數字輸出. q void main( ) { int

一維陣列(1 D Array) --- 初值設定 q 範例一: 將數字輸出. q void main( ) { int x[]={15, 36, 9, 28}; int i; printf(“n. The output is as following: n”); for ( i = 0; i < 4; i++ ) printf(“x[%d] is %dn”, i, x[i]); } CSIM, PU C Language 9

字元陣列 – 範例一 /*列印出字元及字串之長度*/ #include <stdio. h> int main(void) { char a[]="My friend"; char

字元陣列 – 範例一 /*列印出字元及字串之長度*/ #include <stdio. h> int main(void) { char a[]="My friend"; char b='c'; char str[]="c"; printf("sizeof(a)=%dn", sizeof(a)); printf("sizeof(b)=%dn", sizeof(b)); printf("sizeof(str)=%dn", sizeof(str)); return 0; } CSIM, PU C Language 11

字元陣列 – 範例二 /* 輸入及印出字串, 使用 printf(), scanf() */ #include <stdio. h> int main(void)

字元陣列 – 範例二 /* 輸入及印出字串, 使用 printf(), scanf() */ #include <stdio. h> int main(void) { char name[15]; int i; for(i=0; i<2; i++) { printf("What's your name? "); scanf("%s", name); printf("Hi! %s, How are you? nn", name); } return 0; } CSIM, PU C Language 12

字元陣列 – 範例三 /* prog 9 -21, 輸入及印出字串 */ #include <stdio. h> int main(void)

字元陣列 – 範例三 /* prog 9 -21, 輸入及印出字串 */ #include <stdio. h> int main(void) { char name[15]; puts("What's your name? "); gets(name); puts("Hi!"); puts(name); puts("How are you? "); return 0; } CSIM, PU C Language 13

二維陣列(2 D Array) q 宣告格式 : 資料型態 陣列名稱[列數][行數]; q 例如: int num[2][2]; /* 宣告一個

二維陣列(2 D Array) q 宣告格式 : 資料型態 陣列名稱[列數][行數]; q 例如: int num[2][2]; /* 宣告一個 2 x 2 的陣列*/ col 1 row 2 col 2 num[0][ 0] num[0][ 1] num[1][ 0] num[1][ 1] m num[0][0] m+2 num[0][1] m+4 m+6 num[1][0] num[1][1] 記憶體 CSIM, PU C Language 14

二維陣列(2 D Array) q 範例一: 輸入一個3*4的陣列, 並將其印出來. q void main( ) { int x[3][4];

二維陣列(2 D Array) q 範例一: 輸入一個3*4的陣列, 並將其印出來. q void main( ) { int x[3][4]; int i, j; printf(“Please input 2 dimension array(3*4). n”); for ( i = 0; i < 3; i++ ) for ( j = 0; j < 4; j++ ) scanf(“%d”, &x[i][j]); printf(“The result 2 dimension array is as following : n”); for ( i = 0; i < 3; i++ ) { for ( j = 0; j < 4; j++ ) printf(“%3 d”, x[i][j]); printf(“n”); } } CSIM, PU C Language 15

二維陣列(2 D Array) q 範例二: 輸入兩個3*3的陣列, 將加算結果存入第三個陣列內. q void main( ) { int num

二維陣列(2 D Array) q 範例二: 輸入兩個3*3的陣列, 將加算結果存入第三個陣列內. q void main( ) { int num 1[3][3], num 2[3][3], num 3[3][3]; int i, j; printf(“Please input first 2 dimension array. n”); for ( i = 0; i < 3; i++ ) for ( j = 0; j < 3; j++ ) scanf(“%d”, &num 1[i][j]); printf(“Please input second 2 dimension array. n”); for ( i = 0; i < 3; i++ ) for ( j = 0; j < 3; j++ ) scanf(“%d”, &num 2[i][j]); for ( i = 0; i < 3; i++ ) for ( j = 0; j < 3; j++ ) num 3[i][j]= num 1[i][j] + num 2[i][j]; printf(“The result 2 dimension array is as following : n”); for ( i = 0; i < 3; i++ ) printf(“%3 d %3 dn”, num 3[i][0], num 3[i][1], num 3[i][2]); } CSIM, PU C Language 16

二維陣列(2 D Array) /* prog 9 -22, 字串陣列 */ #include <stdio. h> int main(void)

二維陣列(2 D Array) /* prog 9 -22, 字串陣列 */ #include <stdio. h> int main(void) { char name[3][10]={"David", "Jane Wang", "Tom Lee"}; int i; for(i=0; i<3; i++) /* 印出字串陣列內容 */ printf("name[%d]=%sn", i, name[i]); printf("n"); for(i=0; i<3; i++) /* 印出字串陣列元素的位址 */ { printf("address of name[%d]=%pn", i, &name[i]); printf("address of name[%d][0]=%pnn", i, &name[i][0]); } return 0; } CSIM, PU C Language 19

字串陣列說明 Name[0] 0253 FDB 8 D a v i Name[1] 0253 FDC 2 J

字串陣列說明 Name[0] 0253 FDB 8 D a v i Name[1] 0253 FDC 2 J a n e Name[1] 0253 FDCC T o m d L W a n e e g 1. name[I]的位址其實就是name[i][0]的位址 2. 用法類似一維陣列 CSIM, PU C Language 20

多維陣列(Multi-dimensional Array) q 宣告格式 : 資料型態 陣列名稱[平面數][列數][行數]; q 例如: int x[2][3][4]; CSIM, PU x[1][0][0]

多維陣列(Multi-dimensional Array) q 宣告格式 : 資料型態 陣列名稱[平面數][列數][行數]; q 例如: int x[2][3][4]; CSIM, PU x[1][0][0] x[1][0][1] x[1][0][2] x[1][0][3] x[0][0][0] x[1][1][0] x[0][0][1] x[1][1][1] x[0][0][2] x[1][1][2] x[0][0][3] x[1][1] [3] x[0][1][0] x[1][2][0] x[0][1][1] x[1][2][1] x[0][1][2] x[1][2][2] x[0][1] [3] x[1][2] [3] x[0][2][0] x[0][2][1] x[0][2][2] x[0][2] [3] C Language 21

作業一 q 某家公司有五位業務人員, 於 2001年一至六月個人月績如下表: 請寫一程式計算每個月這家公司的總營業額各為多少? 並計算 每位業務人員一至六月的個人總營業額及這家公司六個月的全 部營業額為多少? 2001 年 一至六月 (單位 :

作業一 q 某家公司有五位業務人員, 於 2001年一至六月個人月績如下表: 請寫一程式計算每個月這家公司的總營業額各為多少? 並計算 每位業務人員一至六月的個人總營業額及這家公司六個月的全 部營業額為多少? 2001 年 一至六月 (單位 : 百萬元 ) Sales A Sales B Sales C Sales D Sales E Month 1 120 93 135 99 87 Month 2 102 115 180 154 118 Month 3 114 125 91 127 70 Month 4 108 150 153 66 123 Month 5 79 103 105 115 98 Month 6 97 110 112 101 135 CSIM, PU C Language 23