Microsoft Word - 03

Similar documents
Microsoft PowerPoint - 10.ppt [互換モード]

プログラミング実習I

/*Source.cpp*/ #include<stdio.h> //printf はここでインクルードして初めて使えるようになる // ここで関数 average を定義 3 つの整数の平均値を返す double 型の関数です double average(int a,int b,int c){

関数 C 言語は関数の言語 関数とは 関数の定義 : f(x) = x * x ; 使うときは : y = f(x) 戻り値 引数

Microsoft PowerPoint - 計算機言語 第7回.ppt

gengo1-11

関数の動作 / printhw(); 7 printf(" n"); printhw(); printf("############ n"); 4 printhw(); 5 関数の作り方 ( 関数名 ) 戻り値 ( 後述 ) void である. 関数名 (

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド

プログラミング入門1

Microsoft Word - no11.docx

関数の中で宣言された変数の有効範囲はその関数の中だけです さっきの rectangle _s で宣言されている変数 s は他の関数では使用できません ( 別の関数で同じ名前の変数を宣言することはできますが 全く別の変数として扱われます このように ある関数の中で宣言されている変数のことをその関数の

PowerPoint Presentation

kiso2-09.key

Cプログラミング1(再) 第2回

プログラミング入門1

<4D F736F F D20438CBE8CEA8D758DC F0939A82C282AB2E646F63>

Microsoft Word - 13

PowerPoint Presentation

Microsoft PowerPoint - C言語の復習(配布用).ppt [互換モード]

Microsoft PowerPoint - CproNt02.ppt [互換モード]

Microsoft PowerPoint - lec4.ppt

Microsoft PowerPoint - program.ppt [互換モード]

char int float double の変数型はそれぞれ 文字あるいは小さな整数 整数 実数 より精度の高い ( 数値のより大きい より小さい ) 実数 を扱う時に用いる 備考 : 基本型の説明に示した 浮動小数点 とは数値を指数表現で表す方法である 例えば は指数表現で 3 書く

Microsoft PowerPoint ppt

Microsoft PowerPoint - prog07.ppt

4 分岐処理と繰返し処理 ( 教科書 P.32) プログラムの基本的処理は三つある. (1) 順次処理 : 上から下に順番に処理する ぶんきそろ (2) 分岐処理 : 条件が揃えば, 処理する はんぷく (3) 反復処理 : 条件が揃うまで処理を繰り返す 全てのプログラムは (1) から (3) の

Microsoft PowerPoint - 09.pptx

Microsoft PowerPoint - prog08.ppt

バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科

6 関数 6-1 関数とは少し長いプログラムを作るようになると 同じ処理を何度も行う場面が出てくる そのたびに処 理を書いていたのでは明らかに無駄であるし プログラム全体の見通しも悪くなる そこで登場す るのが 関数 である 関数を使うことを 関数を呼び出す ともいう どのように使うのか 実際に見て

Microsoft Word - 3new.doc

<4D F736F F D20438CBE8CEA8D758DC03389F0939A82C282AB2E646F63>

Microsoft Word - 09

Method(C 言語では関数と呼ぶ ) メソッドを使うと 処理を纏めて管理することができる 処理 ( メソッド ) の再実行 ( 再利用 ) が簡単にできる y 元々はC 言語の関数であり 入力値に対する値を 定義するもの 数学では F(x) = 2x + 1 など F(x)=2x+1 入力値 (

コンピュータ工学講義プリント (7 月 17 日 ) 今回の講義では フローチャートについて学ぶ フローチャートとはフローチャートは コンピュータプログラムの処理の流れを視覚的に表し 処理の全体像を把握しやすくするために書く図である 日本語では流れ図という 図 1 は ユーザーに 0 以上の整数 n

cp-7. 配列

スライド 1

Microsoft PowerPoint - 11.pptx

JavaプログラミングⅠ

Microsoft PowerPoint - C4(反復for).ppt

概要 プログラミング論 変数のスコープ, 記憶クラス. メモリ動的確保. 変数のスコープ 重要. おそらく簡単. 記憶クラス 自動変数 (auto) と静的変数 (static). スコープほどではないが重要.

関数の呼び出し ( 選択ソート ) 選択ソートのプログラム (findminvalue, findandreplace ができているとする ) #include <stdiu.h> #define InFile "data.txt" #define OutFile "surted.txt" #def

Microsoft PowerPoint - å®�æ−•è©¦é¨fi3ㆮ対ç�Œ.pptx

C プログラミング 1( 再 ) 第 4 回 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ 1

関数の呼び出し ( 選択ソート ) 選択ソートのプログラム (findminvalue, findandreplace ができているとする ) #include <stdio.h> #define InFile "data.txt" #define OutFile "sorted.txt" #def

memo

7 ポインタ (P.61) ポインタを使うと, メモリ上のデータを直接操作することができる. 例えばデータの変更 やコピーなどが簡単にできる. また処理が高速になる. 7.1 ポインタの概念 変数を次のように宣言すると, int num; メモリにその領域が確保される. 仮にその開始のアドレスを 1

JavaプログラミングⅠ

メソッドのまとめ

スライド 1

今回のプログラミングの課題 ( 前回の課題で取り上げた )data.txt の要素をソートして sorted.txt というファイルに書出す ソート (sort) とは : 数の場合 小さいものから大きなもの ( 昇順 ) もしくは 大きなものから小さなもの ( 降順 ) になるよう 並び替えること

講習No.12

数はファイル内のどの関数からでも参照できるので便利ではありますが 変数の衝突が起こったり ファイル内のどこで値が書き換えられたかわかりづらくなったりなどの欠点があります 複数の関数で変数を共有する時は出来るだけ引数を使うようにし グローバル変数は プログラムの全体の状態を表すものなど最低限のものに留

プログラミング実習I

#include<math.h> 数学関係の関数群で sin() cos() tan() などの三角関数や累乗の pow() 平方根を求める sqrt() 対数 log() などがあります #include<string.h> 文字列を扱う関数群 コイツもまた後日に 4. 自作関数 実は 関数は自分

Microsoft PowerPoint - 説明2_演算と型(C_guide2)【2015新教材対応確認済み】.pptx

Prog1_6th

講習No.10

演算増幅器

PowerPoint プレゼンテーション

Microsoft PowerPoint Java基本技術PrintOut.ppt [互換モード]

Microsoft PowerPoint - prog03.ppt

Microsoft Word - 05

Microsoft PowerPoint L07-Imperative Programming Languages-4-students ( )

書式に示すように表示したい文字列をダブルクォーテーション (") の間に書けば良い ダブルクォーテーションで囲まれた文字列は 文字列リテラル と呼ばれる プログラム中では以下のように用いる プログラム例 1 printf(" 情報処理基礎 "); printf("c 言語の練習 "); printf

プログラミング基礎

第2回講義:まとめ

演算増幅器

Microsoft PowerPoint - 13.ppt [互換モード]

kiso2-06.key

Microsoft PowerPoint - 4.pptx

目次

Microsoft PowerPoint - ca ppt [互換モード]

gengo1-10

PowerPoint Presentation

Microsoft Word - Cプログラミング演習(12)

Microsoft Word - Cプログラミング演習(3)

次に示す数値の並びを昇順にソートするものとする このソートでは配列の末尾側から操作を行っていく まず 末尾の数値 9 と 8 に着目する 昇順にソートするので この値を交換すると以下の数値の並びになる 次に末尾側から 2 番目と 3 番目の 1

Taro-ポインタ変数Ⅰ(公開版).j

kiso2-03.key

PowerPoint Presentation

情報処理 Ⅱ 2007 年 11 月 26 日 ( 月 )

Microsoft PowerPoint - 12.ppt [互換モード]

memo

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

Microsoft PowerPoint - handout07.ppt [互換モード]

02: 変数と標準入出力

プログラミング及び演習 第1回 講義概容・実行制御

PowerPoint プレゼンテーション

Microsoft PowerPoint - lec10.ppt

Microsoft PowerPoint - 説明3_if文switch文(C_guide3)【2015新教材対応確認済み】.pptx

4-4 while 文 for 文と同様 ある処理を繰り返し実行するためのものだが for 文と違うのは while 文で指定するのは 継続条件のみであるということ for 文で書かれた左のプログラムを while 文で書き換えると右のようになる /* 読込んだ正の整数値までカウントアップ (for

Microsoft Word - no15.docx

た場合クラスを用いて 以下のように書くことが出来る ( 教科書 p.270) プログラム例 2( ソースファイル名 :Chap08/AccountTester.java) // 銀行口座クラスとそれをテストするクラス第 1 版 // 銀行口座クラス class Account String name

C 言語第 3 回 2 a と b? 関係演算子 a と b の関係 関係演算子 等しい a==b 等しくない a!=b より大きい a>b 以上 a>=b より小さい a<b 以下 a<=b 状態 真偽 値 条件が満たされた場合 TRUE( 真 ) 1(0 以外 ) 条件が満たされなかった場合 F

memo

C 言語の式と文 C 言語の文 ( 関数の呼び出し ) printf("hello, n"); 式 a a+4 a++ a = 7 関数名関数の引数セミコロン 3 < a "hello" printf("hello") 関数の引数は () で囲み, 中に式を書く. 文 ( 式文 ) は

プログラミング基礎

Transcription:

平成 24 年度講義 アルゴリズムとデータ構造 第 3 回変数のスコープルール 関数 担当 : 富井尚志 (tommy@ynu.ac.jp) 選択計算 ( 条件判断 ) 第 2 回 基本的制御構造 の復習 if 文 : ある条件に応じて別々の計算を行う. 式が真 (0 以外 ) であれば文 1 が実行され, 偽であれば文 2 が実行される. なお,else 以下は省略可能である. if ( 式 ) 文 1 else 文 2 等しい は == if ( s1 = = s2 ) printf( s1 と s2 は同じだよ n ); else printf( s1 と s2 は違うよ n ); 反復計算 while 文 : 式が真の時に文が実行される. これを式が偽になるまで実行する. while ( 式 ) 文 s1=0; i = n; while(i>0) 1 から n までの和を求めている. s1 += i; /* s1=s1+i; と等価 */ i--; /* i=i-1; と等価 */ for 文 : 最初に一度だけ式 1 が実行される. 式 2 が真の時に文が実行される. その後に, 式 3 が実行される. これを式 2 が偽になるまで繰り返す. for( 式 1; 式 2; 式 3) 文 s2=0; for(i = n; i>0; i--) s2 += i; 1 から n までの和を求めている. do ~ while 文 : まず文を実行する. 次に式が計算される. これを式が偽になるま do 文 while ( 式 ); で繰り返す. s3=0; i = n; do s3 += i; i--; while (i>0); 1 から n までの和を求めている. 1

平成 24 年度講義 アルゴリズムとデータ構造 第 3 回変数のスコープルール 関数 関数定義の一般形 : 得られる値の型関数名 ( 引数型 1 仮引数 1, 引数型 2 仮引数 2,... ) 変数型 1 変数 11, 変数 12,...; 変数型 2 変数 21, 変数 22,...; 文 1 文 2 : return 戻り値 ; 関数呼出 関数内部に記述された計算を行ない値を求める. 関数名 ( 値 1, 値 2, 値 3,...) 前回の出席票の小テストの解答 int summation( int n1, int n2 ) /* 整数 n1 から n2 までの和を */ /* 求めて返す関数 */ int i, sum = 0; for ( i = n1; i <= n2; i ++ ) sum = sum + i; return sum; int main(void) int n; n = summation( 1, 100 ); return 0; キーボードから 1 つの自然数を入力させ, その数の 2 乗を表示するプログラムを, 関数を用いて作りなさい. ただし, 入力された数が 3 の倍数であるときは再入力させること. 次の不完全なプログラムを正しく動作するものに直すことによって回答せよ. #include<stdio.h> 宣言部では, セミコロン (;) を最後に付けます. int func1( int n ); /* 引数の2 乗を計算して返す関数 ( プロトタイプ宣言部 ) */ int main(void) int num; do printf("input a number :" ); scanf ("%d",&num); while ( num % 3 == 0 ); printf("%d %d = %d n", num, num, func1( num ) ); return 0; /* 関数 func1 の本体 */ int func1( int n ) return n * n; 10 進数フォーマット (%d) で,num という変数をキーボードから入力します.scanf は標準関数です.num の前に & を忘れずに. 引数 (=n) を 2 乗した結果を返し (return) ます. 例えば, int answer; answer = n * n; return answer; などとしてももちろん可です. 画面には例えば 10 10=100 などと表示されます (num=10 の場合 ). 2

平成 24 年度講義 アルゴリズムとデータ構造 第 3 回変数のスコープルール 関数 第 3 回の始まり 有効範囲 ( スコープ ) 変数のスコープルール 関数 プログラミング言語においては, 手続きや変数の有効範囲が厳密に決められる 大域的 局所的 C における名前 ( 関数, 変数 ) の有効範囲の一般規則 プログラムの字面の範囲 でみた有効範囲 ^^^^ どのように関数呼出が組み合わされるか という動的な振舞は無関係. プログラムを見るだけでわかる. ブロック先頭で宣言される名前 内部変数 : ここで定義される変数 重要 : ブロックの内部だけで有効 ブロック内は 外から見えない ブロックの内外に同じ変数があるときには, 内側の変数だけがみえる 宣言文 1 文 2 : int func1( int n1,int n2 ) int a, b; この関数の外からは代入や参照をすることが出来ない. 関数の本体はブロック 関数の始めで定義される変数は関数内部だけで有効 ブロックは内側から外は見えるが, 外から内側が見えないようにする ハーフミラー? ブロック ( 関数 ) の内側 関数自身 : ソースファイル ( プログラムを記述したファイル ) 内で宣言された点からそのファイルの終わりまで C ではある関数で局所的に定義される関数はない 宣言されていない関数は,int 型の関数として暗黙の宣言がなされる cf. 関数のプロトタイプ宣言 関数の仮引数 ( パラメータ ) は関数内部だけで有効 外部変数 : どの関数にも属さない共通の変数. ソースファイル内で宣言された点からファイルの終わりまで. 3

平成 24 年度講義 アルゴリズムとデータ構造 第 3 回変数のスコープルール 関数 自動変数 ( 内部変数 ) と外部変数の違い ~ 時間軸 で見た有効範囲の差 ~ 自動変数 : 関数の始め ( ブロックの始め ) で定義される変数. 通常その関数 ( ブロック ) に制御が移るたびに生成され, 関数 ( ブロック ) を終了すると, 消滅 (cf. static 宣言 ) 外部変数 : すべての関数の外で定義される変数. 一回だけ生成され, 常に存在 宣言と定義 static 宣言 ( 静的変数, 静的関数 ) 内部変数に対する宣言. ブロックを抜けても 消滅せず, 値を保持. 外部変数, 関数に対する宣言 宣言以降に限定し, 別ファイルからは見えなくなる. 外部的な名前 ( 変数や関数 ) に関しては区別される 宣言 : 性質のみを述べる. 実体はなし. 定義 : 実体を伴う. 記憶割当. 一つの名前に対して一度だけ 通常の外部変数の宣言では定義が伴う. 宣言だけを行なう場合 ( 複数のファイルに共通する変数など ) は extern 宣言を行なう. 内部変数では定義と宣言が同一 ( 定義という概念がない ) 変数の初期化 宣言において変数の値を設定できる. int a = 10; float f = 1.1; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 スコープの例 --- scope.c /**************************************************************** アルゴリズムとデータ構造サンプルプログラム scope.c << 変数のスコープ >> copyright (c) 1995,96,97 T.Mori <mori@forest.dnj.ynu.ac.jp> ****************************************************************/ #include <stdio.h> /* 外部変数の定義 */ /* 一番外側にある */ int a = 3; /* 関数の宣言 *//* 一番外側にある */ int f( int x ); void f_auto(void); void f_static(void); /* 関数 main の定義 *//* 一番外側にある */ int main(void) a = 4 になった. int b; a = a + 1; これらは異なる変数! b = 3; printf("main: a == %d, b == %d n", a, b); int a; /* 自動変数 *//* main の中の一つのブロックにある */ a = 2; printf("main:block: a == %d, b == %d n", a, b); printf("main:block: f(a) == %d n", f(a)); 4

平成 24 年度講義 アルゴリズムとデータ構造 第 3 回変数のスコープルール 関数 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 printf("main: a == %d, b == %d n", a, b); /* 自動変数と静的変数の違い */ f_auto(); f_auto(); 第 52~55 行の結果に対応している. f_static(); f_static(); return 0; /* 関数 f の定義 */ int f( int b ) /* 仮引数 b は関数 f の中で新たに宣言 */ printf("f: a == %d, b == %d n", a, b); /* a は外部変数の方 */ b = b + a; a = a + 5; この代入文で外部変数の値が変わる! printf("f: a == %d, b == %d n", a, b); return b; /* b の値を関数の値として返す */ /* 自動変数を内部に持つ関数 */ void f_auto(void) int x = 0; /* 自動変数 x の初期化 */ x = x + 1; printf("f_auto: x == %d n", x); /* 静的変数を内部に持つ関数 */ この関数が初めて呼ばれたときだけ初期化される void f_static(void).(static) static int x = 0; /* 静的変数 x の初期化 */ x = x + 1; printf("f_static: x == %d n", x); 実行結果 main: a == 4, b == 3 main:block: a == 2, b == 3 f: a == 4, b == 2 f: a == 9, b == 6 main:block: f(a) == 6 main: a == 9, b == 3 f_auto: x == 1 f_auto: x == 1 f_static: x == 1 f_static: x == 2 この関数が呼ばれるたびに初期化される! だからここでは毎回 f_auto:x == 1 と表示される. 前回呼ばれたときのこの変数 x の値に 1 が加わる. だから 2 回目に呼ばれたときは 2 になる.! 自分で考えて, 書き入れて下さい. 5

平成 23 年度講義 アルゴリズムとデータ構造 第 3 回変数のスコープルール 関数 次の図は scope.c の変数のスコープが分るように書いた図です. 参考にして下さい. 変数宣言 a 関数 main () 変数宣言 b a = a + 1; b = 3; 変数宣言 a a = 2; printf(..., a,b); printf(..., f(a)); printf(..., a, b); f_auto(); f_auto(); f_static(); f_static(); 関数 f ( 変数宣言 b) printf(..., a, b); b = b + a; a = a + 5; printf(..., a, b); 関数 f_auto () 変数宣言 x = 0; x = x+1; printf(..., x); 関数 f_static () 変数宣言 ( 静的 ) x = 0; x = x+1; printf(..., x); 再帰呼び出し ある手続き / 関数の中から自分自身を呼び出す. 自動変数があるので可能. 呼出のたびに別の領域が変数に割り当てられる. 数学的帰納法などにより解を求める場合などに使う 例 --- fact.c 再帰を使って階乗を求める.( 再帰に関するアルゴリズムはあらためて取り扱う ) 6

平成 23 年度講義 アルゴリズムとデータ構造 第 3 回変数のスコープルール 関数 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 /**************************************************************** アルゴリズムとデータ構造サンプルプログラム fact.c << 簡単な再帰呼出 >> copyright (c) 1995,96,97 T.Mori <mori@forest.dnj.ynu.ac.jp> ****************************************************************/ #include <stdio.h> fact( 3 ) で関数 fact に行く. すなわち引数 int fact( int n ); n=3 である.n > 0 なので,fact( 3 1 ) すなわち fact(2) が実行される. int main(void) まだ n > 0 なので fact(1) が実行される. int k=3; まだ n > 0 なので fact(0) が実行される. このときは n > 0 ではないので,fn = 1 を... printf("fact(%d) == %d n", k, fact(k) ); 戻す. いもづる式に 3 2 1をしたこ return 0; とになる. fn = 3 * fact( 2 ) /* 階乗を求める */ = 3 * ( 2 * fact( 1 ) ) int fact(int n) = 3 * ( 2 * ( 1 * fact( 0 ) ) = 3 * ( 2 * ( 1 * 1 ) ) fact(0) = 1 int fn; = 3 * ( 2 * 1 ) printf("call: fact(%d) n",n); = 3 * 2 * 1 = 6 if (n>0) fn = n*fact(n-1); else fn = 1; printf("return: fact(%d) == %d n",n,fn); return fn; Call: fact( 3 ) Call: fact( 2 ) Call: fact( 1 ) Call: fact( 0 ) Return: fact( 0 ) == 1 Return: fact( 1 ) == 1 Return: fact( 2 ) == 2 Return: fact( 3 ) == 6 fact( 3 ) == 6 自分で考えて, 書き入れて下さい. 7

平成 23 年度講義 アルゴリズムとデータ構造 第 3 回変数のスコープルール 関数 注意 : 下の図の枠は先ほどのブロックの入れ子と違うので注意. 関数の実行順序に従って変数の値を示したものである. 自動変数の 時間軸 でみた有効範囲が理解の鍵である. main() k 3 fact (k==3) fact (int n 3) int fn fact(n-1 (==2)) fact (int n 2) int fn fact(n-1 (==1)) fact (int n 1) int fn fact(n-1 (==0)) fact (int n 0) int fn fn 1 return fn(==1) fact(n-1 (==0))== 1 fn = n * fact(n-1) = 1 * 1 = 1 return fn(==1) fact(n-1 (==1)) == 1 fn = n * fact(n-1) = 2 * 1 = 2 return fn(==2) fact(n-1 (==2)) == 2 fn = n * fact(n-1) = 3 * 2 = 6 return fn(==6) fact(k (==3)) == 6 時間軸 再帰呼び出しは, 慣れるまではなかなか理解できずに, 頭がパニックになってしまうかも知れません. 最初は誰でもそうなのです. 何回か使ううちに, 使い方がわかるようになります. 習うより慣れろです. 8

平成 23 年度講義 アルゴリズムとデータ構造 第 3 回変数のスコープルール 関数 C 言語のプログラムって, 大体こんな感じです... #include<stdio.h> #include<math.h> 必要なヘッダファイル (.h で終わるファイル ) のインクルードなど. int number; 外部変数の宣言 ( 常に存在し, どこからでも参照 代入することができる ) int func1( int num ); float func2( int n1, double d1 ); 関数のプロトタイプ宣言 ( ここで用いる関数のリスト. 関数の冒頭部分に ; をつけたもの ) int main(void) int a, b; float f1; double d1; a = func1( b ); f1 = func2( a, d1 ); return 0; int func1( int num ) int p1,p2; return p1; main 関数 1 番目の関数 float func2( int n1, double d1 ) float c1; 2 番目の関数 return c1; プログラム中に 1 つだけある主関数 これらの変数はその関数内でしか使えない変数. プログラムを書くときに, どのような関数を使えば良いのかは, 対象となる問題に応じてプログラマが考えることです. 慣れれば, どのような部分を関数にすれば構造的に分かり易いプログラムになるかわかるようになります. とにかく, たくさんプログラムを書いて下さい. プログラミングは語学に似ています. 色々な表現が身につけば, 話すのも楽に成ります. それにはとにかく場数を踏むことです. 必要な関数が必要な数だけ並んでいる. 3 番目の関数 関数はこうしなければならないのではなく, こんな風にすることもできる, と考えましょう. 要は道具の一つと思えばよいのです. 9

平成 23 年度講義 アルゴリズムとデータ構造 第 3 回変数のスコープルール 関数 演習問題 1 ( この中からランダムに出題しますのでワークシートに回答して下さい ) 1-1 2 つの引数 n1,n2( ともに int 型 ) を与えると, それらの値の差 ( 正の数 ) を返す関数 dif を絶対値関数 abs は使わないで作りなさい ( ヒント : なし ) 1-2 任意の正の整数 n(int 型 ) を与えると, フィボナッチ数 F n を返す関する fibo を再帰を用いて作りなさい. ( ヒント : フィボナッチ数 F n とは, フィボナッチ数列を作る数であり,n=1 または n=2 のとき F n =1,n が 3 以上のとき F n = F n-1 + F n-2 で定義される数である ) 1-3 1-2 のプログラムを使って,n=1 から n=10 までのフィボナッチ数 F n を画面に表示するプログラムを作りなさい.( ヒント : なし ) 1-4 乱数で 100 以下の正の整数を発生させて, それを当てる 数当てゲーム を作りなさい. 例えば実行時は次のような感じです. number = 40 小さいよ number = 80 大きいよ number = 55 当たり! ( ヒント :stdlib.h と time.h をインクルードすると, 次のようにして,int 型変数 ans に 100 以下の正の整数がランダムに入力することができます. int ans; srand(time(null)); ans = (int)(100.0 * rand() / 32768.0); 次回 配列を扱うアルゴリズムの基礎 (1). 最大値, 最小値 10