回答編集履歴

2

文字列配列の参照方法を訂正

2020/09/04 20:57

投稿

mjk
mjk

スコア303

test CHANGED
@@ -1,40 +1,36 @@
1
1
  ※単語はそのままだと他国語の文字コード系のエラーが出たので数字で置き換えました。
2
+
3
+ 元のコードの原型はありませんがロジックだけでも参考になればと思います。
4
+
5
+ ```C
6
+
7
+ #include <stdio.h>
2
8
 
3
9
 
4
10
 
5
- ```C
11
+ void func(int n) {
6
12
 
7
- #define _CRT_SECURE_NO_WARNINGS
13
+ const char unit[10][3] = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"};
8
14
 
9
- #include <stdio.h> //sprintf
15
+ const char tens[9][4] = {"10", "20", "30", "40", "50",
10
16
 
11
- #include <stdlib.h> //malloc
12
-
13
- #include <string.h> //strcpy
14
-
15
-
16
-
17
- void getTurkishNumber(int n) {
18
-
19
- char unit[10][7] = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"};
20
-
21
- char tens[9][8] = {"10", "20", "30", "40", "50", "60", "70", "80", "90"};
17
+ "60", "70", "80", "90"};
22
18
 
23
19
  if (n / 10) {
24
20
 
25
21
  if (n % 10) {
26
22
 
27
- printf("%02d %s %s\n", n, &tens[(n / 10) - 2][8], &unit[(n % 10) - 1][7]);
23
+ printf("%02d %s %s\n", n, &tens[(n / 10)], &unit[(n % 10)]);
28
24
 
29
25
  } else {
30
26
 
31
- printf("%02d %s\n", n, &tens[(n / 10) - 2][8]);
27
+ printf("%02d %s\n", n, &tens[(n / 10)]);
32
28
 
33
29
  }
34
30
 
35
31
  } else {
36
32
 
37
- printf("%02d %s\n", n, &unit[n - 1][7]);
33
+ printf("%02d %s\n", n, &unit[n]);
38
34
 
39
35
  }
40
36
 
@@ -44,13 +40,11 @@
44
40
 
45
41
  for (int i = 0; i < 100; i++) {
46
42
 
47
- getTurkishNumber(i);
43
+ func(i);
48
44
 
49
45
  }
50
46
 
51
47
  getchar();
52
-
53
- return 0;
54
48
 
55
49
  }
56
50
 

1

10,20の時の修正

2020/09/04 20:56

投稿

mjk
mjk

スコア303

test CHANGED
@@ -22,7 +22,15 @@
22
22
 
23
23
  if (n / 10) {
24
24
 
25
+ if (n % 10) {
26
+
25
- printf("%02d %s %s\n", n, &tens[(n / 10) - 2][8], &unit[(n % 10) - 1][7]);
27
+ printf("%02d %s %s\n", n, &tens[(n / 10) - 2][8], &unit[(n % 10) - 1][7]);
28
+
29
+ } else {
30
+
31
+ printf("%02d %s\n", n, &tens[(n / 10) - 2][8]);
32
+
33
+ }
26
34
 
27
35
  } else {
28
36
 
@@ -46,11 +54,11 @@
46
54
 
47
55
  }
48
56
 
49
-
50
-
51
57
  ```
52
58
 
53
59
  ```output
60
+
61
+
54
62
 
55
63
  00 0
56
64
 
@@ -72,7 +80,7 @@
72
80
 
73
81
  09 9
74
82
 
75
- 10 10 0
83
+ 10 10
76
84
 
77
85
  11 10 1
78
86
 
@@ -92,6 +100,8 @@
92
100
 
93
101
  19 10 9
94
102
 
103
+ 20 20
104
+
95
- 20 20 0
105
+ 21 20 1
96
106
 
97
107
  ```