Algorithms and Data Structures in C
4 algorithm List - /* */ #include <stdio.h> List - int main(void) { int a, b, c; int max; /* */ Ÿ 3Ÿ 2Ÿ 3 printf(""); printf(""); printf(""); scanf("%d", &a); scanf("%d", &b); scanf("%d", &c); max = a; if (b > max) max = b; if (c > max) max = c; printf(" %d\n", max); return (0); a, b, c max () max a (2) b max b (3) c max c flowchart Fig.- Yes No if
5 a max b max No Yes b max b c a c max Yes No c max Fig.- b > max c > max Yes p.22 a max a max a, b, c, 3, 2 a, b, c, 2, 3 3, 2, 5, 5, 5 5, 3, 5 a, b, c, 3, 2 6, 0, 7-0, 00, 0 b c a 4 4 4 4 4 4 4 4 4
6 Fig.-2 a b a b b c a c b c a c a c c a b a b c a b c a c c a b a b c a b c a c b a c b a c a c b c b a c b a c b c c b a b c a b c a Fig.-2 3 List -2 3 3 function max3 int a, b, c int main max3 3
7 /* */ #include <stdio.h> /*--- a, b, c ---*/ int max3(int a, int b, int c) { int max = a; /* */ if (b > max) max = b; if (c > max) max = c; return (max); List -2 max3(3,2,) = 3 max3(3,2,2) = 3 max3(3,,2) = 3 max3(3,2,3) = 3 max3(2,,3) = 3 max3(3,3,2) = 3 max3(3,3,3) = 3 max3(2,2,3) = 3 max3(2,3,) = 3 max3(2,3,2) = 3 max3(,3,2) = 3 max3(2,3,3) = 3 max3(,2,3) = 3 int main(void) { printf("max3(%d,%d,%d) = %d\n", 3, 2,, max3(3, 2, )); /* a b c */ printf("max3(%d,%d,%d) = %d\n", 3, 2, 2, max3(3, 2, 2)); /* a b c */ printf("max3(%d,%d,%d) = %d\n", 3,, 2, max3(3,, 2)); /* a c b */ printf("max3(%d,%d,%d) = %d\n", 3, 2, 3, max3(3, 2, 3)); /* a c b */ printf("max3(%d,%d,%d) = %d\n", 2,, 3, max3(2,, 3)); /* c a b */ printf("max3(%d,%d,%d) = %d\n", 3, 3, 2, max3(3, 3, 2)); /* a b c */ printf("max3(%d,%d,%d) = %d\n", 3, 3, 3, max3(3, 3, 3)); /* a b c */ printf("max3(%d,%d,%d) = %d\n", 2, 2, 3, max3(2, 2, 3)); /* c a b */ printf("max3(%d,%d,%d) = %d\n", 2, 3,, max3(2, 3, )); /* b a c */ printf("max3(%d,%d,%d) = %d\n", 2, 3, 2, max3(2, 3, 2)); /* b a c */ printf("max3(%d,%d,%d) = %d\n",, 3, 2, max3(, 3, 2)); /* b c a */ printf("max3(%d,%d,%d) = %d\n", 2, 3, 3, max3(2, 3, 3)); /* b c a */ printf("max3(%d,%d,%d) = %d\n",, 2, 3, max3(, 2, 3)); /* c b a */ return (0); JIS X000 int min3(int a, int b, int c); int med3(int a, int b, int c);
8 n n 2 + 2 n 3 + 2 + 3 + 2 + + n sum Fig.-3 0 sum i i n No Yes sum + i sum i + i Fig.-3 List -3 while while ( ) 0 0 do p.24
/* */, 2,, n while #include <stdio.h> int main(void) { int i, n; int sum; /* */ puts(" n "); printf("n"); scanf("%d", &n); sum = 0; i = ; List -3 n n0ÿ 0 55 9 while (i <= n) { /* i n */ sum += i; /* sum i */ i++; /* i */ printf(" %d %d\n", n, sum); return (0); i n n i sum Fig.-4 i n sum += ++ i n while i n n + sum i 0 2 3 3 6 4 0 5 5 6 Fig.-4
20 while for List -4 /* */, 2,, n for #include <stdio.h> int main(void) { int i, n; int sum; /* */ puts(" n "); printf("n"); scanf("%d", &n); List -4 n n0ÿ 0 55 sum = 0; for (i = ; i <= n; i++) { /* i =, 2,, n */ sum += i; /* sum i */ printf(" %d %d\n", n, sum); return (0); Fig.-5 loop limit i :,, n i n Column - while for while for for ( ; 2 ; 3 ) ; while ( 2 ) { 3 ; for 2 3 2
2 0 sum i,, n sum + i sum Fig.-5 i n i n for n + Fig.-6 i, 2,, n sum + i sum Fig.-6 List -4 n 7 7 28 + 2 + 3 + 4 + 5 + 6 + 7 = 28 a, b int sumof(int a, int b); a b a 3 b 5 2 a 6 b 4 5
22 Column -2 flowchart JIS X02 program flowchart data process predefined process decision
23 switch loop limit line terminator
24 n -5-5 0 n List -5 /* */, 2,, n n #include <stdio.h> int main(void) { int i, n; int sum; /* */ List -5 n n-5ÿ n8ÿ 8 36 puts(" n "); do { printf("n"); scanf("%d", &n); while (n <= 0); sum = 0; for (i = ; i <= n; i++) { sum += i; /* sum i */ printf(" %d %d\n", n, sum); return (0); n 0 n do Fig.-7 n 0 do n (a) (b) (b) (a)
25 (a) n Yes n 0 No (b) n n 0 Fig.-7 35 3 34 4 a, b b - a b a a5ÿ b4ÿ a b7ÿ b - a 2 Column -3 List -2 max3 argument parameter
26 4 * List -6 /* */ #include <stdio.h> int main(void) { int i, j, n; printf(" "); scanf("%d", &n); List -6 5Ÿ * ** *** **** ***** for (i = ; i <= n; i++) { for (j = ; j <= i; j++) putchar('*'); putchar('\n'); return (0); Fig.-8 n 5 for i n for j i i j * i 2 j 2 ** i 3 j 3 *** i 4 j 4 **** i 5 j 5 ***** n n n *
27 i,, n j,, i * Fig.-8 void trilb(int n); void trilu(int n); void triru(int n); void trirb(int n); n void spira(int n); n (n - ) * 2 + * * *** ***** ******* n void npira(int n); n n % 0 222 33333 4444444