サイズ: 305
コメント:
|
サイズ: 4005
コメント:
|
削除された箇所はこのように表示されます。 | 追加された箇所はこのように表示されます。 |
行 1: | 行 1: |
C言語講習会の宿題 |
|
行 5: | 行 3: |
任意の数字の入力があった際に次のようなルールに則った出力が得られるようにしてください。 ||<#DDFFFF>'''入力'''<<BR>> 15<<BR>>|| |
Fizz''''''Buzzという遊びを知っていますか?Wikipediaによると <<BR>> ||「Fizz Buzz(フィズ・バズ、Bizz Buzz や Buzz とも呼ばれる)は英語圏で長距離ドライブ中や飲み会の時に行われる言葉遊びである」<<FootNote(http://ja.wikipedia.org/wiki/Fizz_Buzz)>>|| という遊びだそうです。それでは任意の数が与えられた時に、その数までのFizz''''''Buzz遊びの結果を出力するプログラムを組んでみましょう。 <<BR>>このゲームにおけるルールは次のようになっています。 * 3の倍数の時は"'''Fizz'''" * 5の倍数の時は"'''Buzz'''" * 15の倍数の時は"'''Fizz''''''Buzz'''" * それ以外は数字を出力 例えば入力する値が16だった場合、出力結果は次のようになります。 ||<#EEFFFF>'''入力'''<<BR>> 16<<BR>>'''出力'''<<BR>> 1<<BR>> 2<<BR>> Fizz<<BR>> 4<<BR>> Buzz<<BR>> Fizz<<BR>> 7<<BR>> 8<<BR>> Fizz<<BR>> Buzz<<BR>> 11<<BR>> Fizz<<BR>> 13<<BR>> 14<<BR>> Fizz''''''Buzz<<BR>> 16|| |
行 8: | 行 18: |
Euclidの互除法 は知っていますか?2つの数の最大公約数を知るのに便利な定理です。定理の内容は以下のようになっています。 ||<#EEFFFF>数A,B(B≠0)に対して<<BR>> A=BQ+R<<BR>>を満たす数Q,Rがただひとつ存在する。|| このままではわかりにくいので例を出すと、195と225との最大公約数はこのEuclidの互除法を用いると次のように求められます。 ||<#EEFFFF>まず、225は195を用いて次のように表されます<<BR>> 225='''195'''×1+'''30'''<<BR>>この195を、225を195で割った際に出てくる余り30で割ると<<BR>> 195='''30'''×6+'''15'''<<BR>>同様にして割った際に出てくる商である30と余りである15を用いて<<BR>> 30='''15'''×2+0<<BR>>これより195と225の最大公約数は15であることがわかりました。|| このように、面倒な素因数分解をせずとも簡単に2数の最大公約数を求めることができます。では、このEuclidの互除法を用いて、入力された任意の2数に対して最大公約数を求めるプログラムを組んでみましょう。ただし、入力される数は'''''自然数'''''とします。 <<BR>>以下は一例です。 ||<#EEFFFF>'''入力'''<<BR>> 1つ目の自然数--->156<<BR>> 2つ目の自然数--->168<<BR>>'''出力'''<<BR>> 最大公約数は12|| '''※ヒント※'''<<BR>> Cには「剰余演算子」というものがあります。自分で調べてみましょう。それを使ってとくと簡単ですよ。 |
|
行 9: | 行 27: |
ポインタを用いて変数のアドレスを表示しましょう。 ||<#EEFFFF>'''出力'''<<BR>> 変数aのアドレス--->0x7fff5fbffa5c<<BR>> 変数bのアドレス--->0x7fff5fbffa58|| (ただし出力結果はそれぞれの環境でこれとは異なるはずです。たぶん...) |
|
行 10: | 行 31: |
char型で文字列"Hello, World!!"を用意して、それをwhile文とポインタ演算を使って表示してみましょう。<<BR>> ||<#EEFFFF>'''出力'''<<BR>> Hello, World!!|| |
|
行 11: | 行 34: |
Unix環境にはyesコマンドというものが存在します(わからない人は自分で調べて下さい)。今回はコマンドライン引数から文字列を取得する方法は教えていないはずなので、scanf関数を使って文字列を変数に代入し、代入された文字列を表示し続けるyesコマンドを作成してみましょう。 ||<#EEFFFF>'''入力'''<<BR>> 文字列を入力して下さい--->Hello, World!!<<BR>>'''出力'''<<BR>> Hello, World!!<<BR>> Hello, World!!<<BR>> Hello, World!!<<BR>> …<<BR>> …<<BR>> …<<BR>> Hello, World!!|| |
第1問
FizzBuzzという遊びを知っていますか?Wikipediaによると
「Fizz Buzz(フィズ・バズ、Bizz Buzz や Buzz とも呼ばれる)は英語圏で長距離ドライブ中や飲み会の時に行われる言葉遊びである」1
という遊びだそうです。それでは任意の数が与えられた時に、その数までのFizzBuzz遊びの結果を出力するプログラムを組んでみましょう。
このゲームにおけるルールは次のようになっています。
3の倍数の時は"Fizz"
5の倍数の時は"Buzz"
15の倍数の時は"FizzBuzz"
- それ以外は数字を出力
例えば入力する値が16だった場合、出力結果は次のようになります。
入力 |
第2問
Euclidの互除法 は知っていますか?2つの数の最大公約数を知るのに便利な定理です。定理の内容は以下のようになっています。
数A,B(B≠0)に対して |
このままではわかりにくいので例を出すと、195と225との最大公約数はこのEuclidの互除法を用いると次のように求められます。
まず、225は195を用いて次のように表されます |
このように、面倒な素因数分解をせずとも簡単に2数の最大公約数を求めることができます。では、このEuclidの互除法を用いて、入力された任意の2数に対して最大公約数を求めるプログラムを組んでみましょう。ただし、入力される数は自然数とします。
以下は一例です。
入力 |
※ヒント※
Cには「剰余演算子」というものがあります。自分で調べてみましょう。それを使ってとくと簡単ですよ。
第3問
ポインタを用いて変数のアドレスを表示しましょう。
出力 |
(ただし出力結果はそれぞれの環境でこれとは異なるはずです。たぶん...)
第4問
char型で文字列"Hello, World!!"を用意して、それをwhile文とポインタ演算を使って表示してみましょう。
出力 |
第5問
Unix環境にはyesコマンドというものが存在します(わからない人は自分で調べて下さい)。今回はコマンドライン引数から文字列を取得する方法は教えていないはずなので、scanf関数を使って文字列を変数に代入し、代入された文字列を表示し続けるyesコマンドを作成してみましょう。
入力 |