• ベストアンサー

C言語初心者です、この問題難易度は?

中学3年生です。まだ、C言語初心者なのですが日本情報オリンピックの予選に出場しようかなと考えています。今年の12月16日に予選があるのですが、その過去問(去年の予選に出題された問題)を下のリンクに掲載されています。 ■そこで、質問なのですがこの問題は簡単なのでしょうか。  まだ、C言語初心者で覚えなきゃならないこともまだまだたくさんあります。しかし、後3ヶ月あるので一生懸命がんばりたいと思います。 ■この問題は、3ヶ月特訓してすいすいと解ける問題でしょうか。教えてください。 http://www.ioi-jp.org/joi/2006/2007-yo-prob_and_sol/index.html

質問者が選んだベストアンサー

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.5

★中学3年生(15歳)ではないので…。  私が C 言語を始めたのは 18 歳の頃でした。→高校を卒業後。 >■そこで、質問なのですがこの問題は簡単なのでしょうか。  ↑  過去の自分を振り返り(C言語を始めたばかりの頃)で考えると問題1~3までは解ける。  でも問題4~6は無理だったかもしれない。基本的に最初は C 言語を嫌々でやっていたので。 ■この問題は、3ヶ月特訓してすいすいと解ける問題でしょうか。  ↑  個人差があるので…。→嫌々でやると進まない。当たり前だけど。  次の点をお勉強してみたらどうでしょうか。  問題1…ファイル入力、if文、printf文を理解していれば出来る。  問題2…ファイル入力、配列、ループ文を理解していれば出来る。  問題3…文字コード、文字定数、文字列を理解していれば出来る。  問題4…問題の意味を理解、アルゴリズムを解くコツを見つけないと難しい。  問題5…こちらも問題の意味を理解、数学の組み合わせなどを復習しないと難しい。  問題6…同上。 ・問題を読んでみて問題1~3、問題4~6では解ける人と解けない人に大きく分かれそうですね。  問題4~6を解くには数学の組み合わせを人間ではなくてプログラムで解くためにはどのように  記述すればよいのかのコツを見つけるしかないでしょう。類似問題をたくさん解いたり、自分で  類似問題を作って解いていくのが一番いいと思います。C 言語の文法とはまた別のアルゴリズムの  お話になりますから。 ・アルゴリズムを解くには基本の変数、配列、if、else、for、while、switch を完全に理解して  使いこなせる準備をする必要があります。そこで基本を1ヶ月間みっちりと学習します。  その後に類似問題を自分で作ったり、友達に作ってもらったりしてアルゴリズムを解けるように  特訓します。例え解けなくても『考える』ことが重要です。またずっと同じ問題を考えるのではなくて  途中で別の問題も解きます。このときに別の考えで問題を解く事になると思いますのでそのときに  前の解けなかった問題のヒントがひらめくかもしれない。  つまり、問題を解くために慣れるわけ。→数学(組み合わせなど)と一緒に問題なれする事。 ・以上。基本からステップアップを計画的に行いましょう。

その他の回答 (4)

  • RAPTsong
  • ベストアンサー率42% (74/175)
回答No.4

問題をみましたが、 1.まず数学的に解き方を考えること。 2.それをC言語で表現すること。 3.そのプログラムが正しく動作すること。 の3段階を追う必要があります。 C言語としては、特に強化しておいたほうがよいポイントとして、ファイルの入出力、配列、データ構造について勉強しておくとよいかもしれません。(他は、随時覚えられるはずなので。) この手の問題は、プログラミングができることは前提となっていますが、数学の問題と同じで、読解力も必要となるでしょうから、高校入試レベルの問題をC言語でやってみるのも面白いかもしれません。

  • lesskey
  • ベストアンサー率33% (66/200)
回答No.3

一応プログラマしてます。(かなり似非レベルですが^-^;) 問1~3、5は適当に読んでたら解けました。(頭の中でですが) 問4、6は自分は数学知識が乏しいのでちと勉強やり直さないと解けません。(^-^;) C言語のレベルとしては基礎的な構文(if,for,while,配列)が分かっていれば 解けるので簡単かと。(ポインタとか構造体は別に使わなくても良いし・・・) 僕は自分の頭で理解出来るものは大体C言語に置きかえれるんですが、 中学・高校時代と全く勉強しなかったので数学が理解出来ておりません。 Rhinocerさんが問題と入力を見て、出力の値を数学で導き出せるのであれば あとはC言語の基礎を勉強するだけでコーディングは簡単だと思います。 C言語の基礎的な構文は1ヶ月(1時間/日)あればまぁ理解出来るかなと・・・ ではでは、頑張ってください。(^-^)

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.2

先ほどの回答をした者です。 高校受験の心配をしなくてよいのは大きなメリットですね。 コンピュータで問題を解く際、いきなりC言語のコードを書く前に、 まず手作業でやってみることで、コンピュータに解かせる際の 一般的な手順が見えてくるかもしれません。 答えの数が何百とおりも何千とおりもありそうだと、それだけで イヤになってしまいますが、今回の場合は、幸いなことに いちばん骨のありそうな問題6でもおよそ10とおりくらいに 収まりそうです。

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.1

初心者とおっしゃっているのがどのくらいのことを指すのか よくわからないですが、 文法を一通り押さえているレベルであれば、 もしかして高校受験など他にやることがある点を考慮に入れて、  ・問題1~3:3問で1週間  ・問題4:1週間  ・問題5:1週間  ・問題6:1週間 合計4週間ほどかけてみてはいかがでしょう。

Rhinocer
質問者

お礼

ご回答ありがとうございます!!! 僕の学校は中高一貫なので高校受験なんていりません!! これをみて少しヤル気が出てきました。本当にありがとうございました。

関連するQ&A