回答編集履歴

1

コードの変更

2019/06/03 03:28

投稿

退会済みユーザー
test CHANGED
@@ -1,98 +1,58 @@
1
- > どのような操作を行えば二桁の数字を文字列に変換することができるでしょうか。
2
-
3
-
4
-
5
- 一つの方法として
6
-
7
- 与えられた数字のそれぞれの位の数字を一つずつ取り出し,```char```型配列に格納させます。
8
-
9
- 汎用性をより高めるためにそれを一般化してみました。
10
-
11
- 以下のコードでは18以外の数字で実行しています。
12
-
13
-
14
-
15
-
16
-
17
1
  ```c
18
2
 
19
3
  #include <stdio.h>
20
4
 
21
5
  #include <stdlib.h>
22
6
 
23
- #include <string.h>
24
7
 
8
+
25
- #include <math.h>
9
+ int digits(int n);
26
10
 
27
11
 
28
12
 
29
- int digit(int);
13
+ int main(void){
30
14
 
31
- int digit_n(int,int);
15
+
32
16
 
33
-
34
-
35
- int main(void)
36
-
37
- {
38
-
39
- int value = 15478547;
17
+ int n = 18;
40
-
41
- char text[10];
42
18
 
43
19
  int i;
44
20
 
45
- int n;
21
+ char output[3];
46
22
 
47
- for(i = 0; i < digit(value); i++){
23
+ int m = digits(n);
48
24
 
25
+ for(i = 0; i < m; i++){
26
+
49
- text[i] = (char)(digit_n(value,i) + '0');
27
+ output[m - i - 1] = '0' + n % 10;
28
+
29
+ n /= 10;
50
30
 
51
31
  }
52
32
 
53
- text[digit(value)] = '\0';
33
+ output[2] = '\0';
54
34
 
55
- n = strlen(text);
56
-
57
- for(i = 0; i < n; i++){
58
-
59
- printf("%c ",text[i]);
35
+ printf("%s",output);
60
-
61
- }
62
36
 
63
37
  return 0;
64
38
 
65
39
  }
66
40
 
67
- int digit(int value){
41
+ int digits(int n)
68
42
 
69
- int answer = 0;
43
+ {
70
44
 
71
- while(value >= 1){
45
+ int digit = 0;
72
46
 
73
- answer++;
47
+ while(n > 0){
74
48
 
75
- value /= 10;
49
+ n /= 10;
50
+
51
+ digit++;
76
52
 
77
53
  }
78
54
 
79
- return answer;
55
+ return digit;
80
-
81
- }
82
-
83
-
84
-
85
- int digit_n(int value, int n)
86
-
87
- {
88
-
89
- int answer = value % (int)(pow(10,n + 1));
90
-
91
- answer /= (pow(10,n));
92
-
93
-
94
-
95
- return answer;
96
56
 
97
57
  }
98
58