質問するログイン新規登録

回答編集履歴

1

コードの変更

2019/06/03 03:28

投稿

退会済みユーザー
answer CHANGED
@@ -1,50 +1,30 @@
1
- > どのような操作を行えば二桁の数字を文字列に変換することができるでしょうか。
2
-
3
- 一つの方法として
4
- 与えられた数字のそれぞれの位の数字を一つずつ取り出し,```char```型配列に格納させます。
5
- 汎用性をより高めるためにそれを一般化してみました。
6
- 以下のコードでは18以外の数字で実行しています。
7
-
8
-
9
1
  ```c
10
2
  #include <stdio.h>
11
3
  #include <stdlib.h>
12
- #include <string.h>
13
- #include <math.h>
14
4
 
15
- int digit(int);
5
+ int digits(int n);
16
- int digit_n(int,int);
17
6
 
18
- int main(void)
7
+ int main(void){
19
- {
8
+
20
- int value = 15478547;
9
+ int n = 18;
21
- char text[10];
22
10
  int i;
11
+ char output[3];
23
- int n;
12
+ int m = digits(n);
24
- for(i = 0; i < digit(value); i++){
13
+ for(i = 0; i < m; i++){
25
- text[i] = (char)(digit_n(value,i) + '0');
14
+ output[m - i - 1] = '0' + n % 10;
15
+ n /= 10;
26
16
  }
27
- text[digit(value)] = '\0';
17
+ output[2] = '\0';
28
- n = strlen(text);
29
- for(i = 0; i < n; i++){
30
- printf("%c ",text[i]);
18
+ printf("%s",output);
31
- }
32
19
  return 0;
33
20
  }
34
- int digit(int value){
21
+ int digits(int n)
22
+ {
35
- int answer = 0;
23
+ int digit = 0;
36
- while(value >= 1){
24
+ while(n > 0){
37
- answer++;
38
- value /= 10;
25
+ n /= 10;
26
+ digit++;
39
27
  }
40
- return answer;
28
+ return digit;
41
29
  }
42
-
43
- int digit_n(int value, int n)
44
- {
45
- int answer = value % (int)(pow(10,n + 1));
46
- answer /= (pow(10,n));
47
-
48
- return answer;
49
- }
50
30
  ```