質問編集履歴
3
説明
test
CHANGED
File without changes
|
test
CHANGED
@@ -129,9 +129,9 @@
|
|
129
129
|
```
|
130
130
|
|
131
131
|
C言語始めたての初心者です。
|
132
|
-
C言語を用いてカレンダーの作成をしています。ツェラーの公式等を使用しないでfor文・if文で作成したいです。
|
132
|
+
C言語を用いてカレンダーの作成をしています。ツェラーの公式等を使用しないで簡単な形でfor文・if文で作成したいです。
|
133
133
|
|
134
|
+
2000年1月を基準として行っています。
|
134
|
-
|
135
|
+
アドバイスをいただければ幸いです。
|
135
|
-
2000年1月を基準にして曜日計算を行っているのですが、閏年のためうまくいきません。符号等を上手く合わせようとしていますが、2000年3月からズレてしまいます。アドバイスをいただければ幸いです。
|
136
136
|
|
137
137
|
|
2
文法の修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
C言語を用いてカレンダーの作成をしています。
|
2
2
|
|
3
|
+
```ここに言語を入力
|
4
|
+
コード
|
3
5
|
#define _CRT_SECURE_NO_WARNINGS
|
4
6
|
#include <stdio.h>
|
5
7
|
#define BASEYEAR 2000
|
@@ -11,7 +13,7 @@
|
|
11
13
|
void main(void)
|
12
14
|
{
|
13
15
|
/*変数の宣言*/
|
14
|
-
|
16
|
+
|
15
17
|
int year = 0;
|
16
18
|
int month = 0;
|
17
19
|
int firstday = 0;
|
@@ -38,6 +40,8 @@
|
|
38
40
|
}
|
39
41
|
printf("月は1~12の範囲で入力してください。\n");
|
40
42
|
}
|
43
|
+
|
44
|
+
int day[12] = { 31,28 + leap_year(year),31,30,31,30,31,31,30,31,30,31 }; /*月末*/
|
41
45
|
|
42
46
|
/* 1日の曜日を取得 */
|
43
47
|
firstday = day_week(year, month, day);
|
@@ -86,40 +90,43 @@
|
|
86
90
|
}
|
87
91
|
return 0;
|
88
92
|
}
|
89
|
-
|
90
93
|
/*曜日計算の関数*/
|
91
|
-
int day_week(int year, int month, int
|
94
|
+
int day_week(int year, int month, int* day)
|
92
95
|
{
|
93
96
|
int yy = 0;
|
94
97
|
|
95
|
-
/*曜日
|
98
|
+
/*2000年以降の曜日計算*/
|
96
|
-
yy = (year - BASEYEAR);
|
97
|
-
|
98
|
-
if (
|
99
|
+
if (BASEYEAR < year)
|
99
100
|
{
|
100
101
|
for (int i = BASEYEAR; i < year; i++)
|
101
102
|
{
|
102
|
-
yy += leap_year(i)
|
103
|
+
yy += 1 + leap_year(i) ;
|
103
104
|
}
|
104
105
|
}
|
106
|
+
|
107
|
+
/*2000年より前の曜日計算*/
|
108
|
+
else if (year < BASEYEAR) /*1996年からずれている*//*うるう年は+6でなく+7されている*/
|
109
|
+
{
|
105
|
-
|
110
|
+
for (int i = year; i < BASEYEAR; i++)
|
111
|
+
{
|
112
|
+
yy += 6 + leap_year(i);
|
113
|
+
}
|
114
|
+
}
|
115
|
+
/* 各月分の日付を足す */
|
116
|
+
|
117
|
+
for (int i = 1; i < month; i++)
|
106
118
|
{
|
107
|
-
for (int i = year; i < BASEYEAR; i++)
|
108
|
-
{
|
109
|
-
|
119
|
+
yy += day[i - 1];
|
110
|
-
}
|
111
120
|
}
|
112
|
-
|
121
|
+
|
113
|
-
for (int i = 0; i < month; i++)
|
114
|
-
{
|
115
|
-
yy += day[i];
|
116
|
-
}
|
117
122
|
/* 最後に7で割ると、その月の1日の曜日が求まる */
|
123
|
+
|
118
124
|
yy %= 7;
|
119
125
|
|
120
126
|
return yy;
|
121
|
-
|
122
127
|
}
|
128
|
+
|
129
|
+
```
|
123
130
|
|
124
131
|
C言語始めたての初心者です。
|
125
132
|
C言語を用いてカレンダーの作成をしています。ツェラーの公式等を使用しないでfor文・if文で作成したいです。
|
1
C言語のタグ
test
CHANGED
File without changes
|
test
CHANGED
File without changes
|