第6回 練習課題
練習課題1
1.以下を実行し、配列変数を理解せよ。
-------------------
#include < stdio.h >
void main()
{
int i;
int data[10]={1,2,3,4,5,6,7,8,9,10};
for ( i=0 ; i<10 ; i++ )
{
printf("data[%d]=%d\n",i,data[i]);
}
printf("\n");
data[3] = 100;
data[8] = 1000;
for ( i=0 ; i<10 ; i++ )
{
printf("data[%d]=%d\n",i,data[i]);
}
}
-------------------
2.printfで表示する範囲を 0≦i<10 から、0≦i<12 に変更して表示させてみよ。
練習課題2
以下のプログラムを実行せよ
-------------------
#include < stdio.h >
void main()
{
int i;
double data[5];
data[0] = 5.0;
data[1] = 5.0;
data[2] = 11.2;
data[3] = 2;
data[4] = 2.9;
data[5] = 10.00;
for ( i=1 ; i<=5 ; i++ )
{
printf("data[%d]=%lf \n",i,data[i]);
}
}
1.間違いを修正せよ。
練習課題3
1.以下のプログラムを実行せよ。
-------------------
#include < stdio.h >
void main()
{
int i,a;
int data[5];
int sum;
double average;
printf("5つの整数を入力してください\n");
for ( i=0 ; i<5 ; i++ )
{
printf("%dつ目を入力してください:",i+1);
scanf("%d",&data[i]);
}
printf("入力された数:%d,%d,%d,%d,%d \n", data[0], data[1], data[2], data[3], data[4]);
sum = 0;
for ( i=0 ; i<5 ; i++ )
{
sum = sum + data[i];
}
average = sum / 5.0;
printf("平均値=%f\n",average);
}
-------------------
2.平均値に加えて、最大値、最小値を表示するようにせよ。
練習課題4
以下のプログラムは未完成である。次の仕様を満たすようにプログラムを完成させよ。
- 10名分の点数(試験結果)を入力する。
- 点数は0点以上100点以下の整数である。
- 以下の式に従って点数を補正する。
(新しい点数)={50×(元の点数−最低点)/(最高点−最低点)}+50
- ただし、最高点と最低点は同じでないと仮定してよい。
- 表示結果は、表示例のようにすること。
-------------------
#include < stdio.h >
#define NUM 10
void main()
{
int i;
int score[NUM];
float new_score[NUM];
int max_score, min_score;
for ( i=0 ; i < NUM ; i++ )
{
printf("%d人目の点数:",i+1);
scanf("%d",&score[i]);
}
≪ここを書く≫
}
-------------------
------表示例-------
1人目の点数:25
2人目の点数:39
3人目の点数:42
4人目の点数:76
5人目の点数:35
6人目の点数:48
7人目の点数:81
8人目の点数:41
9人目の点数:74
10人目の点数:55
最高点:81 最低点:25
1人目:25 → 50.000000
2人目:39 → 62.500000
3人目:42 → 65.178574
4人目:76 → 95.535713
5人目:35 → 58.928570
6人目:48 → 70.535713
7人目:81 → 100.000000
8人目:41 → 64.285713
9人目:74 → 93.750000
10人目:55 → 76.785713
続行するには何かキーを押してください . . .
-------------------
練習問題5
以下の式で意義される数列a(n)の1項目から10項目を配列に格納し,表示せよ
練習問題6
以下の式で意義される数列a(n)の1項目から10項目を配列に格納し,表示せよ
練習問題7
以下の式で意義される数列a(n)の1項目から10項目を配列に格納し,表示せよ
- a(1)=2
- a(2)=6
- a(n+2)=a(n+1)+a(n)*2-3
練習問題8
フィボナッチ数列の最初の10項を配列に格納し,表示するプログラムを作成せよ
フィボナッチ数は
- F(0)=0
- F(1)=1
- F(n+2)=F(n)+F(n+1) (N>=0)
で表される数である
練習問題9
1.5列の数列を用意し数字を入力させよ.数字を昇順に並び替えるプログラムを作成せよ
2.格納数を可変にせよ
------表示例-------
格納数を入力してください:3
1つ目の数を入力してください:10
2つ目の数を入力してください:25
3つ目の数を入力してください:3
入力された数は 3,10,25 です
-------------------
ヒント:ソートについて
提出課題(基本課題)
以下のようなプログラムを作成せよ。
- 10名分の点数を入力する。
- 点数は0以上100以下の整数とする。
- 上位3名を合格とし、合格者が何人目かを表示する。
- 同じ点数はないと仮定してよい。
- 実行画面は表示例に従う。
------表示例-------
1人目の点数:25
2人目の点数:39
3人目の点数:42
4人目の点数:76
5人目の点数:35
6人目の点数:48
7人目の点数:81
8人目の点数:41
9人目の点数:74
10人目の点数:55
合格者:7人目 4人目 9人目
-------------------
ヒント(簡単なやり方)
以下のように最高点を3回求めれば良い。
1.最高点を求める
2.最高点に該当するデータに0点を代入する
3.1と2を3回くりかえす。
ヒント(難しいやり方)
点数をソート(高い順に並び変える)し、上位3名を表示すれば良い。
提出課題(発展課題)
以下のようなプログラムを作成せよ。
- 5名分の数学の点数と英語の点数を入力する。
- 以下の計算式に基づいて合計点数を計算する。
- (合計点数)=(数学の点数)×1.2 + (英語の点数)×0.8
- 上位2名を「合格(A)」とする。
- 上記合格者以外について、以下の計算式に基づいて合計点を再計算する。
- (合計点数)=(数学の点数)×0.8 + (英語の点数)×1.2
- 上位2名を「合格(B)」とする。
- つまり、不合格者は1名のみとなる。
- 同じ合計点数はないと仮定してよい。
- 実行画面は表示例に従う。
------表示例-------
1人目の数学の点数:10
2人目の数学の点数:80
3人目の数学の点数:30
4人目の数学の点数:50
5人目の数学の点数:100
1人目の英語の点数:90
2人目の英語の点数:100
3人目の英語の点数:70
4人目の英語の点数:60
5人目の英語の点数:50
合格(A):2人目 5人目
合格(B):1人目 4人目
不合格:3人目
-------------------