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