if ( <条件式> ) <手続き1> else <手続き2> |
/* if-then-else-sample.c */ #include <stdio.h> int main(int argc, char **argv) { char a[255]; printf("Is it OK? (y/n) "); scanf("%s", a); if ( *a == 'y' || *a == 'Y' ) puts("Thank you."); else { puts("Oh, really?"); puts("I see..."); } } |
$ ./if-then-else-sample Is it OK? (y/n) y Thank you. |
$ ./if-then-else-sample Is it OK? (y/n) n Oh, really? I see... |
switch ( <式> ) { case <定数1>: < 式1-1>; < 式1-2>; ...; case <定数2>: < 式2-1>; < 式2-2>; ...; ... case <定数n>: < 式n-1>; < 式n-2>; ...; default: < 式0-1>; < 式0-2>; ...; } |
switch ( <式> ) { case <定数1>: < 式1-1>; < 式1-2>; ...; break; case <定数2>: < 式2-1>; < 式2-2>; ...; break; ... case <定数n>: < 式n-1>; < 式n-2>; ...; break; default: < 式0-1>; < 式0-2>; ...; } |
/* week.c */ #include <stdio.h> int main(int argc, char **argv) { int year, month, day, week; printf("year: "); scanf("%d", &year); printf("month: "); scanf("%d", &month); printf("day: "); scanf("%d", &day); if (month == 1 || month == 2) { year--; month += 12; } week = (year + year/4 - year/100 + year/400 + (13*month + 8)/5 + day) % 7; switch ( week ) { case 0: puts("Sunday"); break; case 1: puts("Monday"); break; case 2: puts("Tuesday"); break; case 3: puts("Wednesday"); break; case 4: puts("Thursday"); break; case 5: puts("Friday"); break; case 6: puts("Saturday"); break; default: puts("not a day of week"); } } |
$ ./week year: 2002 month: 11 day: 5 Tuesday |
for ( <初期条件>; <繰り返し条件>; <更新式> ) <手続き> |
/* sum.c */ #include <stdio.h> int main(int argc, char **argv) { int sum = 0, n, i; printf("n: "); scanf("%d", &n); for( i = 1; i <= n; i++ ) { sum += i; } printf("Summation from 1 to %d is %d\n", n, sum); } |
$ ./sum n: 10 Summation from 1 to 10 is 55 |
while ( <条件式> ) <手続き> |
/* sum-by-while.c */ #include <stdio.h> int main(int argc, char **argv) { int sum = 0, n, i = 1; printf("n: "); scanf("%d", &n); while ( i <= n ) { sum += i; i++; } printf("Summation from 1 to %d is %d\n", n, sum); } |
do <手続き> while ( <条件式> ) |
/* spoilt-child.c */ #include <stdio.h> int main(int argc, char **argv) { char a[256]; do { printf("Will you give me a candy? [y/n] "); scanf("%s", a); } while ( *a != 'y' && *a != 'Y' ); puts("Thank you!!"); } |
$ ./spoilt-child Will you give me a candy? [y/n] no Will you give me a candy? [y/n] no! Will you give me a candy? [y/n] No! Will you give me a candy? [y/n] yes... Thank you!! |
sum(n) = |
|
= | { |
|
= n + sum(n-1) | (n > 1) | 1 | (n = 1) | |||||||||||||
int sum(int n) { if ( n > 1 ) return n + sum(n - 1); else return 1; } |
((a >= 0 || b == 1 ) && c > 2) |
(a >= 0 || b == 1 && c > 2) |