C - Cを始める - Cの世界に飛び込む - do-whileループ
Head First C ―頭とからだで覚えるCの基本、 David Griffiths(著)、 Dawn Griffiths(著)、 中田 秀基(監修)、 木下 哲也(翻訳)、 O’Reilly Media)の 1章(Cを始める - Cの世界に飛び込む)、p.35(エクササイズ)の解答を求めてみる。
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];
int count = 0;
do
{
puts("カード名を入力していください:");
scanf("%2s", card_name);
int val = 0;
switch (card_name[0])
{
case 'K':
case 'Q':
case 'J':
val = 10;
break;
case 'A':
val = 11;
break;
case 'X':
continue;
default:
val = atoi(card_name);
if (val < 1 || 10 < val)
{
printf("invalid input: %s\n", card_name);
continue;
}
break;
}
if (3 <= val && val <= 6)
{
count++;
}
else if (val == 10)
{
count--;
}
printf("現在のカウント:%i\n", count);
} while (card_name[0] != 'X');
}
入出力結果(Terminal, Zsh)
% make
cc main.c
./a.out
カード名を入力していください:
K
現在のカウント:-1
カード名を入力していください:
Q
現在のカウント:-2
カード名を入力していください:
J
現在のカウント:-3
カード名を入力していください:
A
現在のカウント:-3
カード名を入力していください:
10
現在のカウント:-4
カード名を入力していください:
11
invalid input: 11
カード名を入力していください:
7
現在のカウント:-4
カード名を入力していください:
6
現在のカウント:-3
カード名を入力していください:
4
現在のカウント:-2
カード名を入力していください:
3
現在のカウント:-1
カード名を入力していください:
2
現在のカウント:-1
カード名を入力していください:
X
%