2011年11月1日 湘南工科大学 情報理論2 第4回 小林 学 〒251-8511 神奈川県藤沢市辻堂西海岸1-1-25 Tel. 0466-30-0232(直通) Fax. 0466-34-5932 [email protected] [前回の課題2] Page 2 (1) double 型の配列 x[5] を用意し,それぞれにキーボードから数 字を入力する. (2) double 型の変数 sum を用意し,x[0]~x[4] の和を計算. (3) double 型の変数 ave を用意し, x[0]~x[4] の平均を計算. (4) double 型の変数 sig を用意し, x[0]~x[4] の分散を計算. (5) sum,ave,sig をそれぞれ表示するプログラム作成 [参考] 入力が 4 1 5 7 3 のとき sum = 4 + 1 + 5 + 7 + 3 = 20 ave = sum / 5 = 4 sig =( (4–ave)2+ (1–ave)2+ (5–ave)2+ (7–ave)2+ (3–ave)2 ) / 5 =4 [前回の課題2の解答例] Page 3 #include<stdio.h> void main(void){ int i; double x[5], sum, ave, sig; printf("配列x:"); for(i=0;i<5;i++) scanf("%lf", &x[i]); sum = 0; for(i=0;i<5;i++) sum += x[i]; //和 ave = sum / 5; //平均 sig = 0; for(i=0;i<5;i++) sig += (x[i]-ave)*(x[i]-ave); sig = sig / 5; }} printf("sum=%f, ave=%f, sig=%f\n", sum, ave, sig); Page 4 [前回の課題3] (1) 100項までのフィボナッチ数列を表示するプログラム作成 フィボナッチ数列とは以下のように続く数列 0 1 1 2 3 5 8 13 21 34 55 89 144 (2) 100項までのフィボナッチ数列の和を表示するプログラム作成 [参考] フィボナッチ数列は,前の2項の和 0 13 = 5 1 21 = 8 1 = 0 + 1 34 = 13 2 = 1 + 1 55 = 21 3 = 1 + 2 89 = 34 5 = 2 + 3 144 = 55 8 = 3 + 5 233 = 89 + 8 + 13 + 21 + 34 + 55 + 89 + 144 [前回の課題3の実行例] Page 5 [前回の課題3の解答例] #include<stdio.h> void main(void){ int i, fibo[41], sum=0; fibo[0] = 0; fibo[1] = 1; for(i=2;i<=40;i++){ fibo[i] = fibo[i-1] + fibo[i-2]; sum += fibo[i]; printf("fibo[%d]=%d\n", i, fibo[i]); } } printf("sum=%d", sum); Page 6 Page 7 [前回の課題1] int DataNo=0; int Data[5]; :データの数を表す int 型変数 :データを格納する int 型配列 (1) 上の定義に対して,以下の命令を実行したときの配列Data の内容と DataNo の変化,画面出力を示しなさい Input(2) → Output → Input(4) → Input(7) → Output (2) (1)と同様に,以下の結果を示しなさい Input(4) → Input(12) → Input(22) → Output → Output → Output Page 8 [前回の課題1の解答] (1) Data [0] [1] [2] [3] [4] DataNo 画面出力 0 Input(2) 1 2 Output 0 Input(4) 4 1 2 Page 9 Data [0] 4 [1] [2] [3] [4] DataNo 画面出力 1 Input(7) 4 2 7 Output 4 1 7 Page 10 [前回の課題1の解答] (2) Data [0] [1] [2] [3] [4] DataNo 画面出力 0 Input(4) 1 4 Input(12) 4 2 12 Input(22) 4 12 3 22 Output 4 12 2 22 Page 11 Data [0] 4 [1] [2] [3] 12 [4] DataNo 画面出力 2 Output 4 1 12 0 4 Output [前回の課題4] スタック構造を実現するプログラムを作成しなさい [実行例] Page 12 [前回の課題4の解答] #include<stdio.h> void main(void){ int select, i, DataNo=0, Data[5], input; while(1){ printf("\nInputならば0,Outputならば1を入力:"); scanf("%d",&select); if(select==0){ printf("入力データ:"); scanf("%d",&input); Data[DataNo] = input; DataNo++; }else{ DataNo--; printf("出力:%d\n",Data[DataNo]); } printf("Data="); for(i=0;i<DataNo;i++) printf(" %d",Data[i]); } } Page 13 [例題1] 次のプログラムの変数の値をトレースしなさい #include<stdio.h> void main(void){ int i, siki; } for(i=0;i<5;i++){ siki = 2*i; printf("%d\n", siki); } Page 14 [解答] 変数の値 i siki 0 1 2 3 4 0 2 4 6 8 画面出力 0 2 4 6 8 [課題1] 次のプログラムの変数の値をトレースしなさい #include<stdio.h> void main(void){ int i, siki; } for(i=0;i<5;i++){ siki = 2*i+1; printf("%d\n", siki); } Page 15 [解答] 変数の値 i 0 1 2 3 4 siki 画面出力 [例題2] 次のプログラムの変数の値をトレースしなさい #include<stdio.h> void main(void){ int i, siki, data[5]; } for(i=0;i<5;i++){ data[i] = 3*i+1; printf("%d\n", data[i]); } Page 16 [解答] 変数の値 i data[i] 0 1 2 3 4 1 4 7 10 13 画面出力 1 4 7 10 13 [課題2] 次のプログラムの変数の値をトレースしなさい #include<stdio.h> void main(void){ int i, siki, data[5]; } for(i=0;i<5;i++){ data[i] = 2*i+2; printf("%d\n", data[i]); } Page 17 [解答] 変数の値 i 0 1 2 3 4 data[i] 画面出力 [例題3] 次のプログラムの変数の値をトレースしなさい #include<stdio.h> void main(void){ int i, siki, data[5]; } for(i=0;i<5;i++) data[i] = i+7; for(i=0;i<3;i++){ siki = 2*i; printf(“%d\n”, data[siki]); } (注意)変更のない変数は 書かなくてよい Page 18 [解答] 変数の値 i data[i] siki 0 7 1 8 2 9 3 10 4 11 0 0 1 2 2 4 画面出力 7 9 11 [課題3] 次のプログラムの変数の値をトレースしなさい #include<stdio.h> void main(void){ int i, siki, data[5]; } for(i=0;i<5;i++) data[i] = 3*i; for(i=0;i<3;i++){ siki = i+2; printf(“%d\n”, data[siki]); } (注意)変更のない変数は 書かなくてよい Page 19 [解答] 変数の値 i data[i] siki 0 1 2 3 4 0 1 2 画面出力 [例題4] 次のプログラムの変数の値をトレースしなさい #include<stdio.h> void main(void){ int i, data[5]; } for(i=0;i<5;i++) data[i] = i+7; for(i=0;i<4;i++){ data[i] = data[i+1]; printf(“%d\n”, data[i]); } (注意)変更のない変数は 書かなくてよい Page 20 [解答] 変数の値 i 0 1 2 3 4 0 1 2 3 data[i] 7 8 9 10 11 8 9 10 11 画面出力 8 9 10 11 [課題4] 次のプログラムの変数の値をトレースしなさい #include<stdio.h> void main(void){ int i, data[5]; } for(i=0;i<5;i++) data[i] = 3*i; for(i=0;i<3;i++){ data[i] = data[2*i]; printf(“%d\n”, data[i]); } (注意)変更のない変数は 書かなくてよい Page 21 [解答] 変数の値 i 0 1 2 3 4 0 1 2 data[i] 画面出力
© Copyright 2025 ExpyDoc