アプリ版:「スタンプのみでお礼する」機能のリリースについて

atcoderで問題を解いていたのですが、なぜif分の条件がtrueにならないのかが分かりません。
ご教授願えませんか、、
C言語です。

*問題文
https://atcoder.jp/contests/abc294/tasks/abc294_a


#include<stdio.h>
int main(void){
int N,num;
scanf("%d", &N);
for (int i = 0; i < N; i++) {
if ((scanf("%d", &num) == 0) && (num % 2 == 0)){ ←←←←この条件文
printf("%d ", num);
}
}
return 0;
}

A 回答 (4件)

scanf は入力された項目の数を返すようです。


つまり、numを入力されたなら、1を返します。

if ((scanf("%d", &num) == 0) && (num % 2 == 0))

1 scanf("%d", &num)を実行。
2 1を返す。
3 1==0 && (num % 2 == 0)
4 False && (num % 2 == 0)
5 if文を出る。
    • good
    • 0

単に条件が間違ってるだけ、じゃないの?


「入力があり、なおかつ2で割り切れる」って書きたいのなら、単に

if ((scanf("%d", &num) != 0) && (num % 2 == 0))

だと思うよ。

あと、例に挙げたコードだと問題のスペックに到達してないと思う。
実装例はこんなカンジかな。

実装例:
https://www.ideone.com/nPD9nc
    • good
    • 0

問題文なんぞ知ったこっちゃない、見たくもない、ですが、


判らなければ、判るような位置にprintfを入れるのが…

なお、「ご教授」ではなく「ご教示」が正しい。
サイトに依ってはやんわりと解説している輩が居るようではあるが、「ご教授」なんぞが使える場面は、まず無い!
    • good
    • 0

う~ん, どういう動作を予想したんだろうか....



今だと「num に読み込むことができず, かつ num が偶数のとき」に成り立つ (とはいえ scanf で読み込めないから num の値は不定になるような気もするけど) んだけど, それを意図することは考えられないからなぁ.

なお「if分」ではなく「if文」だと思う.
    • good
    • 2

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!