質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

2回答

1406閲覧

c言語で曜日を出力する

ritsu.m

総合スコア15

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2019/06/30 14:34

編集2019/06/30 14:44

###前提、実現したいこと
c言語を使ってカレンダーを作っています。
その過程で曜日を出したいと思っています。
具体的に説明すると、西暦と月を入力してその月の1日の曜日を出力します。
前提としてツェラーの公式を使います。

###コード

include<stdio.h> int main(void){ int year,n,month,day,u; printf("西暦を入力してください: "); scanf("%d",&year); printf("月を入力してください: "); scanf("%d",&month); if(year % 400 == 0){ printf("閏年です\n"); }else if (year % 4 ==0 && year % 100 != 0 ){ printf("閏年です\n"); }else{ printf("閏年ではありません\n"); } if(month<=2){ u=month+12; }else{ u=month; } day=1; n=(year+year/4-year/100+year/400+(13*u+8)/5+day)%7; printf("%d\n",n); }

*3月から12月までは式にそのまま入力しますが、1月は13月、2月は14月とします。(ツェラーの公式)

#問題
3月から12月までは正常に出力されます。(日曜日を0土曜日を6としています)
ただ1月から2月までが正常に出力されません。
例えば、西暦2000年2月を入力すると2が出力されるはずですが、4が出力されてしまいます。
他の年も試しましたが1、2月以外は正常に出力されました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

y年m月d日の曜日を求める。

ただし、1月と2月は、前年のそれぞれ13月・14月として扱う。たとえば、2019年1月1日・2月1日は、2018年13月1日・14月1日とする。

引用元ツェラーの公式 - Wikipedia太字は引用者。

コードの書き方について

teratailには、コードを見やすく表示する機能があります。
質問編集画面を開き、コードを選択した状態で<code>ボタンを押して下さい。
C

投稿2019/06/30 14:37

編集2019/06/30 14:39
LouiS0616

総合スコア35660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ritsu.m

2019/06/30 14:41

前年の、、 自分の勉強不足です、 ありがとうございます
guest

0

まず、西暦1年1月1日からの通算日数を求めるコードを組みます
#ぐぐればコードはでてきますね

で、1年1月1日は日曜日なので、通算日数を7で割れば曜日がでます

投稿2019/06/30 14:37

y_waiwai

総合スコア87747

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ritsu.m

2019/06/30 14:39

なるほど そういうアプローチもあるんですね ありがとうございます
LouiS0616

2019/06/30 14:40 編集

@y_waiwai さん 質問読みました?
ikadzuchi

2019/07/01 12:30

彼は質問を読まない人です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問