プログラミング演習2004

第12回 [7月6日、H.16(‘04)]
配列の扱い、探索
有効範囲と記憶域期間
今日のメニュー
1
2
3
6
前回の課題の復習
前回の宿題の復習
今回の課題
演習
PE04-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
提出はいつもと同様、リスト印刷とファイル転送
前回の宿題
(1)教科書の114頁~129頁を良く読んで
復習する。
(2)教科書の120頁~145頁を良く読んで
予習する。
(3)今日の課題が未完成の場合、完成して
提出する。 ファイル名:hwB-****.c
• 締め切り: 7月3日(土) 午後1時(厳守)
#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) {
関数sqr
演習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) );
・・・・・・
/*演習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 );
る変数minの宣
}
言と初期化
・・・・
/*演習6-4*/
int sqr(int x) {
関数を利用する
return ( x * x );
前に定義しておく
}
int pow4(int x) {
return ( sqr(
sqr(x)sqr(x)
* sqr(x)
) );
}
/* main関数 */
int a;
・・・・
printf("整数を入力せよ=>");
scanf("%d", &a);
printf("四乗は %d です。\n",pow4(a));
・・・・
/*演習6-5、6*/
while(no-->0)
void alert(int no) {
putchar('\a');
int i;
for(i=0;i<no;i++) putchar('\a');
}
void hello( void ) {
puts("こんにちは。");
}
/* main関数 */
・・・・
printf(" n=>"); scanf("%d",&n);
alert(n);
hello( );
・・・・
課題の提出について
・プログラムの構成
#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頁)を完成せよ。
(1) → ファイル名:enC-****.c で提出
(2)List6-20 を参考に、演習6-12 を完成せよ。
(2) → 授業の最後に答え合わせをする
(3)以下のプログラムを実行させ、関連する説明を
復習せよ。(134-145頁)
(a)List6-14(134頁)[逐次探索]
(b)List6-15,16(136頁-)[番兵法]
(c)List6-17(138頁)[多次元配列]
(d)List6-18(140頁)[有効範囲]
(e)List6-19(143頁)[記憶域期間]
今回の宿題
ファイル名:hwC-****.c
第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
提出はいつもと同様、リスト印刷とファイル転送
• 締め切り: 7月10日(土) 午後1時(厳守)
#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);
の変数は不定値
}