以前知恵袋でC言語の質問の回答をしたのですが、その時に疑問に思ったことがありましたので、質問させていただきます。
以前知恵袋でC言語の質問の回答をしたのですが、その時に疑問に思ったことがありましたので、質問させていただきます。 例えば、int a[10];という配列があったとして、aに0~10以下の任意の数をキーボードから入力して一要素ずつに格納していくとします。そして、最後にaの配列に入っている数を標準出力に出力します。この時に、「aにいくつ入力があったかを格納する変数は使えない。」かつ「aに絶対に入力されない整数はない」という条件があったとします。このとき、aに入力された数のみをすべて出力するにはどうしたらよいでしょうか?入力された数や、ここまで入力されたということを表す整数がない場合、単純にaの配列を最後まで出力してしまうと、入力から格納されなかった配列の値は、でたらめな整数が入っていると思うので、それらも出力されてしまいます。もしかしたら単純なことなのに思いついていないだけの可能性もあると思い、質問させていただきたいと思います。ファイルや、標準ライブラリ以外のライブラリ、APIなどは使わないとします。以下は入力と出力の例です。 入力 12345 出力 aは12345
ベストアンサー
配列に「0~10以下」の数をどういう形式で格納するのかが問題です。 [整数の場合] 入力した値と元々入っていたゴミのような値を区別する仕組みはありませんから、入力した個数がわからない限り不可能です。 [文字の場合] 数字を表す文字は'0'~'9'ですから予め領域を2進数の0でクリアでもしておけば0が表れるまで表示すればいいということになります。
質問者からのお礼コメント
回答ありがとうございます。自分の考えで間違っていないことがわかりました。以前私が回答しようとしたときに、質問者さんからそのような設定が何もなかったので、おそらく学校側から設定が不明確な課題を出されたのだろうと思います。(まったく同じ質問が複数見受けられたので)。皆さん同じ意見でしたので、ベストアンサーは一番回答が早かった方にしようと思います。ありがとうございました。
お礼日時:1/18 15:18