解決済

clip!clip!
Ads By Google

自然数を1つ読み込み、それが偶数なら2で割った値を。奇数なら3倍して1加えた値を画面に書き出すプログラム

if文を使うんですが、偶数か奇数かを表すのに、入力値以外にaなどとおくのですが、偶数奇数はそれぞれ2*a 2*a+1 としたんですが、
int main() {
int g,a,b;
scanf("%d",&g);
a=0;
if(g=2*a )
{
b=g/2;
printf("%d\n",b);}return 0;
コレは偶数部分だけですが、ビルドはできるんですが、うまく実行できず、aの扱いがよく分かりません。それともg=2*a という定義が違っていますか?

2007-10-23 14:38の質問
この質問と回答を読んで役に立った場合は「役に立つ質問」に投票してください。投票が多い質問は、役に立つ質問一覧に掲載され、より多くの人に見てもらうことができます。

回答(1)

1.

2007-10-23 14:51:41ベスト
>g=2*a
a=0と直前にあるので、
 g=0
と同じになりますが、gに代入しても意味ないですね。
 g==2*a
とすれば比較になりますが、0と比べてもしょうがない。gが偶数であることを判定するなら、
g%2==0
になります。ちなみに、変数がgひとつで間に合います。

できなければコメント頂ければお答えします。
回答レベル : 回答

ありがとうございます。余りを出すだけでないことで、重要なことなので覚えておきます。

Ads By Google

コメント(1)

2007-10-23 17:30:31

オニ先生のおっしゃるとおりなのですが、一言アドバイスです。

>偶数奇数はそれぞれ2*a 2*a+1 と

ここの置き換えがうまくできていないようですね。

今回の場合

自然数:g

において、偶数、奇数はそう表現するかというと

自然数を2でわって、あまりが0ならば、偶数
自然数を2でわって、あまりが1ならば、奇数

などと表現ができると思います

どっちを使ってもいいのですが、前者をC言語化したのが、オニ先生がおっしゃっている

g%2==0

ということで、これがif文の判定条件になりますよね?


if(条件式1:自然数は偶数である?)
  {
    条件式1がYesならば、こうする
  }
else
  {
    条件式1がNoであれば、こっちをやる
  }
結果を出力   


あと一息ですので、頑張ってくださいね。

トラックバック(2)

トラックバックURL: