回答編集履歴

3

修正

2019/05/17 02:30

投稿

yuicho
yuicho

スコア142

test CHANGED
@@ -244,4 +244,4 @@
244
244
 
245
245
  ```
246
246
 
247
- (本当は変数名も`a``b`じゃなくて`myHand``comHand`等してやったほうが良いです。)
247
+ (本当は変数名も `a` `b` じゃなくて `myHand` `comHand` 等してやったほうが良いです。)

2

「戻り値が無視されている」について & グローバル変数について

2019/05/17 02:30

投稿

yuicho
yuicho

スコア142

test CHANGED
@@ -33,3 +33,215 @@
33
33
  のように関数名だけで記述すれば関数が呼ばれるかと思います。
34
34
 
35
35
  # 久しぶりにcを触ったので、間違ってたらごめんなさいm(_ _)m
36
+
37
+
38
+
39
+ > scanfで、戻り値が無視されている、という警告があった
40
+
41
+
42
+
43
+ は、単純に
44
+
45
+ ```
46
+
47
+ scanf("%d\n", &a);
48
+
49
+ ```
50
+
51
+ で戻り値を無視しているからですね。
52
+
53
+
54
+
55
+ ---
56
+
57
+ #グローバル変数について
58
+
59
+ 基本的にグローバル変数を使うのはあまりよくないです
60
+
61
+ 絶対使うなというわけではないですが、今回のようなパターンであれば、関数に値渡しして戻り値を受け取る形にするべきです。
62
+
63
+ (特に今回はちゃんと関数も返しているので…)
64
+
65
+
66
+
67
+ ```
68
+
69
+ /*main.c*/
70
+
71
+ #include<stdio.h>
72
+
73
+ #include"mys.h"
74
+
75
+ #include"comp.h"
76
+
77
+ #include"iff.h"
78
+
79
+
80
+
81
+ int main(void) {
82
+
83
+ int a = 0;
84
+
85
+ int b = 0;
86
+
87
+
88
+
89
+ a = own();
90
+
91
+ b = random();
92
+
93
+ battle(a, b);
94
+
95
+ return 0;
96
+
97
+ }
98
+
99
+ ```
100
+
101
+
102
+
103
+ ```
104
+
105
+ /*mys.h 自分の手を入力するところ*/
106
+
107
+ #ifndef MY_H
108
+
109
+ #define MY_H
110
+
111
+
112
+
113
+ int own();
114
+
115
+ #endif MY_H
116
+
117
+
118
+
119
+ /*mys.c*/
120
+
121
+ #include"mys.h"
122
+
123
+ #include<stdio.h>
124
+
125
+ int own() {
126
+
127
+ int a;
128
+
129
+ printf("入力してください\nグー:1 チョキ:2 パー:3\n");
130
+
131
+ scanf("%d\n", &a);
132
+
133
+
134
+
135
+ return a;
136
+
137
+ }
138
+
139
+ ```
140
+
141
+ ```
142
+
143
+ /*comp.h コンピュータの手*/
144
+
145
+ #ifndef COMP
146
+
147
+ #define COMP
148
+
149
+
150
+
151
+ int random();
152
+
153
+ #endif COMP
154
+
155
+
156
+
157
+
158
+
159
+ /*comp.c*/
160
+
161
+ #include"comp.h"
162
+
163
+ #include<time.h>
164
+
165
+ #include<stdlib.h>
166
+
167
+ #include<stdio.h>
168
+
169
+
170
+
171
+ int random() {
172
+
173
+ int b;
174
+
175
+ srand((unsigned)time(NULL));
176
+
177
+ b = rand() % 1 + 3;
178
+
179
+ return b;
180
+
181
+ }
182
+
183
+ ```
184
+
185
+ ```
186
+
187
+ /*iff.h勝敗の判定をするところ*/
188
+
189
+ #ifndef IFF_H
190
+
191
+ #define IFF_H
192
+
193
+
194
+
195
+ int battle (int, int);
196
+
197
+
198
+
199
+ #endif IFF_H
200
+
201
+
202
+
203
+ /*iff.c*/
204
+
205
+ #include"iff.h"
206
+
207
+ #include<stdio.h>
208
+
209
+ #include"comp.h"
210
+
211
+ #include"mys.h"
212
+
213
+
214
+
215
+ int battle(int a, int b)
216
+
217
+ {
218
+
219
+ if (a == b) {
220
+
221
+ printf("あいこです");
222
+
223
+ return 1;
224
+
225
+ }
226
+
227
+ else if ((a == 1 && b == 2) |(a == 2 && b == 3) |(a == 3 && b == 1)) {
228
+
229
+ printf("あなたの勝ちです");
230
+
231
+ return 0;
232
+
233
+ }
234
+
235
+ else{
236
+
237
+ printf("あなたの負けです");
238
+
239
+ return 0;
240
+
241
+ }
242
+
243
+ }
244
+
245
+ ```
246
+
247
+ (本当は変数名も`a``b`じゃなくて`myHand``comHand`等してやったほうが良いです。)

1

顔文字の修正

2019/05/16 17:08

投稿

yuicho
yuicho

スコア142

test CHANGED
@@ -32,4 +32,4 @@
32
32
 
33
33
  のように関数名だけで記述すれば関数が呼ばれるかと思います。
34
34
 
35
- # 久しぶりにcを触ったので、間違ってたらごめんなさいm(_ )m
35
+ # 久しぶりにcを触ったので、間違ってたらごめんなさいm(_ _)m