第6回:関数(3) (6/8)


今週は,関数のまとめです。先週までの内容を良く復習して,チャレンジしてください。

キーワード:「平均値」「ソート」「文字列の長さ」「偏差値」


(1)変数 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);
}

(2)関数を用いて実数型配列の要素をキーボードから10個入力及び配列の中身表示プログラムを作成せよ。
*ただし,□に必ずしも記号が入るとは限らない。



void input(float □p, int □n)/*キーボードからの入力*/
{
    int i;

    for(i=0;i<n;i++){
        printf("data[%d]=",i);
        scanf("%f",□p+i);
    }
}

void output(float □p, int □n)/*配列の表示*/
{
    int i;

    for(i=0;i<n;i++){
        printf("data[%d]=%f¥n",i,□(p+i));
    }
}

void main()
{
    float data[10];

    input(□data,□10);

    output(□data,□10);
}


(3)実数型配列の要素をキーボードから10個入力する,平均値を算出する,大きい順に並び替え(ソート)る,配列の中身を表示する 各関数を作成せよ。
ヒント:上の二つの問題を用いるとわかりやすいプログラムが出来る。



void main()
{
    float data[10];

    input(data,10);                            /* 10個の要素を入力する関数*/

    printf("平均値 = %f¥n",average(data,10));   /* 平均値を算出する関数 */


    sort(data,10);                             /* 大きい順に並び替える関数 */

    output(data,10);                           /* 配列の中身を出力する関数 */
}

(4)キーボードから文字列を入力すると,文字数を数えて値を返す関数を作成せよ.

ヒント:


#include <stdio.h>
int moji_nagasa(char *str)	
{
    ...

}

void main()
{
    char str[128];

    printf("文字列を入力してください:");
    scanf("%s", str);

    printf("入力された文字列は,%sです.", str);
    printf("文字数は,%dです.", moji_nagasa(str));

}

(5)整数型配列に成績データである得点を入力する,偏差値を計算する,それぞれの番号の得点と偏差値を全て表示する,各関数を作成し,偏差値を表示するプログラムを作成せよ。成績データは以下に示す表を使用せよ。

配列データ

偏差値は,以下の式から求めることが出来る。
平方根の計算には,sqrt()関数を利用する。sqrt()関数を利用するには, math.hをインクルードする必要がある。

偏差値