回答編集履歴

2

コードのバグ修正

2020/05/24 15:53

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -64,14 +64,24 @@
64
64
 
65
65
  while (b = c, (c = getchar()) != EOF)
66
66
 
67
- if (b == '/' && c == '*')
67
+ if (b == '/' && c == '*') {
68
+
69
+ c = 0;
68
70
 
69
71
  while (b = c, (c = getchar()) != EOF)
70
72
 
71
- if (b == '*' && c == '/') { count++; break; }
73
+ if (b == '*' && c == '/') { count++; c = 0; break; }
74
+
75
+ }
72
76
 
73
77
  printf("%d\n", count);
74
78
 
75
79
  }
76
80
 
77
81
  ```
82
+
83
+ **追記**
84
+
85
+ /*/ をコメントの開始と終了と解釈し、
86
+
87
+ */* をコメントの終了と開始と解釈するバグがあったので、修正しました。

1

別解の追加

2020/05/24 15:53

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -41,3 +41,37 @@
41
41
  }
42
42
 
43
43
  ```
44
+
45
+
46
+
47
+ **別解**
48
+
49
+ コメントの開始と終了が 2文字なので面倒なんですね。
50
+
51
+ だったら、2文字同時に比較すればよいでしょう。
52
+
53
+ ```C
54
+
55
+ #include <stdio.h>
56
+
57
+
58
+
59
+ int main(void)
60
+
61
+ {
62
+
63
+ int b, c = 0, count = 0;
64
+
65
+ while (b = c, (c = getchar()) != EOF)
66
+
67
+ if (b == '/' && c == '*')
68
+
69
+ while (b = c, (c = getchar()) != EOF)
70
+
71
+ if (b == '*' && c == '/') { count++; break; }
72
+
73
+ printf("%d\n", count);
74
+
75
+ }
76
+
77
+ ```