ほぷしぃ

納得C言語!

[第7回]制御構文(解答)

(1)解答

解答プログラム

//数値を入力してそれが正数か負数かの判別するプログラム
#include <stdio.h>

int main()
{
    int i = 0;

    printf("正負判別プログラムです数値を入力してください\n");
    scanf("%d",&i);

    if(i >= 0)                //iが0以上ならば
    {
        printf("入力された数値は正数です\n");
    } else {                  //それ以外ならば
        printf("入力された数値は負数です\n");
    }
    return 0;
}

解説

if文を使用しています。
入力された数値が0以上であれば正数と表示し、それ以外は負数と表示させていますね。


(2)解答

解答プログラム

#include <stdio.h>

int main()
{
    int i = 0 ,s = 0 ,c = 0;

    printf("数値を入力してください\n");
    scanf("%d",&i);
    for(s = 1; s <= i; s++){    //sに1を代入、sがi以上になるまで、sに1を足す
        c = c + s;      //c += s; と書き換えることもできる
    }

    printf("1〜%dまでの合計は%dです\n", i, c);
    
    return 0;
}

解説

ここではfor文を使います。
for文の中で使う変数sの宣言を忘れないでつけていますか?
また、()の中の区切りは「,」ではなく「;」です。
慣れないうちはよく間違えるので、気をつけてくださいね。


(3)解答

解答プログラム

#include <stdio.h>

int main()
{
    int i = 0 ,s = 1 ,l = 0;
    printf("数値を入力してください\n");
    scanf("%d",&i);

    while(s <= i){  //sがi以上になるまで
        l = l + s;
        s++;        //sに1を足す
    }
    printf("1〜%dの合計は%dです\n",i,l);

    return 0;
}

解説

for文をwhile文に書き直しただけですね。
while文の()の中は「真」の間中の処理を行っています。


(4)解答

解答プログラム

#include <stdio.h>

int main()
{
    // switch用変数
    int sel = 0;

    printf("1:コーヒー、2:コーラ、3:紅茶、4:野菜ジュース\n");
    printf("あなたのお好みは?=");
    scanf("%d",&sel);
    
    switch(sel){
        // 1が入力された場合
        case 1:
            printf("種類:コーヒー\n値段:100円\n");
            break;

        // 2が入力された場合
        case 2:
            printf("種類:コーラ\n値段:120円\n");
            break;

        // 3が入力された場合
        case 3:
            printf("種類:紅茶\n値段:105円\n");
            break;

        // 4が入力された場合
        case 4:
            printf("種類:野菜ジュース\n値段:130円\n");
            break;

        // それ以外が入力された場合
        default:
            printf("お気に召しませんでしたか?\n");
            break;
    }
    return 0;
}

解説

switch用の変数は用意できていましたか?
caseで振り分けたとき、breakでswitch文から抜けるのを忘れると、それ以降のものが表示されてしまいますね・・・
break文を入れる癖をつけておくといいでしょう。


[第7回]制御構文 ページのトップ [第8回]演習問題II