ほぷしぃ

納得C言語!

[第8回]演習問題U 第2問の解答

演習問題U 第2問の解答


2 6回の練習問題で作ったプログラムを改良してみよう!

解答プログラム

#include <stdio.h>

//プロトタイプ宣言
int add(int i,int n);
int sub(int i,int n);
int mul(int i,int n);
int div(int i,int n);

int main()
{
    int s = 0,a = 0,b = 0,c = 0;    //変数の宣言と初期化

    while(1){
        printf("\n簡易計算機\n");
        printf("加算=>1, 減算=>2 ,乗算=>3 ,除算=>4 ,終了=>0\n");
        printf("\nどの計算をしますか =");
        scanf("%d",&s);

        if(s == 0){    //s == 0 の場合break で抜ける
            printf("終了します\n");
            break;
        }

        printf("数値Aを入力してください=");
        scanf("%d",&a);
        printf("数値Bを入力してください=");
        scanf("%d",&b);

        switch(s){
            case 1:
                //入力した値a,bを関数add()に引数として渡し、返ってきた結果をcに代入
                c = add(a,b);
                printf("加算A+Bの答えは%d\n",c);
                break;

            case 2:
                //入力した値a,bを関数sub()に引数として渡し、返ってきた結果をcに代入
                c = sub(a,b);
                printf("減算A-Bの答えは%d\n",c);
                break;

            case 3:
                //入力した値a,bを関数mul()に引数として渡し、返ってきた結果をcに代入
                c = mul(a,b);
                printf("乗算A*Bの答えは%d\n",c);
                break;

            case 4:
                //入力した値a,bを関数div()に引数として渡し、返ってきた結果をcに代入
                c = div(a,b);
                printf("除算A/Bの答えは%d\n",c);
                break;

            default:
                printf("数値が正しくありません\n");
        }
    }
    return 0;
}

int add(int i,int n)    //自作関数add
{
    int kai;
    kai = i + n;        //加算
    return kai;         //kaiを返す
}

int sub(int i,int n)    //自作関数sub
{
    int kai;
    kai = i - n;        //減算
    return kai;         //kaiを返す
}

int mul(int i,int n)    //自作関数mul
{
    int kai;
    kai = i * n;        //乗算
    return kai;         //kaiを返す
}

int div(int i,int n)    //自作関数div
{
    int kai;
    kai = i / n;        //除算
    return kai;         //kaiを返す
}

解説

何度も計算させる場合はwhile文で無限ループを作ってしまいます。
また、ループから抜ける場合はif文で0が入力されたかを判定しbreakを使用します。
自作関数ですが、今回は計算結果をmain関数に返しているのでint型を宣言します。
また、自作関数を作成する場合にはmain関数より前でプロトタイプ宣言をする必要があるので、忘れないようにしましょう。


あとがき

お久しぶりです。その後C言語学習はいかがですか?
この学習項目もついに8回です!やっと学習コンテンツの折り返し・・・ではないですね。
4合目到達と言ったところでしょうか。
「難しいな」と思っている方も少なくないと思います。
事実私もC言語学習当初はまったく分かりませんでした(てへっ
ですがプログラムを沢山書いたり、自分でプログラムを作成していくうちに「難しい」から「面白い」に変わりました。
今、「うーん難しい」と思っている方はもう少しがんばってみましょう!


ヒント ページのトップ  [第9回]変数のスコープ