include stdio h pragma warningdisable 4996 void bar
棒グラフ #include <stdio. h> #pragma warning(disable: 4996) void bar( int len ) { int i; for (i=0; i<len; i++) { printf("*"); bar関数 } printf("n"); return; } int main() { int len; printf( "len=" ); scanf( "%d", &len ); bar( len ); return 0; } main関数 7
関数呼び出しの流れ main 関数 int main() 関数呼び出し bar(len); bar 関数 void bar( int len ) 戻り return; 9
プログラム実行順 #include <stdio. h> #pragma warning(disable: 4996) void bar( int len ) { int i; for (i=0; i<len; i++) { ④ bar関数 printf("*"); } ⑤ printf("n"); ⑥ return; 戻り } main 関数の先頭行 int main() がプログラムの始まり { int len; ①printf( "len=" ); ②scanf( "%d", &len ); main関数 ③bar( len ); 関数呼び出し ⑦return 0; main 関数内の return } がプログラムの終わり 10
プログラム実行順 bar 関数 void bar( int len ) main 関数 int main() printf( "len=" ); 関数 呼び出し scanf( "%d", &len ); if( i < len ) No bar( len ); return 0; i = 0; 戻り Yes printf( "*" ); i++; printf("n"); return; 11
関数定義の例 #include <stdio. h> #pragma warning(disable: 4996) 頭部 void bar( int len ) { 型int名前 i; 仮引数 for (i=0; i<len; i++) { printf("*"); bar関数 } 本体 printf("n"); return; } int main() { 型名前 int len; 仮引数(は空) printf( "len=" ); scanf( "%d", &len ); bar( len ); return 0; } 頭部 本体 main関数 14
#include <stdio. h> #pragma warning(disable: 4996) int num_of_day( int y, int m) { int num_days[] = {31, 28, 31, 30, 31}; if ( (m == 2) && (((y % 400) == 0) || (((y % 100) != 0) && ((y % 4) == 0)))){ return 29; } else { return num_days[m-1]; } } int main() { int y; int m; int n; printf( "y=" ); scanf( "%d", &y ); printf( "m=" ); scanf( "%d", &m ); n = num_of_day(y, m); printf( "number of days(%d) = %dn", m, n ); return 0; } 22
月の日数 実行結果の例 y=2001 m=11 number of days(11) = 30 23
関数呼び出しの流れ main 関数 int main() 関数呼び出し n = num_of_day(y, m); num_of_day 関数 int num_of_day( int y, int m ) 戻り return 29; うるう年のとき return num_days[m-1]; うるう年 でないとき 24
#include <stdio. h> プログラム実行順 #pragma warning(disable: 4996) int num_of_day( int y, int m) { int num_days[] = {31, 28, 31, 30, 31}; ⑤if ( ( m == 2 ) && (((y % 400) == 0) || (((y % 100) != 0) && ((y %4) == 0)))){ ⑥ return 29; } else { ⑥ return num_days[m-1]; } } int main() { int y; int m; int n; ①printf( "y=" ); ②scanf( "%d", &y ); ③printf( "m=" ); ④scanf( "%d", &m ); ⑦n = num_of_day(y, m); ⑧printf( "number of days(%d) = %dn", m, n ); ⑨return 0; 25 }
プログラム実行順 num_of_day 関数 main 関数 int num_of_day( int y, int m) int main() 関数 呼び出し n = num_of_day(y, m); if( ・・・ ) Yes No return 29; return num_days[m戻り 1]; 26
#include <stdio. h> #pragma warning(disable: 4996) void print_calendar( int num_days, int youbi ) { int i; int d; int x; if ( ( num_days < 28 ) || ( num_days > 31 ) || ( youbi < 0 ) || ( youbi > 6 ) ) { return; } 渡された値がおかしいときは, 何もせずに終わる for ( i = 0; i < ( youbi * 3 ); i++ ) { printf( " " ); } 曜日の分だけ空白を表示 d = 1; x = youbi; do { printf( "%2 d ", d ); d++; if ( x == 6 ) { 日付を書く printf( "n" ); x = 0; } else { 土曜日に来たら改行する x++; } } while ( d <= num_days ); return; } 月末まで書いたら終える 33
前のページからの続き int main() { int num_days; int youbi; printf( "num_days=" ); scanf( "%d", &num_days ); printf( "youbi=" ); scanf( "%d", &youbi ); print_calendar( num_days, youbi ); return 0; } 34
1か月分のカレンダー 実行結果の例 num_days=30 youbi=4 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 35
関数呼び出しの流れ main 関数 int main() 関数呼び出し print_calendar(num_days, youbi); num_of_day 関数 void print_calendar( int num_days, int youbi ) 戻り return; 渡された値がおかしい とき return; 36
プログラム実行順 print_calendar 関数 main 関数 void print_calendar( int num_days, int youbi ) int main() 関数 呼び出し if( ・・・ ) Yes No return; print_calendar( num_days, youbi ); 1か月分のカレンダーの表示 戻り return; 37
月初めの曜日 #include <stdio. h> #pragma warning(disable: 4996) int zeller( int y, int m, int d ) { if ( ( m == 1 ) || ( m == 2 ) ) { y = y - 1; m = m + 12; } return (y + (y/4) - (y/100) + (y/400) + ((13 * m + 8 ) / 5) + d) % 7; } int first_day( int y, int m ) { return zeller( y, m, 1 ); } int main() { int y; int m; int f; printf( "y=" ); scanf( "%d", &y ); printf( "m=" ); scanf( "%d", &m ); f = first_day(y, m); printf( "first days(%d, %d) = %dn", y, m, f); return 0; } 40
- Slides: 48