next up previous contents
Next: 指標 Up: 陣列 Previous: 傳送一維陣列至函式   Contents   DYWANG_HOME

實機練習題

  1. 共同要求:
    1. 在家目錄下建立 zzz 目錄。
    2. 切換工作目錄到 zzz,所有練習皆存在此目錄。
    3. 下載檔案 array.txt
    4. 因為下載的 array.txt 不定時更換,所以題目測試結果不會與下列測試結果一樣。
    5. 題目沒要求的,不要多做,不要多加任何空白或空白行。
  2. 使用 array.txt 中的陣列初始值,撰寫 C 語言程式。
    1. 程式 arr1.c 宣告 int arr1[],使用 sizeof 計算陣列 arr1 的元素個數 A,scanf 從鍵盤輸入一個數字 num,若 num 小於 2 則設定為 2,若大於 10 則設定為 10。
      num 不整除 arr1 的 index (從 0 到 A-1) 的元素總和num 整除 index 的元素總和,假設結果為 B,輸出格式「A=X<TAB>B=Y」如下範例,編譯成可執行檔 arr1。
      [dywang@dyw219 zzz]$ ./arr1
      Enter an integer: -2
      A=49	B=1328
      [dywang@dyw219 zzz]$ ./arr1
      Enter an integer: 4
      A=49	B=14026
      [dywang@dyw219 zzz]$ ./arr1
      Enter an integer: 13
      A=49	B=23854
      
    2. 程式 arr2.c 宣告 int arr2[][4],假設 arr2[] 陣列代表 A, B, C, D 4 種產品各據點的銷售量,由鍵盤輸入一種產品 (假設是 char 變數 x),輸入非 A, B, C, D 的字元則印出「Only A B C D」並退出程式,判斷程式如下:
      	if(x<65 || x>68 ) {
      		printf......;
      		return 1;
      	}
      
      計算其產品總銷售量,編譯成可執行檔 arr2。 提示:字元 A, B, C, D 直接減 65,就可以得到陣列 index 0, 1, 2, 3,不要用 if...else 或 switch 做 A,B,C,D 與 0,1,2,3 的轉換。
      		sum+=arr2[i][x-65];
      
      輸出範例如下:
      [dywang@dyw219 zzz]$ ./arr2
      Enter a char: A
      A : 3267
      [dywang@dyw219 zzz]$ ./arr2
      Enter a char: E
      Only A B C D
      
    3. 程式 arr3.c 從鍵盤分兩次輸入兩個長度小於 10 的字串 str1 與 str2,若字串長度大於 10,則印出字串及其長度,並退出程式。否則使用 strcmp 函式判斷兩字串的大小,再用 strcat 函式組合 str1 及 str2,大的字串在前,小的字串在後,印出給合後的字串,若兩字串相等則只印一字串,編譯成可執行檔 arr3。輸出範例如下:
      [dywang@dyw219 zzz]$ ./arr3
      String 1: 12345
      String 2: abcde
      strcat=abcde12345
      [dywang@dyw219 zzz]$ ./arr3
      String 1: abcde
      String 2: 12345
      strcat=abcde12345
      [dywang@dyw219 zzz]$ ./arr3
      String 1: 12345qwertasdfg
      strlen(12345qwertasdfg) = 15 > 10
      [dywang@dyw219 zzz]$ ./arr3
      String 1: 12345
      String 2: 12345
      strcat=12345
      [dywang@dyw219 zzz]$ ./arr3
      String 1: 12345
      String 2: qweasdzxcvbn
      strlen(qweasdzxcvbn) = 12 > 10
      
    4. 程式 arr4.c 從鍵盤輸入一個長度小於 21 的字串 str1,若字串長度大於 21,則印出字串及其長度,並退出程式。否則將字串小寫改成大寫,大寫改成小寫,其他不變動。例如:輸入「"Just a TEST!"」,輸出「"jUST A test!"」,編譯成可執行檔 arr4。。輸出範例如下: 提示:大小寫轉換函式 toupper(char), tolower(char)。
      [dywang@dyw219 zzz]$ ./arr4
      String 1: "Just a Test!"
      str1="Just a Test!", str2="jUST A tEST!"
      
    5. 承上題 arr4.c,程式 arr5.c 將字串大小寫轉換寫成函式 void transform(char *str1, char *str2),傳入原始字元陣列 str1 位址,及轉換後的陣列 str2 位址,編譯成可執行檔 arr5,輸出範例與 arr4 相同。


De-Yu Wang 2021-01-11