Login
Immutable PageDiscussionInfoAttachments
Diff for "moba/C言語講習会宿題"

MMA
Differences between revisions 15 and 16
Revision 15 as of 2013-07-16 14:27:59
Size: 3026
Editor: moba
Comment:
Revision 16 as of 2013-07-16 17:50:47
Size: 3038
Editor: moba
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
C言語講習会の宿題 C言語講習会のコードゴルフ

C言語講習会のコードゴルフ

第1問

FizzBuzzという遊びを知っていますか?Wikipediaによると

  • 「Fizz Buzz(フィズ・バズ、Bizz Buzz や Buzz とも呼ばれる)は英語圏で長距離ドライブ中や飲み会の時に行われる言葉遊びである」1

という遊びだそうです。それでは任意の数が与えられた時に、その数までのFizzBuzz遊びの結果を出力するプログラムを組んでみましょう。
このゲームにおけるルールは次のようになっています。

  • 3の倍数の時は"Fizz"

  • 5の倍数の時は"Buzz"

  • 15の倍数の時は"FizzBuzz"

  • それ以外は数字を出力

例えば入力する値が16だった場合、出力結果は次のようになります。

入力
  16
出力
  1
  2
  Fizz
   4
  Buzz
  Fizz
  7
  8
  Fizz
  Buzz
  11
  Fizz
  13
  14
  FizzBuzz
  16

第2問

Euclidの互除法 は知っていますか?2つの数の最大公約数を知るのに便利な定理です。定理の内容は以下のようになっています。

数A,B(B≠0)に対して
  A=BQ+R
を満たす数Q,Rがただひとつ存在する。

このままではわかりにくいので例を出すと、195と225との最大公約数はこのEuclidの互除法を用いると次のように求められます。

まず、225は195を用いて次のように表されます
  225=195×1+30
この195を、225を195で割った際に出てくる余り30で割ると
  195=30×6+15
同様にして割った際に出てくる商である30と余りである15を用いて
  30=15×2+0
これより195と225の最大公約数は15であることがわかりました。

このように、面倒な素因数分解をせずとも簡単に2数の最大公約数を求めることができます。では、このEuclidの互除法を用いて、入力された任意の2数に対して最大公約数を求めるプログラムを組んでみましょう。ただし、入力される数は自然数とします。
以下は一例です。

入力
  1つ目の自然数--->156
  2つ目の自然数--->168
出力
  最大公約数は12

第3問

ポインタを用いて変数のアドレスを表示しましょう

出力
  変数aのアドレス--->0x7fff5fbffa5c
  変数bのアドレス--->0x7fff5fbffa58

(ただし出力結果はそれぞれの環境でこれとは異なるはずです。たぶん...)

第4問

第5問

moba/C言語講習会宿題 (last edited 2013-07-21 20:53:11 by moba)