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

質問編集履歴

2

書式の改善

2020/11/16 14:15

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -14,14 +14,24 @@
14
14
  #include <stdio.h>
15
15
  #include <stdlib.h>
16
16
 
17
- int main(int argc, char *argv[]) {
17
+ int main(int argc, char *argv[])
18
+ {
18
19
  char *a, *b, *c;
19
20
  int i, n, na, nb, nc, r;
20
21
 
22
+ if (argc != 2) {
21
- scanf("%d", &n);
23
+ printf("usage: %s number_of_digits\n", argv[0]);
24
+ return 1;
25
+ }
26
+ n = atoi(argv[1]);
27
+ if (n < 1) {
28
+ puts("number of digits should be greater than 1");
29
+ return 1;
30
+ }
31
+
22
- a = calloc(n+1, sizeof(char));
32
+ a = calloc(n + 1, sizeof(char));
23
- b = calloc(n+1, sizeof(char));
33
+ b = calloc(n + 1, sizeof(char));
24
- c = calloc(n+1, sizeof(char));
34
+ c = calloc(n + 1, sizeof(char));
25
35
  if ((a == NULL) || (b == NULL) || (c == NULL)) {
26
36
  printf("cannot allocate memory.\n");
27
37
  exit(1);
@@ -31,28 +41,28 @@
31
41
  b[0] = 1;
32
42
  na = nb = 1;
33
43
 
34
- for (; nb<=n;){
44
+ for (; nb <= n;) {
35
45
  r = 0;
36
- for (i=0; i!=nb; i++) {
46
+ for (i = 0; i != nb; i++) {
37
47
  r = a[i] + b[i] + r;
38
48
  c[i] = r % 10;
39
49
  r = r / 10;
40
50
  }
41
- if (r == 1) {
51
+ if (r == 1) {
42
- c[i] = 1;
52
+ c[i] = 1;
43
- nc = nb + 1;
53
+ nc = nb + 1;
44
- } else {
54
+ } else {
45
- nc = nb;
55
+ nc = nb;
46
- }
56
+ }
47
- for (i=0; i!=nb; i++) a[i] = b[i];
57
+ for (i = 0; i != nb; i++) a[i] = b[i];
48
- for (i=0; i!=nc; i++) b[i] = c[i];
58
+ for (i = 0; i != nc; i++) b[i] = c[i];
49
59
  na = nb;
50
60
  nb = nc;
51
61
  }
52
62
 
53
- for (i=na-1; i>=0; i--) printf("%d", a[i]);
63
+ for (i = na - 1; i >= 0; i--) printf("%d", a[i]);
54
64
  printf("\n");
55
-
65
+
56
66
  free(a);
57
67
  free(b);
58
68
  free(c);

1

書式の改善

2020/11/16 14:15

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -9,8 +9,8 @@
9
9
  標準出力に83621143489848422977と出力されることを求めています。
10
10
 
11
11
  ### 該当のソースコード
12
- C言語```ここに言語を入力
13
- コード
12
+ ```C
13
+
14
14
  #include <stdio.h>
15
15
  #include <stdlib.h>
16
16
 
@@ -58,7 +58,8 @@
58
58
  free(c);
59
59
 
60
60
  return 0;
61
+ }
61
- }```
62
+ ```
62
63
 
63
64
 
64
65
  ### 試したこと