Board logo

標題: [Zj]2011 06 25 十進位轉二進位 不超過八位數 C++ [打印本頁]

作者: buy    時間: 2011-6-25 10:48     標題: [Zj]2011 06 25 十進位轉二進位 不超過八位數 C++

本帖最後由 buy 於 2011-7-23 10:14 編輯
  1. #include<stdio.h>   
  2. #include<stdlib.h>
  3. #include<string.h>

  4. int main()
  5. {
  6.                 char x[10];      //使用者輸入
  7.                 while(gets(x))   
  8.                 {   
  9.                         int a,b,temp=0,temppoint=0;   //temp為小數點前數字,temppoint為小數點後數字
  10.                         for(a=0 ; a<(int)strlen(x) ; a++)   
  11.                         {   
  12.                                 if(x[a]=='.')   
  13.                                 break;   
  14.                                 temp=temp*10+x[a]-48;   
  15.                         }   
  16.                         for(b=a+1;b< (int)strlen(x);b++)   
  17.                         {   
  18.                                 temppoint=temppoint*10+x[b]-48;   
  19.                         }   
  20.                         //************以上為抓取使用者所輸入的整數位數,小數位數

  21.                         int n=a,n1=b-a-1;  
  22.                         int y[50];   
  23.                         a=0;   //計算迴圈數
  24.                         if(temp!=0)               
  25.                         {         
  26.                                 while(temp!=1)         
  27.                                 {      
  28.                                         y[a]=temp%2;      
  29.                                         temp=temp/2;      
  30.                                         a++;      
  31.                                 }      
  32.                                 printf("1");         
  33.                                 for(b=a-1;b>=0;b--)   
  34.                                 {      
  35.                                         printf("%d",y[b]);      
  36.                                 }      
  37.                                 printf(".");      
  38.                         }      
  39.                         else     
  40.                                 printf("0.");   
  41.    
  42.                         int m=1;   
  43.                         for(a=0;a<n1;a++)   
  44.                         {   
  45.                                 m=m*10;   
  46.                         }

  47.                         while(1)   
  48.                         {   
  49.                                  temppoint=temppoint*2;   
  50.                                  printf("%d",temppoint/m);   
  51.                                  temppoint=temppoint%m;   
  52.                                  if(temppoint==0) break;   
  53.                         }      
  54.                         printf("\n");   
  55.   }   
  56.         return 0;
  57. }
複製代碼

作者: buy    時間: 2011-6-25 12:01

大數相減:

[attach]293[/attach]




歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://istak.org.tw/seed/) Powered by Discuz! 7.2