第8回目 [6月8日、H.16(‘04)] 多重ループ 繰り返し構造:補足事項 本日のメニュー 1)前回の課題について 2)前回の宿題について 3)多重ループ、補足事項 4)課題 PE04-08.ppt 前回の課題 教科書の各演習を順に処理するプログラ ムを作成せよ。 ・演習4-3(65頁)、 ・演習4-9、演習4-10(71頁)、 ・演習4-13、演習4-14(77頁) 提出はいつもと同様、リスト印刷とファイル転送 ファイル名は en7-****.c ファイル名の **** は学籍番号の二桁目と下3桁 例:学生番号 034987 ならば xxx-3987.c /* 演習4-3 */ printf("二つの整数を入力せよ:"); scanf("%d %d", &a, &b); if ( a > b ) { start = b; last = a; } else { start = a; last = b; } sum = 0; sum の初期値を忘れない! for ( m=start; m<=last; m++) sum += m; printf("%d以上%d以下の全整数の和は" " %dです。\n",start,last,sum); /* 演習4-9(10) */ 初期値を忘れない事 printf("整数を入力せよ:"); scanf("%d", &n); スペースがあると i = 2; 出力が見やすくなる while ( i <= n ) { 演習4-10 printf("%d ", i); の場合は、 i += 2; } i *= 2; printf("\n"); i = i*2; /* 演習4-13 */ for ( i = 1; i <= n; i++ ) 1の位のみ printf("%d", i % 10); 一桁だけ表示 putchar('\n'); /*演習4-9(10) forの場合 */ for ( i=2; i<=n; i+=2 ) printf("%d ",i); for ( i=2; i<=n; i*=2 ) printf("%d ",i); /*演習4-10(9) doの場合 */ i = 2; 初期値を忘れない! if ( i <= n ) 演習4-9 do { の場合は、 printf("%d ",i); i += 2; i *= 2; i = i+2; } while ( i <= n ); /* 演習4-14 */ printf("何cmから:");scanf("%d",&lw); printf("何cmまで:");scanf("%d",&up); printf("何cmごと:");scanf("%d",&st); for ( h=lw; h<=up; h+=st) { wt = ( h – 100.0 ) * 0.9; printf("%dcm %.2fkg\n", h, wt); } h = lw; while ( h <= up ) { wt = ( h – 100.0 ) * 0.9; printf("%dcm %.2fkg\n", h, wt); h += st; } 課題の提出について ◎for(i=2; i<a; i+=2) printf(・・・ for(i=2; i<a; i*=2) printf(・・・ で、a に 16 を入力すると 2・・・ と出力され、最後に 16 が出力されない。→i<=a ◎変数の値を常にトレースしてみよう。 sum = 0; while(min<=max) { sum = sum + min; min=min+1; } printf("%d以上%d以下の・・",min,max・・); → min の値が変化していくことに注意 ◎出力のされ方に注意しよう。適所に改行を入れよう。 ・出力された数値がすべてくっついてしまう。 printf("%d",i); → printf("%d ",i); 前回の宿題 ファイル名は hw7-****.c ◎ n を入力し、n以下のnを入力? 30 次の値を順に出力せよ。30 以下の 偶数の和は 240 です。 1)偶数の和 3の倍数の和は 165 です。 約数は、 2) 3の倍数の和 1 2 3 5 6 10 15 30 3) 全ての約数の値 約数の個数は 8 個です。 4) 約数の個数と合計約数の和は 72 です。 • 締め切り: 6月5日(土) 午後1時 • リストの提出は、オープン利用室のレポート入れ • aucopy でのファイル転送フォルダーは、 [森下伊三男]-[プログラミング演習] {int n, m, sum, cnt; 初期値の代入 偶数の値をm puts("123456 を忘れない! 朝日太郎"); に再設定 printf("整数 n を入れよ=>"); m+2 ではダメ scanf("%d",&n); m+=2 は良い printf("%d 以下の\n",n); sum += m; sum = 0; for ( m=2; m<=n; m=m+2) sum=sum+m; printf("偶数の和は %d です。\n",sum); sum = 0; 初期値の代入 for ( m=1; m<=n; m++) を忘れない! if ( m % 3 == 0 ) sum=sum+m; printf("3の倍数の和は %d です。\n", sum); printf("約数は、\n"); 初期値の設定 cnt = 0; sum = 0; を忘れない! for ( m=1; m<=n; m++) 約数をその都度 if ( n % m == 0 ) { 出力する printf(" %d, ",m); cnt = cnt + 1; 約数の数を数える sum = sum + m; 約数の合計を計算 } printf("\n約数の個数は %d です。\n", cnt); printf("約数の和は %d です。\n", sum); } 宿題の提出について ◎if( i%n ) と if( i%n==0 ) の違い → n が i の約数の時 i%n はゼロ(False), i%n==0 は1(True) ◎変数名の付け方:O(オー)と0(ゼロ)は間違えや すいので避ける。内容が分かりやすい変数名を。 ◎偶数、3の倍数の和 ・for(i=3; i<=n; i+=3) sum3 += i; ・for(i=1; i<=n; i++) { if ( i%2 == 0 ) sum2 += i; if ( i%3 == 0 ) sum3 += i; } ◎リストは必ずA4用紙で提出。感想質問等記入可 今回の課題 ファイル名は en8-****.c 教科書の List 4-17、4-18、4-19を良 く復習してから、次の各演習を順に処理 するプログラムを字下げに注意して作れ。 スタイルも評価対象とする。 ・演習4-16、演習4-17(80頁)、 ・演習4-18(81頁) 提出はいつもと同様、リスト印刷とファイル転送 ファイル名の **** は学籍番号の二桁目と下3桁 例:学生番号 034987 ならば xxx-3987.c 今回の宿題 ファイル名は hw8-****.c 条件を満足する整数は、 6 28 ???? ???? ◎前回の宿題の発展問題 整数 n を順に変えて、約数の和が n のちょ うど2倍となるような整数を4つ見つけ出せ。 6の約数は 1 2 3 6 であるから、 1+2+3+6 = 12 → 2x6 28の約数は 1 2 4 7 14 28 であり、 1+2+4+7+14+28 = 56 → 2x28 • 締め切り: 6月12日(土) 午後1時 • リストの提出は、オープン利用室のレポート入れ • aucopy でのファイル転送フォルダーは、 [森下伊三男]-[プログラミング演習]
© Copyright 2024 ExpyDoc