C言語のプログラミングで年と月を入力するとその月のカレンダーを表示するプログラムを完成させて貰いたいです!
西暦一年一月一日を月曜日としてカレンダーは日曜日から始まるものです!
#include <stdio.h>
int main(void)
{
int year,month;
int month[12]={31,28,31,30,31,30,31,31,30,
31,30,31};//それぞれの月の日の配列
int cut = 0;
int year,month,i;
int total=0;
scanf("%d",&year);//年を入力
printf("%d年");//入力された年の値を出力
scanf("%d",&month);//月を入力
printf("%d月");//入力された月の値を出力
printf(" SUN MON TUE WED THU FRI STA \n")
total=total+1;
for(i=1; i<year; i++){
total=+365;
if(year%400==0 || (year%100 != 0 && year%4 == 0))
total++;
for(i=0;i<month-1;i++){
total+=month[1];
if(month==2){
if(year%400 == 0 || (year%100 != 0 && year%4 == 0)){
day = 29;
}
else{
day = 28;
}
}
for(i=1;cnt=0; i<=total%7; i++, cnt++)
printf(" ");
for(i=1; i<=month[month-1]; i++,cnt++)
if(cnt %7 == 0)
printf("\n");
printf("%3d",i);
}
printf("\n");
return 0;
}
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
丁度数日前、(今どき・苦笑)Pascalの勉強をしてて、それに似たような問題があったので、C言語に翻訳してみました。
参考までに。
/* ここから */
#include <stdio.h>
#include <stdlib.h>
typedef int yeartype;
typedef enum {
Jan, Feb, Mar, Apr, May, Jun,
Jul, Aug, Sep, Oct, Nov, Dec,
} monthtype;
typedef enum {
Sun, Mon, Tue, Wed, Thu, Fri, Sat,
} weektype;
typedef int daytype;
int isLeapyear(yeartype year) {
return (year % 4 == 0) & (year % 100 != 0) || (year % 400 == 0);
}
daytype getdays(yeartype year, monthtype month) {
switch(month) {
case Jan: case Mar: case May: case Jul: case Aug: case Oct: case Dec:
return 31;
case Feb: if (isLeapyear(year)) {
return 29;
} else {
return 28;
}
default: return 30;
}
}
daytype sum_of_days(yeartype year, monthtype month, daytype day) {
monthtype m;
daytype d = 0;
switch(month) {
case Jan: return day;
case Feb: return getdays(year, Jan) + day;
default:
for (m = Jan; m < month; m++) {
d += getdays(year, m);
}
return d + day;
}
}
weektype day_of_week(yeartype year, monthtype month, daytype day) {
yeartype y;
daytype d = 0;
for (y = 1; y < year; y++) {
if (isLeapyear(y)) {
d = (d + 366) % 7;
} else {
d = (d + 365) % 7;
}
}
d += sum_of_days(year, month, day);
switch (d % 7) {
case 0: return Sun; case 4: return Thu;
case 1: return Mon; case 5: return Fri;
case 2: return Tue; case 6: return Sat;
default: return Wed;
}
}
void print(yeartype year, monthtype month) {
int column, end_of_month;
int i;
puts(" SUN MON TUE WED THU FRI SAT");
end_of_month = getdays(year, month);
column = day_of_week(year, month, 1) + 1;
if (column != 1) {
for (i = 1; i < column; i++) printf(" ");
}
i = 1;
while (!(i > end_of_month)) {
while (!(column > 7 || i > end_of_month)) {
printf("%4d", i); i++; column++;
}
puts(""); column = 1;
}
}
int main(void) {
int i, j, k;
char s0[5], s1[3];
puts("enter year");
scanf("%4s%*[^\n]%*c", s0);
i = atoi(s0);
puts("enter month (1...12)");
scanf("%2s%*[^\n]%*c", s1);
k = atoi(s1);
if ((k < 1) || (k > 12)) goto EXIT;
switch(k) {
case 1: j = Jan; break; case 5: j = May; break; case 9: j = Sep; break;
case 2: j = Feb; break; case 6: j = Jun; break; case 10: j = Oct; break;
case 3: j = Mar; break; case 7: j = Jul; break; case 11: j = Nov; break;
case 4: j = Apr; break; case 8: j = Aug; break; default: j = Dec;
}
print(i, j);
EXIT:
return EXIT_SUCCESS;
}
No.2
- 回答日時:
> int year,month;
> int month[12]={31,28,31,30,31,30,31,31,30,
monthという変数を何回も宣言、定義しています。
いらない宣言を削除したり、変数名を変更して下さい。
せめて、コンパイル通る程度まで修正してから質問する方が良いと思います。
No.1
- 回答日時:
プログラミング言語学習の練習問題などでよくあるものですから、とりあえずGoogleなどで「カレンダー作成プログラム C言語」くらいのキーワードで検索してみましょう。
解説ページが幾つもヒットするはずです。
入出力仕様がご自身の考えるものとちょっと異なる場合は、そこだけ考えればOKでしょう。
参考まで。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- PHP SQLとPHPの連結方法がわからないのでアドバイスお願い致します 1 2022/07/12 12:16
- PHP アコーディオンPHPが上手くいかない 3 2022/07/15 16:29
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- PHP style.cssのjQuery条件付きcssが機能しない 4 2022/07/17 18:27
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Perlでsprintf("%02d",$month)...
-
PHPのstrtotimeのようなものあ...
-
1桁の日付に0を付ける
-
日齢計算プログラム
-
当日の日付をプルダウンメニュ...
-
Application.ScreenUpdating = ...
-
JSONで文字列が長い時
-
子windowsからsubmit()後にclos...
-
講義でわからないのですが以下...
-
VBA他のブックから値のみ貼付す...
-
formで特定のinputを送信しない...
-
c言語 16進数の2進数への変換
-
メモリをアドレスを直接指定し...
-
どちのほうがすきですか?
-
C言語について
-
【至急!!!】python言語で本を見...
-
FindFirst を複数条件で検索
-
文字の横にプルダウンを表示さ...
-
pythonで演算子を変数に代入す...
-
16進の10進変換について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
質問
-
日付の差分の求め方(日、分)
-
前日の日付取得するには?
-
1桁の日付に0を付ける
-
当日の日付をプルダウンメニュ...
-
2つの日付・時間の差分を求め...
-
Perlの日付の比較に関して
-
体重が3kg増える/減る の英語...
-
Perlでsprintf("%02d",$month)...
-
「型が一致しません」のエラー...
-
C言語でのPICプログラミング
-
先月(YYYYMM)の生成方法
-
Cookieの有効期限について
-
Perlの日付取得で月の表示がお...
-
時間の計算について
-
更新記録CGIで「前へ」「次へ」...
-
pythonのプログラミングについ...
-
PHPメールフォームに入力された...
-
perlでcheckboxがうまく整理で...
-
if文データの別ファイル化について
おすすめ情報