第12回 [7月10日、H.15(‘03)] 配列の扱い、探索 有効範囲と記憶域期間 今日のメニュー 1 2 3 6 前回の課題の復習 前回の宿題の復習 今回の課題 演習 PE03-12.ppt 前回の課題 (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の場合*/ /*整数を入力する*/ printf("小さい方の値は %d です。\n", minof( na, nb) ); printf("3数中の最小値は %d です。\n", min3( na, nb, nc) ); ・・・・・・ #include <stdio.h> /*演習6-1、2、3*/ int minof(int x, int y) { return ( (x-y)>0 ? y : x ); } int min3(int x, int y, int z) { int min = x; if ( y < min ) min = y; if ( z < min ) min = z; return ( min ); } int cube(int x) { return ( X*x*x); } int main(void) { ・・・・ } 前回の課題(演習6-4) #include <stdio.h> int sqr(int x) { 関数を利用する return ( x * x ); } 前に定義しておく int pow4(int x) { return ( sqr( sqr(x)sqr(x) * sqr(x) ) ); } int main(void) { int a; printf("整数を入力せよ=>"); scanf("%d", &a); printf("四乗は %d です。\n", pow4(a)); #include <stdio.h> /*演習6-5*/ void alert(int no) { int i; for ( i=0; i<no; i++) putchar('\a'); return; while(no-->0) } putchar('\a'); int main(void){ int n; printf("Enter n =>"); scanf("%d",&n); alert(n); return (0); } #include <stdio.h> /*演習6-6*/ void hello( void ) { puts("こんにちは。"); return; } int main(void){ int n, i; printf("Enter n =>"); scanf("%d",&n); for ( i=1; i<=n; i++) hello(); return (0); } 課題の提出について ・プログラムの構成 #include <stdio.h> /* 関数1を定義する */ int minof(・・・) { ・・・ } /* 関数2を定義する */ ・・・ int main(void) { int ・・・ puts("番号・氏名"); 必要な関数を呼び出す } ・main関数は最後に記述 する ・演習6-4の pow4 は 教科書List6-3の関数 sqr を用いる return(x*x*x*x); return( sqr(x)*sqr(x) ); return( sqr( sqr(x) ) ); 前回の宿題 (1)List6-12、 List6-13 等参考にし て、演習6ー7、 演習6-8、 演習6-9 (133頁)を完成せよ。 (2)教科書114~133頁を良く読み直して 復習し、次に、134~145頁を予習せよ。 ファイル名:hwB-****.c • 締め切り: 7月8日(火) 午後5時(厳守) int min_of(const int vc[], int no) /*演習6-7*/ { int i, min = vc[0]; for ( i=1; i<no; i++) if ( vc[i]<min ) min = vc[i]; return ( min ); } void rev_intary( int vc[], int no) /*演習6-8*/ { int i, temp; for ( i = 0; i< no/2; i++) { temp = vc[no-i-1]; vc[no-i-1] = vc[i]; vc[i] = temp; } return; } void intary_rcpy(int v1[],const int v2[],int no) { int i; /*演習6-9*/ for (i=0;i<no;i++) v1[i]=v2[no-i-1]; return; } int main(void) { int i, v[10], v1[10], N=10; puts("整数を10個入力せよ"); for ( i=0; i<N; i++) { printf("v[%d]=>",i); scanf("%d", &v[i]); } printf("配列 v の要素中の最小値は %d です。\n", min_of(v,N) ); puts("配列 v を逆順にすると"); rev_intary(v,N); for ( i=0; i<N; i++) printf("v[%d]=%d\n",i,v[i]); puts("更に v を逆にして v1 に代入すると"); intary_rcpy(v1, v, N); for ( i=0; i<N; i++) printf("v[%d]=%d: v1[%d]=%d\n", i, v[i], i, v1[i]); return(0); } 宿題の提出について • 配列の入れ替えなどを関数で実行せずに、 mainの中で実行している。 • mainの中で、関数の呼び出しが無い。 • 転送ファイルが無い、番号・氏名が無い、 リストのプリントアウト提出が無い 今日の課題 ファイル名:enC-****.c (1)List6-20 を参考に、演習6-12 を完成せよ。 (2)第10回の課題・宿題の続きとして、各科目の最 高点・最低点、合計の最高点・最低点の出力を追 加せよ。(最高点、最低点を求める関数を作る) 学籍番号 1023 1026 : 1132 平均点 最高点 最低点 英語 数学 国語 合計点 平均点 63 71 68 202 67.33 49 28 51 128 42.67 : : : 81 89 75 245 81.67 67.3 62.1 72.1 201.5 67.17 96 89 92 265 88.33 44 23 46 113 37.67 提出はいつもと同様、リスト印刷とファイル転送 #include <stdio.h> /*演習6-12*/ int a[5]; 関数外で定義・宣言 int main(void){ 関数内でstatic付き static int b[5]; int i, c[5]; printf("\n a : "); 0に初期化される for(i=0;i<5;i++) printf("%d",a[i]); printf("\n b : "); for(i=0;i<5;i++) printf("%d",b[i]); printf("\n c : "); for(i=0;i<5;i++) printf("%d",c[i]); printf("\n"); 自動記憶域期間 return (0); の変数は不定値 } 今日の宿題[提出不要] 以下のプログラムを実行させ、関連する 説明を復習せよ。(134-145頁) (1)List6-14(134頁)[逐次探索] (2)List6-15,16(136頁-)[番兵 法] (3)List6-17(138頁)[多次元配列] (4)List6-18(140頁)[有効範囲] (5)List6-19(143頁)[記憶域期間] 次回は 第12回終了 最終回 です。 次回(第13回)の プログラミング入門、 プログラミング演習は 7月17日です。
© Copyright 2024 ExpyDoc