第8回目 [6月12日、H.15(‘03)] 多重ループ 繰り返し構造:補足事項 本日のメニュー 1)前回の課題について 2)前回の宿題について 3)多重ループ、補足事項 4)課題 PE03-08.ppt 前回の課題 教科書の各演習を順に処理するプログラ ムを作成せよ。 ・演習4-3(65頁)、 ・演習4-9、演習4-10(71頁)、 ・演習4-13、演習4-14(77頁) 提出はいつもと同様、リスト印刷とファイル転送 ファイル名は en7-****.c ファイル名の **** は学籍番号の二桁目と下3桁 例:学生番号 024987 ならば xxx-2987.c /* 演習4-3 */ printf("二つの整数を入力せよ:"); scanf("%d %d", &a, &b); if ( a > b ) { start = b; last = a; } else { start = a; last = b; } sum = 0; sum の初期値を忘れな い! m++) for ( m=start; m<=last; 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; } 課題の提出について ◎変数の値を常にトレースしてみよう。 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月10日(火) 午後5時 • リストの提出は、オープン利用室のレポート入れ • 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) ◎printf、puts、scanf の使い方に混乱あり ◎複合文 {・・・・} の使い方:if文、for文など for(・・); cnt++; sum+=a; for(・・) cnt++; sum+=a; → for(・・) { cnt++; sum+=a; } if(i%n==0); cnt++; sum+=n; → if(i%n==0) { cnt++; sum+=n; } ◎en7-****m.c、hw7-****m.c で修正リストを返却 今回の課題 教科書の List 4-17、4-18、4-19を良 く復習してから、次の各演習を順に処理 するプログラムを字下げに注意して作れ。 ・演習4-16、演習4-17(80頁)、 ・演習4-18(81頁) 提出はいつもと同様、リスト印刷とファイル転送 ファイル名は en8-****.c ファイル名の **** は学籍番号の二桁目と下3桁 例:学生番号 024987 ならば xxx-2987.c 今回の宿題 ファイル名は hw8-****.c ◎前回の宿題の発展問題 整数 n を順に変えて、約数の和が n のちょ うど2倍となるような整数を4つ見つけ出せ。 条件を満足する整数は、 6 28 ???? ???? 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月17日(火) 午後5時 • リストの提出は、オープン利用室のレポート入れ • aucopy でのファイル転送フォルダーは、 [森下伊三男]-[プログラミング演習] 第8回終了 次回(第9回)の プログラミング入門、 プログラミング演習は 6月19日です。
© Copyright 2024 ExpyDoc