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

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

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

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

Q&A

解決済

1回答

4308閲覧

C言語 scanf 複数の値を受け取りたい

kokok

総合スコア145

C

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

0グッド

0クリップ

投稿2019/07/31 00:46

編集2019/07/31 00:56

C

1 2 3 4 5#pragma warning(disable: 4996) 6#include<stdio.h> 7 8//プロトタイプの宣言 9int januaryoneday(int year); 10int leapyear(int year); 11 12 13int main(void) { 14 15 16 enum M_LIST {JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOW,DEC, N_MONTH}; 17 enum W_LIST{SUN,MON,TUE,WED,THU,FRI,SAT , N_WEEK}; 18 19 int monthdays[] = { 31,28,31,30,31,30,31,31,30,31,30,31 }; //月の日数 20 21 22 int year; //入力された西暦 23 int month; //入力された月 24 int day; //入力された日 25 int week; // 曜日 26 int judgment; //入力された値がうるう年だったかどうか 27 28 printf("西暦を入力してください(入力された西暦の1月1日の曜日が表示されます)または、西暦月日を入力してください)"); 29 scanf("%d,%d,%d", &year,&month,&day); 30 31 32 33 34 printf("%d",year); 35 printf("%d",month); 36 printf("%d",day); 37 38 week = januaryoneday(year); 39 judgment = leapyear(year); 40 41 if (judgment == 0) { // うるう年であれば2月を29日に変更 42 43 printf("うるう年"); 44 monthdays[FEB] = 29; 45 } 46 47 48 49} 50 51 52//入力された西暦の1月1日の曜日を返す 53int januaryoneday(int year){ 54 55 int sumday; // 入力された西暦までの累計日数 56 int dayw; // 曜日計算 57 58 sumday = ((year - 1) * 365) + ((year - 1) / 4) - ((year - 1) / 100) + ((year - 1) / 400) + 1; //入力された1月1日までの日数 59 60 dayw = sumday % 7; 61 62 return dayw; 63} 64 65 66//入力された西暦がうるう年かの判定 67int leapyear(int year) { 68 69 int leap; 70 71 leap = (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) ? 0 : -1; 72 73 return leap; 74 75}

コンソールから2012 02 14 と入力すると

2012-858993460-858993460うるう年

となってしまいます。

    int year; //入力された西暦
int month; //入力された月
int day; //入力された日

この変数に year に 2012 monthに 2 dayに 14 と 代入したいのですが

上手くいかないのでアドバイス頂けると幸いです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

scanf("%d,%d,%d", &year,&month,&day);としている以上、入力は2018,2,15のようなコンマ区切りでないといけません。

スペース区切りで入力したいなら、"%d%d%d"とすれば、空白を区切りと勝手に解釈してくれます。

投稿2019/07/31 00:54

maisumakun

総合スコア145184

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

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

kokok

2019/07/31 00:59

ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問