知識、知恵のカタマリ

[PR]コレがGoogleの検索ストーリー

解決済

clip!clip!
Ads By Google

入力した数(1以上)を次々と2で割り、その余りをそれぞれ書き出し、商が0になったら終了するプログラム。

int main(void)
{int a,b,n;
printf("aを入力 > ");
scanf("%d", &a);
a=a/2;
if(a>=1)
{b=a%2;
printf("%d\n", b);
}return 0;}
ここまではできたんですが、次々と2で割るのでa=a/2を繰り返ししなくてはならないかと思います。
whileを使うのですか? 

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

回答(1)

1.

2007-10-24 13:06:14ベスト
#include <stdio.h>

int main(){



int a,b,n;
int i;
printf("1以上の整数を入力してください");
scanf("%d", &a);

if( a < 1 ){
printf("1以下の数字が入力されました");
}

for( a ; a > 1 ; a = a / 2){


if( a > 0 ){
printf("\n%d ÷ 2の余りは%d",a, a % 2 );
}


}
}

ありがとうございす。 forのなかに実行する計算式ははじめてみました。

Ads By Google

コメント(1)

2007-10-24 15:07:39

whileでできます。条件は「aを2で割った商が0でない間」なので、「a/2!=0」です。Cではintで割り算するとintで返ってくるので、この条件で問題ないです。
#多くのスクリプト言語では暗黙の型変換で小数が返ってきて、この条件はうまくいかないです。
順番に注意して下さい。割った商を代入するのはループ内の末尾です。

>>1
バグがあります。

トラックバック(2)

トラックバックURL: