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で質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- C言語・C++・C# c言語で自然数nを入力、2以上n以下の偶数の累積sumを求めるプログラムをfor文を使って作りたいで 4 2022/11/09 14:10
- PHP htmlで複数の個数入力欄を表示させるには 1 2022/09/20 03:11
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 malloc関数を使ってください!お願いします! 最 1 2022/07/21 09:28
- Visual Basic(VBA) VBAのifで 4 2023/05/16 14:21
- Excel(エクセル) ExcelのIF関数について 4 2023/05/24 12:54
- C言語・C++・C# このプログラミングの問題を教えて欲しいです。 キーボードから整数kを入力し、kが配列aの中に何個存在 2 2022/12/19 22:50
- その他(コンピューター・テクノロジー) 【Tableau Desktop】文字列から8桁の数字を日付型(yyyyMMdd)として取得 1 2023/07/31 10:17
- Java Java 南京錠 2 2023/02/04 11:46
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
getcの改行判定
-
配列を使って魔方陣
-
#if 1 #elseの意味について
-
SIGALRMでプロセス終了
-
c言語の問題
-
行列をべき乗させるプログラム
-
for文の中にswitch文はいれられ...
-
構文エラー";"が型の前にあり...
-
scanfが実行されません
-
C言語初心者です。次の問題で質...
-
C言語 数字以外を入力させない...
-
配列を関数に渡す方法
-
階乗のプログラム!!
-
c言語のプログラムで
-
プログラミングで二番目に大き...
-
c言語
-
Enterキーを押されたら次の処理...
-
#define _CRT_SECURE_NO_WARNIN...
-
信頼区間の1.96や1.65ってどこ...
-
2÷3などの余りについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
構文エラー";"が型の前にあり...
-
#if 1 #elseの意味について
-
for文の中にswitch文はいれられ...
-
getcの改行判定
-
C言語階乗の総和を求める
-
配列を使って魔方陣
-
while文について、c言語...
-
プログラミングで二番目に大き...
-
C言語 数字以外を入力させない...
-
c言語のwhile文を使った計算で...
-
C言語プログラムが理解できなくて…
-
配列を関数に渡す方法
-
C言語で電卓を作成する。
-
C言語の二分法のプログラムにつ...
-
c言語for文
-
scanf関数を用いての加減乗除%...
-
階乗のプログラム!!
-
計算結果がlong型以上になる場...
-
初心者です。for文、if文を使っ...
-
c言語プログラミングで1から100...
おすすめ情報