計算機科学のブログ

C - Cを始める - Cの世界に飛び込む - 条件分岐

Head First C ―頭とからだで覚えるCの基本David Griffiths(著)、 Dawn Griffiths(著)、 中田 秀基(監修)、 木下 哲也(翻訳)、 O’Reilly Media)の 1章(Cを始める - Cの世界に飛び込む)、p.19(エクササイズ)の解答を求めてみる。

Makefile

all: a.out
	./a.out

a.out: main.c
	cc main.c

コード

main.c

#include <stdio.h>
#include <stdlib.h>
int main()
{
    char card_name[3];
    puts("カード名を入力していください:");
    scanf("%2s", card_name);
    int val = 0;
    if (card_name[0] == 'K')
    {
        val = 10;
    }
    else if (card_name[0] == 'Q')
    {
        val = 10;
    }
    else if (card_name[0] == 'J')
    {
        val = 10;
    }
    else if (card_name[0] == 'A')
    {
        val = 11;
    }
    else
    {
        val = atoi(card_name);
    }
    if (3 <= val && val <= 6)
    {
        puts("カウントが増えます。");
    }
    else if (val == 10)
    {
        puts("カウントが減ります。");
    }

    printf("カードの値:%i\n", val);
}

入出力結果(Terminal, Zsh)

 % make
cc main.c
./a.out
カード名を入力していください:
2
カードの値:2
% make
./a.out
カード名を入力していください:
3
カウントが増えます。
カードの値:3
% make
./a.out
カード名を入力していください:
4
カウントが増えます。
カードの値:4
% make
./a.out
カード名を入力していください:
5
カウントが増えます。
カードの値:5
% make
./a.out
カード名を入力していください:
6
カウントが増えます。
カードの値:6
% make
./a.out
カード名を入力していください:
7
カードの値:7
% make
./a.out
カード名を入力していください:
9
カードの値:9
% make
./a.out
カード名を入力していください:
10
カウントが減ります。
カードの値:10
% make
./a.out
カード名を入力していください:
Jack
カウントが減ります。
カードの値:10
% make
./a.out
カード名を入力していください:
Queen
カウントが減ります。
カードの値:10
% make
./a.out
カード名を入力していください:
King
カウントが減ります。
カードの値:10
% make
./a.out
カード名を入力していください:
Ace
カードの値:11
%