回答編集履歴
1
説明の訂正
answer
CHANGED
@@ -6,36 +6,7 @@
|
|
6
6
|
4.自分とcpuのどちらが21をコールするか判定する変数(下のソースではwin_flagとしています。)を
|
7
7
|
用意し、最終結果を表示します。
|
8
8
|
|
9
|
-
※これ以外で下のソースについて付け加えて説明すること
|
10
|
-
1.記号定数にすべきところは記号定数にしましょう!!
|
11
9
|
|
12
|
-
2.ほかの方の回答に書いてありますが、21に近づくときcpuは
|
13
|
-
ランダムに数字を選ぶのではなく現在の数字に応じてコールするようにする必要があると
|
14
|
-
思います。
|
15
|
-
例えば、「自分が18までコールした場合は cpuは19,20までコールする(さもないと負けるので)」
|
16
|
-
などが考えられます。
|
17
|
-
(ソースコードにこのことについてコメントで述べているのでそちらをご覧ください。)
|
18
|
-
|
19
|
-
※ソースをみて気づいたこと
|
20
|
-
入力の際にscanf関数を使っていますが、scanf関数は大変危険な関数でございます。
|
21
|
-
確かに,scanf関数は使いやすいので使いたくなる気持ちはわかります。
|
22
|
-
実際、最初のころは自分も使っていました。
|
23
|
-
(以下の文章はその理由ですが、ご存知でしたらすみません。読み飛ばしてください。)
|
24
|
-
そもそもscanf関数は、プログラマが常に正しいプログラムを書くことを前提に動く関数です。
|
25
|
-
よって、scanf関数のところの文法が間違ったときでも(例えば、scanf("%d",&i);の&がないとき)
|
26
|
-
コンパイルしたときエラーが表示されません。
|
27
|
-
(このほかにもプログラムを実行したとき入力ミスしたとき、予期せぬエラーが出ます。)
|
28
|
-
以上の理由により、scanf関数は危険な関数でございます。
|
29
|
-
そこで、**fgets関数**を使うことをおすすめします。
|
30
|
-
fgets関数だと先ほど述べたエラーが出ず、安全にプログラムを実行することができます。
|
31
|
-
説教みたいになって、気を悪くしたのでしたら すみません。
|
32
|
-
あと、長文ですみません。
|
33
|
-
|
34
|
-
以下、私が書いたソースコードでございます。
|
35
|
-
万が一 エラーがあったときや、私のソースコードに関して
|
36
|
-
質問があるときは、ご連絡ください。
|
37
|
-
「私の回答」という名の長文を読んでくださり、ありがとうございます。
|
38
|
-
|
39
10
|
```C言語
|
40
11
|
|
41
12
|
#include <stdio.h>
|