回答編集履歴

3

移植性のあるコードへの修正でバグが混入したため除去。

2021/11/16 14:42

投稿

majiponi
majiponi

スコア1720

test CHANGED
@@ -30,9 +30,9 @@
30
30
 
31
31
  } else {
32
32
 
33
- struct tm t2 = {0, 0, 0, 2, 0, 70}, t3 = {0, 0, 0, 3, 0, 70};
33
+ struct tm t2 = {0, 0, 0, 2, 0, 70}, t3 = {0, 0, 0, 3, 0, 70}, t4 = {0, 0, 0, 1, 0, 71};
34
34
 
35
- time_t sec = (date-1) * (mktime(&t3) - mktime(&t2));
35
+ time_t sec = (date-1) * (mktime(&t3) - mktime(&t2)) + mktime(&t4);
36
36
 
37
37
  struct tm t = *gmtime(&sec);
38
38
 

2

バグの修正

2021/11/16 14:42

投稿

majiponi
majiponi

スコア1720

test CHANGED
@@ -30,11 +30,11 @@
30
30
 
31
31
  } else {
32
32
 
33
- struct tm t = {0, 0, 0, 2, 0, 70};
33
+ struct tm t2 = {0, 0, 0, 2, 0, 70}, t3 = {0, 0, 0, 3, 0, 70};
34
34
 
35
- time_t sec = (date-1) * mktime(&t);
35
+ time_t sec = (date-1) * (mktime(&t3) - mktime(&t2));
36
36
 
37
- t = *gmtime(&sec);
37
+ struct tm t = *gmtime(&sec);
38
38
 
39
39
  printf("\n%d日目は、%sの%d日です。\n",date,p_mnt[t.tm_mon],t.tm_mday);
40
40
 

1

移植性のあるコードに修正した。

2021/11/15 14:57

投稿

majiponi
majiponi

スコア1720

test CHANGED
@@ -1,4 +1,4 @@
1
- ライブラリ検討ししたか?
1
+ 動くコードに、落第点をつける教官せんので、
2
2
 
3
3
  ```C
4
4
 
@@ -12,21 +12,15 @@
12
12
 
13
13
  {
14
14
 
15
- char *p_mnt[] = {"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","sep","Oct","Nov","Dec"};
15
+ const char *p_mnt[] = {"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","sep","Oct","Nov","Dec"};
16
16
 
17
17
  int date;
18
-
19
- time_t t;
20
-
21
- struct tm t2;
22
18
 
23
19
 
24
20
 
25
21
  printf("1月1日からの日数を入力してください:");
26
22
 
27
23
  scanf("%d",&date);
28
-
29
- t = (date-1) * 86400L;
30
24
 
31
25
 
32
26
 
@@ -36,12 +30,24 @@
36
30
 
37
31
  } else {
38
32
 
39
- t2 = *localtime(&t);
33
+ struct tm t = {0, 0, 0, 2, 0, 70};
40
34
 
35
+ time_t sec = (date-1) * mktime(&t);
36
+
37
+ t = *gmtime(&sec);
38
+
41
- printf("\n%d日目は、%sの%d日です。\n",date,p_mnt[t2.tm_mon],t2.tm_mday);
39
+ printf("\n%d日目は、%sの%d日です。\n",date,p_mnt[t.tm_mon],t.tm_mday);
42
40
 
43
41
  }
44
42
 
45
43
  }
46
44
 
47
45
  ```
46
+
47
+ こんなコードを。
48
+
49
+ 分からないときは、「日付」「C言語」など、適切なキーワードでggり、調べましょう。大抵の問題は、先人がライブラリという形で解決してくれています。調査すら怠るようでは、丸投げと言われても仕方ないですよ。
50
+
51
+
52
+
53
+ 追記:移植性がなかったため修正。