看板 ESOE-90 關於我們 聯絡資訊
C 從現在開始會變得有點麻煩. 假設底下三個程式能完全看懂... 那關於 C 的東西, 算是入門完畢. 有興趣的請多加小心. 所謂的入門完畢, 是指... 如果你不走某個專業領域(以 C 來說, 是 computer science. ) 而學會的部份已經夠用一輩子... 那就叫做入門了. E1) # include <stdio.h> # include <string.h> int main() { char s[80 + 1], *p; puts("Input a string."); fgets(s, sizeof s, stdin); if ((p = strchr(s, '\n')) != NULL) *p = '\0'; printf("Length of the string: %d.\n", strlen(s)); return 0; } E2) # include <stdio.h> # include <string.h> int mystrlen(const char *); int mystrlen(const char *s) { const char *p = s; while (*p++); return p - s - 1; } int main() { char s[80 + 1], *p; puts("Input a string."); fgets(s, sizeof s, stdin); if ((p = strchr(s, '\n')) != NULL) *p = '\0'; printf("Length of the string: %d.\n", mystrlen(s)); return 0; } E3) 這個是用最簡單的泡泡排序法... # include <stdio.h> # define N(x) (sizeof (x) / sizeof *(x)) void dumparray(int *, int); void sortarray(int *, int); int *findmin(int *, int); int main() { int n[] = {4, 2, 1, 0, 5, -9, 17, 35, 24}; dumparray(n, N(n)); sortarray(n, N(n)); dumparray(n, N(n)); return 0; } void dumparray(int *n, int sz) { puts("Content of array --"); while (sz--) printf("%8d", *n++); putchar('\n'); } void sortarray(int *n, int sz) /* simplest and dummy */ { int t, *p; p = findmin(n, sz); /* 找最小值的位置 */ t = *p, *p = *n, *n = t; /* 把最小值移到陣列開頭 */ if (sz > 0) /* 移到下一個元素, 繼續排序 */ sortarray(n + 1, sz - 1); } int *findmin(int *n, int sz) { int *p; for (p = n; sz; n++, sz--) if (*n < *p) p = n; return p; } -- 新詩練習:新鮮。踩破初春裡的狗大便;不經意的滄桑,滿溢著嫩黃的喜悅。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.224.165.73