今週は,今期前半に学習した内容を,演習問題を通しておさらいしよう。
キーワード:「文字列」「関数の使い方」「関数の定義」「配列の受け渡し」「アドレス渡し」「ファイル入出力」
(1−1) キーボードから入力した文字列(100文字以下とする)を,画面に表示するプログラムを作成せよ。
(1−2) キーボードから入力した文字列(100文字以下とする)を,順番を逆にして画面に表示するプログラムを作成せよ。(入力:abc,出力:cba)
(1−3) キーボードから入力した小文字の文字列(100文字以下とする)を,すべて大文字に変換するプログラムを作成せよ。(入力:abc,出力:ABC)
(2−1) キーボードから文字列(100文字以下とする)を入力すると,入力された文字数を画面に表示するプログラムを作成せよ。
(2−2) 入力された文字列を渡すと,文字数を返す関数を作成し,上記プログラムを作成せよ。
(3−1) 変数 a と b の値を入れ替えるプログラムを作成しなさい。
void main()
{
int a=10; /* 整数1 */
int b=4; /* 整数2 */
int tmp; /* 仮の変数 */
printf("a=%d, b=%d¥n", a, b);
printf("変数aと変数bを入れ替えます¥n");
/* ココのプログラムを考える。用意した仮の変数を利用する。 */
printf("a=%d, b=%d¥n", a, b);
}
(3−2) 変数 a と b の値を入れ替える swap() 関数を作成し,プログラムを完成させよ。
void main()
{
float a=2.0, b=3.0;
printf("a=%f, b=%f¥n", a, b);
swap(&a, &b);
printf("a=%f, b=%f¥n", a, b);
}
(4−1) 実数型配列の要素をキーボードから10個入力し,配列の中身を表示するプログラムを完成させなさい。
void input(float p[], int n)/*キーボードからの入力*/
{
int i;
for(i=0;i<n;i++){
printf("%d番目のデータ=", i);
scanf("%f",????);
}
}
void output(float p[], int n)/*配列の表示*/
{
int i;
for(i=0;i<n;i++){
printf("%d番目のデータ=%f¥n", i, ??????);
}
}
void main()
{
float data[10];
input(????, ????);
output(????, ????);
}
(4−2) 実数型配列の要素をファイルから読み取り,平均値,最大値と最小値を算出する関数を作成せよ。
void main()
{
int n; /* 配列のデータ数 */
float data[1000]; /* 配列 */
float ave, max, min;
n = loaddata("sin.csv", data); /* ファイルから配列にデータを読み込み,データ数を返す関数 */
printf("平均値 = %f¥n", average(data, n)); /* 平均値を算出する関数 */
max_min(data, n, &max, &min); /* 最大値と最小値を算出する関数 */
printf("最大値 = %f, 最小値 = %f¥n", max, min);
}
(4−3) これまでに作成した関数を利用して,ファイルから読み込んだデータを大きい順に並べ替えて,画面に表示するプログラムを作成せよ。