西暦月日にちを入れると何曜日かを表示できるプラグラムをつくれましたー。まだif switch do while文しかしらないけど、switch文だけでできました。でも欠点があってうるう年の1月と2月はうまくできなんです。原因わわかっていてさいごの式bに-1をしなければいけないのですがそのうるう年だけ-1という計算をどうすればできるのかが思いつきません。もし詳しい人がいたら教えてくださいーー。
#include <stdio.h>
int main(void)
{
int y, m, l, z,v,h,q,f,x,o,j,e,a,r,b;
printf("西暦何年何月か入力してください\n");
printf("西暦。:"); scanf("%d",&y);
printf("何月。:"); scanf("%d",&m);
printf("何日。:"); scanf("%d",&l);
z=y%400;
v=y%100;
h=z-v;
f=h/100;
switch(f) {
case 3 : q=0; break;
case 1 : q=4; break;
case 2 : q=2; break;
case 0 : q=6; break;
}
o=y%100;
j=o/4;
e=o+j;
a=m;
switch(a) {
case 1 : r=0; break;
case 2 : r=3; break;
case 3 : r=3; break;
case 4 : r=6; break;
case 5 : r=1; break;
case 6 : r=4; break;
case 7 : r=6; break;
case 8 : r=2; break;
case 9 : r=5; break;
case 10 : r=0; break;
case 11 : r=3; break;
case 12 : r=5; break;
}
b=q+e+r+l;
switch (b % 7){
case 0 : puts("日曜日です。"); break;
case 1 : puts("月曜日です。"); break;
case 2 : puts("火曜日です。"); break;
case 3 : puts("水曜日です。"); break;
case 4 : puts("木曜日です。"); break;
case 5 : puts("金曜日です。"); break;
case 6 : puts("土曜日です。"); break;
}
return (0);
}
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
変数名には分かりやすい名前をつけましょう。
各処理にはコメントをつけて後から見ても分かるようにしましょう。
同じようなプログラム以前作りました(面白かったです)。
ちなみにうるう年を計算する関数を書いてみます。
// うるう年計算関数
// 返り値 TRUE:うるう年でない、FALSE:うるう年
// 引数 YearNum:うるう年か計算したい年
BOOL LeapYearJudge( int YearNum )
{
int LeapYearJudgeFlag;// うるう年判定フラグ
// 400年に1回はうるう年
if( YearNum % 400 == 0 )
{
// うるう年なのでFALSEを返す
return FALSE;
}
// 100年に1回はうるう年でない
if( YearNum % 100 == 0 )
{
// うるう年でないのでTRUEを返す
return TRUE;
}
// 4年に一度はうるう年
if( YearNum % 4 == 0 )
{
// うるう年なのでFALSEを返す
return FALSE;
}
// 残りはうるう年でない
return TRUE;
}
No.3
- 回答日時:
★閏年について
(1)4で割れる年をうるう年とする
(2)ただし、100で割れる年は平年にする
(3)ただし、400で割れる年は閏年とする
(4)以上。サンプル関数を紹介。
/* 西暦から閏年の判定 */
static BOOL FuncIsLeapYear( INT nYear )
{
if ( !(nYear % 4) && (nYear % 100) ){
return( TRUE ); ←閏年
}
if ( !(nYear % 400) ){
return( TRUE ); ←閏年
}
return( FALSE ); ←平年
}
補足:
・私がカレンダー・ソフトを作成したときに、実際に利用している関数です。
・nYear に西暦を入れると閏年なら TRUE が返され、平年は FALSE が返ります。
No.1
- 回答日時:
閏年判定しましょう。
閏年とは、
・西暦の年が4で割り切れる年
・ただし、年が100で割り切れて、かつ、400で割り切れない場合はうるう年ではない。
なのです。
この条件で、「がんばって自分でロジック組むぞ!」と
思ったら、是非がんばってください。
(その方が上達しますよ~。)
もう十分がんばったんで、ちょっとズルしたかったら
下のURLを参考にしてください(^-^;
うまく動くといいですね。
参考URL:http://katsura-kotonoha.sakura.ne.jp/prog/c/tip0 …
すいませんできました。自力でー単純な関数でできるんですね。ありがとうございました。
#include <stdio.h>
int main(void)
{
int y, m, l, z,v,h,q,f,x,o,j,e,a,r,b,t,p,i,aa,bb,cc,dd;
do{
printf("西暦何年何月か入力してください\n");
printf("西暦。:"); scanf("%d",&y);
printf("何月。:"); scanf("%d",&m);
printf("何日。:"); scanf("%d",&l);
aa=y%100;
t=y-aa;
t=t%400;
p=y%4;
if (t==0 && p==0)
i=-1;
else i=0;
z=y%400;
v=y%100;
h=z-v;
f=h/100;
switch(f) {
case 3 : q=0; break;
case 1 : q=4; break;
case 2 : q=2; break;
case 0 : q=6; break;
}
o=y%100;
j=o/4;
e=o+j;
a=m;
switch(a) {
case 1 : r=0; break;
case 2 : r=3; break;
case 3 : r=3; break;
case 4 : r=6; break;
case 5 : r=1; break;
case 6 : r=4; break;
case 7 : r=6; break;
case 8 : r=2; break;
case 9 : r=5; break;
case 10 : r=0; break;
case 11 : r=3; break;
case 12 : r=5; break;
}
b=q+e+r+l+i ;
switch (b % 7){
case 0 : cc=0; break;
case 1 : cc=1; break;
case 2 : cc=2; break;
case 3 : cc=3; break;
case 4 : cc=4; break;
case 5 : cc=5; break;
case 6 : cc=6; break;
}
puts("何曜日でしょう?");
puts("数字を入れてください");
puts("日曜 0 月曜 1 火曜 2 水曜 3 木曜 4 金曜 5 土曜 6 を入力");
do {
scanf("%d",&bb);
if(bb!=cc)
puts("\a違いますよ。");
}while(bb!=cc);
puts("当たりです。おめでとう。");
puts("もう一度やりますか? やる1 やらない0を入力");
scanf("%d",&dd);
}while(dd==1);
return (0);
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript jsで、switch文で書かれた分をif文にできませんか。 1 2022/07/28 15:10
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
- JavaScript セレクトボックスを2つ設けて選択して初めてメッセを表示 1 2022/07/27 12:15
- JavaScript セレクトボックスを2つ選択してメッセージなどを表示するには。~運賃検索プログラムを完成させたい~ 1 2022/07/22 11:10
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# C++のcinの動作 5 2023/02/26 00:13
- C言語・C++・C# C++のcase文の書き方 4 2023/02/24 20:50
- その他(プログラミング・Web制作) powershell で書いたプログラムでcd が動かない 5 2023/04/08 14:47
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アイコンを左上に表示したい
-
#define _CRT_SECURE_NO_WARNIN...
-
【C++】関数ポインタの使い方
-
プログラミングで二番目に大き...
-
プログラムでの数字につく”f”の...
-
3のつく数と3の倍数を表示 C言語
-
std::set<int> で、ある値が何...
-
Enterキーを押されたら次の処理...
-
「Aに対するBの割合」と「Aに対...
-
課題;素因数分解
-
2進数の1の数を数える問題
-
C言語 配列と関数の練習問題
-
信頼区間の1.96や1.65ってどこ...
-
大きな負の値?負の大きな値???
-
Linuxで入力待ちなしkeyread関...
-
数学についてです! (1)3√5-2...
-
C言語 関数プロトタイプ宣言の...
-
Aの値からBの値を除するとは??
-
C言語でサイコロのプログラムを...
-
へんな現象
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Win32APIでウィンドウを中央に...
-
エラー Run-Time Check Failur...
-
コンソールアプリケーションの...
-
MessageBoxについて
-
画像を表示したいのですが……
-
【Windowsアプリ】ファイルのド...
-
PeekMessageについて
-
キャレットの現在位置の表示 (W...
-
C言語win32api、エディットボッ...
-
ボタンの色(WINAPI)
-
エディットコントロール入力時...
-
Win32APIにて、ウィンドウ全体...
-
音量調節
-
不明なエラー
-
C++のcase文の書き方
-
ダイアログプログラムでEnterキ...
-
ゲームとかの解像度変更&全画...
-
オーバーレイみたいな処理がしたい
-
WM_CREATE について
-
c言語初心者です。ついに。。
おすすめ情報