A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
(なんか「回答」がおかしく(?)なってきましたね・・)
☆No2 さんの「回答」については、No3 さんが正されています。
それにつけても、
>あまりをすべて反対にすれば、
って何??
☆No4 さんの「回答」は、
>ほぼ回答ですが・・
って、どこに「for文、if文を使って」あるんですか?
int res; → int res = 0; 初期化忘れ
scanf("%d",num); → scanf( "%d", &num ); &忘れ
num = num / 2; → num /= 2; 説明の流れから
てか、1023 を超える数で試されましたか?
☆よそ様のことを、とやかく言うのは、すごくドキドキします。
でも、あまりにも・・・。
------------------------------
★暇な年寄りがアドバイス(【参考】になれば・・)。
(ご質問主旨とは、ちょっと離れます)
#include <stdio.h>
#include <stdlib.h>
void toBinString( int iVal )
{
int i, nn = 31+3;
char cBinStr[64] = ""; // 文字列初期化
printf( "%11d", iVal ); // 10進数表記
for( i = 0; i < 32; i++ ){
if( i && ( 0 == ( i % 8 ) ) ){
cBinStr[nn--] = 0x20; // スペース
}
cBinStr[nn--] = 0x30 + abs( iVal % 2 ); // 数→文字、格納
iVal /= 2;
}
printf( " %s\n", cBinStr ); // 2進数表記
}
void main()
{
int k, iVal = 2147483645;
for( k = 0; k < 5; k++ ){
iVal++;
toBinString( iVal );
}
}
注:インデントに全角空白を用いています(タブに置換して実行してみて下さい)。
(LSI C-86不可←int型16ビット)
------------------------------------------
No1,3 さんの回答をもとに解決しましたら、
◆お二人の「経験者」のためにも、質問者権限でこの「質問」を削除することをお薦めします。
No.4
- 回答日時:
参考にwhileでのプログラムを(ほぼ回答ですが)
main(){
int n=1; ・・・桁数
int res; ・・・結果
int num; ・・・10進数
scanf("%d",num); ・・・10進数を格納
while(num>0){ ・・・10進数が0になったら終了
res += num % 2 * n;
num = num / 2; ・・・省略
n *= 10;
}
printf("%d\n",res); ・・・結果の表示
}
省略した部分は他の方が説明しているので分かると思います。
分からなかったら1回ごとの処理を手書きで計算してみるといいです。
+=とか*=とかはわかりますか?例)n += 10 → n = n + 10
ということです。ちなみに+と=の間にスペース入れるとエラー吐きますんで。
No.3
- 回答日時:
>14を2で割る(¥)と、7 >0 あまり(mod) 1
>7 を2で割ると 3 >0 あまり 1
>3 を2で割ると 1 >0 あまり 1
>1 を2で割ると 0 if文で終了 あまり 0
これはまずいです。
14を2で割ると、7 あまり 0
7 を2で割ると 3 あまり 1
3 を2で割ると 1 あまり 1
1 を2で割ると 0 あまり 1
商が0になったので終了
あまりを下から読むと1110、というのが正しいです。
No.2
- 回答日時:
サンプルで考えて見ましょう。
ここに、14という数字があります。
2進法では 1110(2)ですね。
8+4+2+0=14
basicだと、¥で商、modがあまりです。
14を2で割る(¥)と、7 >0 あまり(mod) 1
7 を2で割ると 3 >0 あまり 1
3 を2で割ると 1 >0 あまり 1
1 を2で割ると 0 if文で終了 あまり 0
なので、あまりをすべて反対にすれば、1110が求まります。
ちなみに、出たあまりを次のルーチンで10倍すれば、簡単に
1110を作れると思います。
これを、プログラミングしてみてください。
プログラムを考える上で、簡単なサンプルを手でまわしてみると難しそうなものも解けることがあります。
No.1
- 回答日時:
>仕様がありまして、2進数を求めるには、入力された10進数の数値を、
>for文とif文を使用し商が0になるまで2で割り、2進数の値を求め、表示させなければいけません。
それは仕様ではなく、実装方法ですね。
まずはその日本語のままにコーディングして下さい。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
#if 1 #elseの意味について
-
構文エラー";"が型の前にあり...
-
10進数からN進数に変換するプロ...
-
配列を関数に渡す方法
-
getcの改行判定
-
最大値と最小値を表示したいの...
-
for文の中にswitch文はいれられ...
-
素因数分解のプログラムを作成...
-
全角文字の判定
-
プログラミングで二番目に大き...
-
C言語プログラムが理解できなくて…
-
for文~break
-
マイナスからプラスへ転じた時...
-
エクセルで可視セルにのみ値貼...
-
「指定されたキャストは有効で...
-
printf による16進表示について
-
半角カナ→16進
-
C言語での引数の省略方法
-
C言語 エラーの原因がわからな...
-
【gcc・cygwin】multiple defin...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
10進数からN進数に変換するプロ...
-
構文エラー";"が型の前にあり...
-
#if 1 #elseの意味について
-
配列を使って魔方陣
-
for文の中にswitch文はいれられ...
-
getcの改行判定
-
配列を関数に渡す方法
-
C言語 プログラム
-
C言語階乗の総和を求める
-
while文について、c言語...
-
C言語 数字以外を入力させない...
-
C言語の二分法のプログラムにつ...
-
VHDLで、case文とwhen文のどち...
-
C言語で電卓を作成する。
-
c言語プログラミングで1から100...
-
scanfが実行されません
-
C言語プログラムが理解できなくて…
-
プログラミングで二番目に大き...
-
プログラム
-
C言語のプログラミング (基礎...
おすすめ情報