Advertisement
lIlIlIlIIlI

ProblemSolving_Interval.c

Sep 15th, 2019
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.76 KB | None | 0 0
  1. /* APCS筆記 */
  2. /* Agenda Array-Array by Pointer */
  3. /* 作業 Interval.c */
  4.  
  5. #include <stdio.h>
  6. #include <stdlib.h>
  7.  
  8. int InPut(int* len, int n1){
  9.     int i = 0;
  10.     while(i < n1){
  11.         scanf("%d", &len[i]);
  12.         i++;
  13.     }
  14. }
  15.  
  16. int PrintOut(int* len, int j, int n2){
  17.     int k = j + 1;
  18.     while(k < n2){
  19.         printf("(%d,%d)", len[j], len[k]);
  20.         k++;
  21.     }  
  22. }
  23.  
  24. int main(){
  25.     int num;
  26.     int* s;
  27.     scanf("%d", &num);
  28.     s = malloc(num * sizeof(int) );
  29.    
  30.     InPut(s, num);
  31.    
  32.     int j = 0;
  33.     while(j < num){
  34.         PrintOut(s, j, num);
  35.         j++;
  36.     }
  37.    
  38.     return 0;
  39. }
  40.  
  41. /*
  42. Note 1. 指標可以被理解成是一個「有彈性的陣列」,所以,陣列也可以被理解成是指標的一種。
  43. Note 2. 據說,指標的「寫法」一般會比陣列的「寫法」效能更好。
  44. Note 3. 陣列的錯誤用法 —> 指標的正確用法
  45. 陣列(X)
  46.  
  47.     int num;
  48.     scanf( "%d", &num );
  49.     int s[num];
  50.    
  51. 指標(O)
  52.  
  53.     int num;
  54.     int* s;
  55.     scanf( "%d", &num );
  56.     s = malloc( num * sizeof(int) );
  57.    
  58. 從上面例子,在宣告 num 後若 num 非被定義或賦值成「常數」或「一個固定的Value」,那麼同時宣告陣列 s[num] 的寫法便十分危險。這時候若把指標看成是一個「有彈性的陣列」,運用指標去改寫上面錯誤的例子,便可以解決這個問題。
  59. Note 4. 上面的主程式 int main(){} 裡的程式碼可以改得更為精簡,將更多類似迴圈、「處理事情」的東西,用「外包」的方式處理,將其定義為函數,或是「物件」(這方面我還不太清楚),精簡程式碼,使可讀性、效能提升。
  60. Note 5. 命名函數為「e04」或是命名其他變數為「無意義之字樣」是一個極其無聊、不好笑、幼稚、自找麻煩的習慣。應該立刻改掉此習慣。
  61. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement