これはC言語を初めて学習したので、入力した数字の中で2番目に大きい数字を見つけるコードを書く必要があります。どのようにこのCプログラミングの課題を解決するには?
コードは次のとおりです。
#include <stdio.h>
int main() {
int x, max, max2;
max = max2 = -1;
while (scanf("%d", &x) != EOF) {
if (x > max) {
max2 = max;
max = x;
} else if (x > max2) {
max2 = x;
}
}
printf("%d\n", max2);
return 0;
}
問題は、私はここに1 2 3 4 5
を入力すると4が第二の最大数であるとして、答えは、4であるべきです。しかし、コードは入力された番号で動作するはずです。私はそれを理解できませんでした。
私はそれを解決するためにLinux端末とvimを使用する必要があります。私はvim input
を使用して端末に入力ファイルを作成し、そこにファイルを入力して1 2 3 4 5
を入力しました。しかし、./a.out <input
を使用してコードを実行すると、それでも5が表示されます。これをどのように解決すればよいですか?
ようこそスタックオーバーフロー!これまでのところあなたの研究/デバッグの努力を示してください。まず[Ask]ページをお読みください。 –
Whoa whoa whoa。 David * Lightman *?最初はシンプルなCのものですが、WOPRにハッキングし、第3次世界大戦を開始しています(http://www.imdb.com/title/tt0086567/)。私はこれをここの芽の中に入れておくべきだと思う。 – Phylogenesis
は、より大きな何かを見つけたので新しい値を受け取ったときに現在の 'max'値を割り当てられる変数' secondButMax'を導入します。そして、それらの核兵器だけを残す。 – tofro