1樓:測繪二哈
以下程式實現一個十進位制數到二進位制數的轉換(該十進位制數可以是正數,小數,負數和整數),源程式如下:
#include
#include
void main()
int i=0,j,a[20],b[20],k,c=0;
double m,x,d;
printf("請輸入需要轉換的數:");
scanf("%lf",&x);
if(x<0)
m=fabs(x);
else
m=x;
k=(int)m;//強制型別轉換,可以使用k=(int)m;代替,從而更加的一目瞭然
while(k)//判定需要轉換的數是否變為0
a[i++]=k%2;//取餘,進行進位制轉換,但是順序與正確值相反
k/=2;//轉換一位之後進行相應的變化
if(m!=(int)m)//選擇性計算,如果是整數就不用進行這一步的計算了,這樣可以節約程式的執行時間
d=m-(int)m;//取小數部分
while(d!=0)
b[c]=(int)(d*2);//演算法為×n取整
d=d*2-b[c];
c++;
if(c>=10)
break;//主要是控制小數後面萬一出現無限小數的時候好跳出迴圈以免出現死迴圈
printf("轉換結果為:");
if(x<0)
printf("-");
for(j=i-1;j>=0;j--)//反序輸出,大於10的數字進行相應的變化
printf("%d",a[j]);
if(m!=(int)m)//選擇性輸出,這樣可以節約輸出時間和程式的執行時間
printf(".");
for(j=0;jprintf("%d",b[j]);
if(c>=10)//如果是無限小數則在後以省略號表示
printf("......");
printf("\n");//輸出換行,以使程式的輸出結果美觀
輸入1840後計算出來的二進位制則為11100110000.
如圖所示為、
2樓:匿名使用者
以上方法繁雜 效率不高
法同二樓的二進位制原理
x=1840
while (x)
printf("/n");
即可 (我學pascal的,寫c++簡直自虐 有錯請包含)注:輸出的是倒序,倒過來的話隨便弄個陣列或字串就行了
3樓:
數學解法是
1.a=1840
2.i=0 位數
3.i=i+1
4.b[i]=a mod 2 取餘
5.a=a div 2 取商
6.當a<>0,goto第3步
7。輸出b[i..1] 連成的數就是2進位制的1840
4樓:栩箭
int c;
c=1840;
這樣電腦就會自動幫你轉化成2進位制存記憶體中
c語言將十進位制轉化為二進位制,c語言程式設計,如何將十進位制轉化為2進位制
十進位制轉二進位制可以使用庫函式itoa。itoa函式原型 char itoa int value,char string,int radix 功能 將任意型別的數字轉換為字串。在中與之有相反功能的函式是atoi。nt value 被轉換的整數,char string 轉換後儲存的字元陣列,int ...
初學c語言程式設計問題,c語言程式設計怎樣入門
考慮什麼時候word 0,只有2種情況 一種是程式剛開始word 0,另一種是if c 也就是遇到空格的時候 所以當你遇到不是空格,並且word 0時,是不是說明,遇到一個新的單詞了,那麼word 1說明進入到一個單詞,計數,num 舉個例子,比如輸入是hello my friend 當遇到第一個字...
用c語言程式設計將數數分解因式,如90
給,已經執行確認 include include int prime int n if i t 1 return 1 return 0 int main else return 0 將一個正整數分解質因數。例如 輸入90,列印出90 2 3 3 5。 我走的慢 include int main 1 ...