
大学の講義でC言語を習い始めたのですが、if文でコンパイルするとどうしても解決できないエラーが起こってしまいます。
文の意味は
「4で割り切れる年は”閏年”また、400でも割り切れる年も”閏年”と表示する。100で割り切れる年は”平年”と表示する」
というものです。値は2100で指定しています。
#include <stdio.h>
main() {
int y;
printf(" y=2100; ");
{ if(y%400:0) {
printf("a leap year \n"); {/* 閏年 */}
} else if(y%100:0) {
printf("a common year \n"); {/* 平年 */}
} else if(y%40:0) {
printf("a leap year \n"); {/* 閏年 */}
} else {
printf("a common year \n"); {/* 平年 */}
}
}
return 0;
}
これをコンパイルすると、どうしても
「エラー E2377 ”ファイル名” 5: If文に ) がない(関数 main)」
と出てきてしまいます。
残るこのエラーだけが解決できません。どなたか、間違っている点がわかる方はいませんでしょうか。お願いします。
A 回答 (7件)
- 最新から表示
- 回答順に表示
No.7
- 回答日時:
とりあえず、C言語の文法の勉強しましょう。
。。入力制限多いですが、せっかく作ったので、ぺたぺた。
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <limits.h>
int main( int argc, char* argv[] )
{
int y = 0;
char input[12];
char* error;
do{
error = NULL;
printf( "年を9桁以内の数値で入力してください(それ以上は左から自動的に切り捨てられます)\n=>" );
scanf( "%9s%*[^\n]%*c", input );
y = strtol( input, &error, 10 );
if ( *error != '\0' )
{
printf( "%s以降は無視されます\n", error );
}
}while( y == 0 || y < 0 );
if ( ((y % 4) == 0) && ((y % 100) != 0) || ((y % 400) == 0))
{
printf("閏年\n", y);
}
else
{
printf("平年\n", y );
}
return 0;
}
入力チェックの方が長い。。。
No.6
- 回答日時:
検査する年が2100限定と言うのもすごい設定ですが、出力は「日本語」なんですよね。
-- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< --
#include <stdio.h>
#include <stdlib.h>
#define NBUF 80
int
main()
{
int y;
char buf[NBUF];
while (1) {
printf("\n年を入力してください: ");
if (fgets(buf, NBUF, stdin) == 0) {
break;
}
y = atoi(buf);
if ((y % 400) == 0) {
printf("閏年\n");
}
else if ((y % 100) == 0) {
printf("平年\n");
}
else if ((y % 4) == 0) {
printf("閏年\n");
}
else {
printf("平年\n");
}
}
return 0;
}

No.5
- 回答日時:
直接的には、例えば、「400で割り切れる」という判断を記述するのが、
y % 400 == 0 であって、 y % 400 : 0 ではないということです。
あと、最初の、printf("y = 2100;");
は、単に、表示させてみようとしたのかな? とは思いますが、これでは、 y には値は設定されません。
y = 2100; ですね。
また、コメントは、{ } で挟む必要はありません。
今回の場合、たまたま影響はありませんが。
ということで、if () の中をそれぞれ、
y % 400 == 0
という形に直し、y を設定できるようにすれば、とりあえず、動くでしょう。
また、明らかに、 if (y%400:0) というような記述で、「)」が足りないというエラーが出るのは、Cに特有でもあります。
コンパイラは、 if (y %400 の次を見て、: を見つけるわけですが、ここに、: が来るような構文はありません。
そこで、「これは、: の前に、) を忘れたのだろう。本当は、 if(y%400) : と書きたかったのだろう(これでも、記述としては間違っていますが)と勝手に解釈したのですね。
ですから、エラーの内容が、「)が足りません。」だったわけです。
No.4
- 回答日時:
#include <stdio.h>
void main() {
int y;
y = 2100;
if (((y % 4) == 0) || ((y % 400) == 0))) {
printf("a leap year\n");
} else {
printf("a common year\n");
}
}
これでいけると思いますけど・・・
No.3
- 回答日時:
No.2
- 回答日時:
完全に間違っています。
少し修正してコンパイルがたとえ通っても根本が違っているので計算はうまくいきません。
C言語の基本的な書き方が理解できていませんので、このサイトの少なくとも8番までの練習問題をクリアできるようになりましょう!
http://homepage3.nifty.com/mmgames/c_guide/
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
隣の枝がはみ出してきたら切ってもいい?最もやってはいけないことは?
「隣の木が越境してきて困るが、勝手に切ってはいけないと聞くし…」そう思っている方も多いだろう。実は、2023年4月1日に民法が改正され、この「越境枝」のルールが大きく変わった。 教えて!gooでも「境界から出て...
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コンパイルエラーについて
-
コマンドプロンプトがすぐ消える
-
strcmp
-
分数を表示するプログラム(長...
-
WM_CLOSEで閉じれないウィンド...
-
getchar()マクロによる空白文字...
-
C言語 タイマーのソースについて
-
コマンドラインに出力した文字...
-
球の体積と表面積を表示するプ...
-
8人分のテストの点数を入力し、...
-
アドレスの比較について
-
%P と %X の違い
-
10個出力で改行したいのですが...
-
LU分解法のピボット選択機能実...
-
ある商品のロス率を5%見込み、...
-
「Aに対するBの割合」と「Aに対...
-
「指定されたキャストは有効で...
-
C言語での引数の省略方法
-
有効数字について 以前質問をし...
-
int16_t の _t は何?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
10個出力で改行したいのですが...
-
コンパイルエラーについて
-
CTRL+Dでループを抜けるには
-
Cプログラムについて
-
コマンドラインに出力した文字...
-
WM_CLOSEで閉じれないウィンド...
-
C言語の&に関する質問
-
文字と数字の判定について
-
すごろくに使用するサイコロ
-
printf( " %2d", p * q );
-
【C言語教えてください】sin波...
-
%P と %X の違い
-
C言語の勉強しています。すみま...
-
strcmp
-
unsigned int型について
-
(C言語)めちゃくちゃな値にな...
-
c言語でAからZまでを表示する...
-
c言語で2000年以降カレンダーを...
-
プログラミング C言語 課題でプ...
-
printf で二進表示を行いたい。
おすすめ情報