第11回 [6月29日、H.16(‘04)] 関数(1) 今日のメニュー 1 2 3 4 5 前回の課題 前回の宿題 いろいろな関数の演習 課題 宿題 PE04-11.ppt 前回の課題 次の頁に示すような、10人の学生の学籍 番号、英語・数学・国語の得点データがあ る。これらのデータを2次元配列の初期値 として与え、以下の内容を見やすく出力す るプログラムを作成せよ。 ・各学生の番号、各科目の得点、合計点 ・全員の各科目及び合計点の平均点 ファイル名は enA-****.c 提出はいつもと同様、リスト印刷とファイル転送 ファイル名:hwA-****.c 前回の宿題 [提出はいつもの通り] ◎今日の課題で、以下の出力例のように、各学生の 3科目の平均点、全員についての平均点を小数点以 下2桁まで出力せよ。(各学生の平均点は1次元配 列を利用せよ。赤い部分が今回の宿題の部分) 学籍番号 英語 数学 国語 合計点 平均点 1023 63 71 68 202 67.33 1026 49 28 51 128 42.67 1038 80 63 85 228 76.00 : : : : 1132 81 89 75 245 81.67 平均点 67.3 62.1 72.1 201.5 67.17 • 締め切り: 7月26日(土) 午後1時(厳守) int a[11][5] = { { 1023, 63, 71, 68, { 1026, 49, 28, 51, { 1038, 80, 63, 85, { 1055, 75, 60, 84, { 1076, 69, 79, 92, { 1084, 96, 88, 81, { 1092, 63, 52, 67, { 1104, 53, 68, 72, { 1126, 44, 23, 46, { 1132, 81, 89, 75, { 0, 0, 0, 0, double av[10]={0.0}, int i, j; 0}, ,を忘れない 0}, 0}, 0}, 0}, 0}, 0}, ;を忘れない 0}, 0}, 0}, 0} }; kav[6]={0.0}; //各自の合計得点と平均点を計算する double型 av[i] for( i=0; i<10; i++) { a[i][4]=a[i][1]+a[i][2]+a[i][3]; a av[i]=a[i][4]/3.0; [0][1][2][3][4] [0] [1] } [2] /* 各科目と合計の総和と平均 */ : for ( j=1; j<=4; j++) { [8] [9] for ( i=0; i<=9; i++) [10 全 ] a[10][j] += a[i][j]; 番 英 数 国 合て 号 語 学 語 計の kav[j] = a[10][j]/10.0; 総 総 総 総平 均 和 } 和 和 和 kav kav[5] = kav[4]/3.0; [0][1][2][3][4][5] printf( double型av[i] " 番号 英語 数学 国語 合計点 平均点 \n"); a [0][1][2][3][4] [0] for( i=0; i<10; i++) { [1] for ( j=0; j<=4; j++) [2] : printf("%6d",a[i][j]); [8] printf("%9.2f\n",av[i]);[9] [10 } ] 全 番 英 数 国 合て /*各科目と合計の平均点出力*/ 号 語 学 語 計の 平 平 平 平 平 printf("平均点 "); 均 均 均 均 均 for ( j=1; j<=4; j++) kav printf("%6.1f", kav[j]); [0][1][2][3][4][5] 課題・宿題の提出について ・配列の添字のミスが大変多い! int a[10][4] → a[0][0]~a[9][3]まで → a[10][j] a[i][4] を使おうとしている ・配列の初期化をしていない → printf( ) でキーボードから入力している ・配列の内容の出力は大体できていた。 ・平均点の為の double型の配列について → 1次元配列 av[5] をわざわざ2次元配列で av[5][1] や av[1][5] としている。 → 要素の数が1なのに、存在しないav[i][1]を 利用しようとしている。 正しくは av[i][0] 課題・宿題の提出について .平均点を小数点以下まで表示していない ・各科目の平均点を求めるとき、配列kav[6]を使 わずに、a[10][j](jは1~4)に合計を入れて おき、出力するとき10.0で割っても良い。 for ( j=1; j<=4; j++) printf("%6.1f", a[10][j]/10.0); ・式の中に定数を書く場合、整数型か浮動小数点型 を明白にする。 nが整数型なら、 n/3は整数型、 n/3.0は浮動小数点型、 aが浮動小数点型なら、 a/3は3を3.0に変換し、 a/3.0 と見なされる。 ・学籍番号・氏名の出力忘れが多くなった。 今日の課題 (1)List6-1を参考に演習6ー1(118頁) (2)List6-2を参考に演習6ー2(118頁) (3)List6-3を参考に演習6ー3(119頁) List6-6を参考に演習6ー4(121頁) (4)List6-7,8を参考に演習6ー5(123 頁) (5)演習6ー6(125頁) ファイル名は enB-****.c 提出はいつもと同様、リスト印刷とファイル転送 #include <stdio.h> int minof( int x, int y) { 演習6-1の関数の中身を記述 } int min3( int x, int y, int z) { 演習6-2の関数の中身を記述 } int cube( int x) { 演習6-3の関数の中身を記述 } int pow4( int x) { 演習6-4の関数の中身を記述 } void alert( int no) { 演習6-5の関数の中身を記述 } void hello( void ) { 演習6-6の関数の中身を記述 } int main(void) { int na, nb, nc; /*演習6-1,6-2の場合*/ /*整数 na, nb, nc を入力する*/ printf("小さい方の値は %d です。\n", minof( na, nb) ); printf("3数中の最小値は %d です。\n", min3( na, nb, nc) ); ・・・・・・ 今回の宿題 (1)教科書の114頁~129頁を良く読んで 復習する。 (2)教科書の120頁~145頁を良く読んで 予習する。 (3)今日の課題が未完成の場合、完成して 提出する。 ファイル名:hwB-****.c • 締め切り: 7月3日(土) 午後1時(厳守)
© Copyright 2024 ExpyDoc