西暦年と月を入力し、その月の最初の日(一日)の曜日を表す番号(日曜なら0、月曜なら1.......、土曜日なら6という整数)で返す関数 int calc_youbi(int y,int m)とする。また、1か月の日数をdaynumとして、その月の最初の日(1日)の曜日を*youbiとして受け取り、一か月分のカレンダーを出力するとともに、翌月の1日の曜日を*youbiとして受け渡す関数を、void print_calendar(int daynum,int *youbi)とする。
西暦年と月の情報を入力して、最初に calc_youbiを一回、その後にprint_calendarを二回使うことによって二か月分のカレンダーを出力するプログラムを教えてください。
以下は、実行例です。
enter year:2010
enter month:6
Su Mo Tu We Th Fr Sa
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Su Mo Tu We Th Fr Sa
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
おぉう, 副作用を間違えてたよ.
#include <stdio.h>
#include <stdlib.h>
int calc_youbi(int y, int m);
void print_calendar(int daynum, int *youbi);
int main()
{
int y, m, youbi;
printf("enter year:"); scanf("%d", &y);
printf("enter month:"); scanf("%d", &m);
youbi=calc_youbi(y, m);
y += !(m%=12);
print_calender((calc_youbi(y, ++m)-youbi+7)%7+28, &youbi);
y += !(m%=12);
print_calender((calc_youbi(y, ++m)-youbi+7)%7+28, &youbi);
return EXIT_SUCCESS;
}
のような感じかな.
No.2
- 回答日時:
なんというか馬鹿な設計だ....
例えば
#include <stdio.h>
#include <stdlib.h>
int calc_youbi(int y, int m);
void print_calendar(int daynum, int *youbi);
int main()
{
int y, m, youbi;
printf("enter year:"); scanf("%d", &y);
printf("enter month:"); scanf("%d", &m);
youbi=calc_youbi(y, m);
m%=12;
print_calender((calc_youbi(y+=!m, 1+m++)-youbi+7)%7+28, &youbi);
m%=12;
print_calender((calc_youbi(y+=!m, 1+m++)-youbi+7)%7+28, &youbi);
return EXIT_SUCCESS;
}
とか, かなぁ.
ああ, calc_youbi やら print_calendar やらは自分で考えてね.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java Java 配列<選挙> 4 2023/07/31 15:07
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分 1 2022/07/19 17:03
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 malloc関数を使ってください!お願いします! 最 1 2022/07/21 09:28
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# 至急教えてください! プログラミングの問題です! お願いします! 出力2と全く同じ出力をするように、 2 2022/06/22 23:10
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 割られる整数と割る整数を受け取って、商と余りを出力す 3 2022/07/05 10:23
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
- C言語・C++・C# このプログラミングの問題を教えて欲しいです。 キーボードから整数kを入力し、kが配列aの中に何個存在 2 2022/12/19 22:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語での引数の省略方法
-
#define _CRT_SECURE_NO_WARNIN...
-
「指定されたキャストは有効で...
-
if と配列の組み合わせ
-
(int *)の意味
-
複数桁10進数の*桁目だけを抽出...
-
足して100になるような乱数のア...
-
ラップ関数とはどんなものですか?
-
エラー 添字が付けられた値が、...
-
C言語で三目並べをするプログラ...
-
円周率
-
return 1L
-
ポインタを使って関数の値の...
-
商と剰余を同時に求める(C言語)
-
PowerShellがうまくいかない
-
C言語 エラーの原因がわからな...
-
数字列を3桁ごとにカンマで区切...
-
質問です 下記のコードを分かり...
-
アスタリスクで正方形
-
systemの戻り値を取得する方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「指定されたキャストは有効で...
-
C言語での引数の省略方法
-
複数桁10進数の*桁目だけを抽出...
-
#define _CRT_SECURE_NO_WARNIN...
-
ラップ関数とはどんなものですか?
-
卒業研究でよく分からないとこ...
-
【C++】関数ポインタの使い方
-
実数の整数部,小数部の取得
-
std::set<int> で、ある値が何...
-
C言語 エラーの原因がわからな...
-
c言語
-
system関数がうまくいかない
-
C++でvectorにテキストファイル...
-
acceptをalarmでタイムアウトさ...
-
if と配列の組み合わせ
-
return 1L
-
「{ } で囲むだけ」は正しい?
-
(マルチスレッド)_beginthrea...
-
PowerShellがうまくいかない
-
このプログラミング誰か教えて...
おすすめ情報