程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 進制轉換 (九度oj--大整數除法)

進制轉換 (九度oj--大整數除法)

編輯:C++入門知識

前言 唉,總感覺想幫助老師確是力不從心,只能盡自己最大的努力,這一年多下來看還是學生靠譜,學歷高靠譜,學歷不能反應所有問題,但是可以反應大部分問題,至少我身為碩士經常學習算法或者計算機其它方面東西到深夜   題目 [html]   題目描述:   將一個長度最多為30位數字的十進制非負整數轉換為二進制數輸出。   輸入:   多組數據,每行為一個長度不超過30位的十進制非負整數。   (注意是10進制數字的個數可能有30個,而非30bits的整數)   輸出:   每行輸出對應的二進制數。   樣例輸入:   0   1   3   8   樣例輸出:   0   1   11   1000       思路 很明顯,30位的整數是無法用long int類型來表示的,因此我們采用char str[30]的數據結構來存儲這個大整數 字符串表示的大整數轉化為其他進制數步驟  www.2cto.com 通過將除數的每一位加起來判斷是否大於0來作為外層循環的終止條件 內層按位進行除法,存放在一個字符數組中,假設為str2 外層循環結束後,需要逆序str2數組(原理等同於用棧這種數據結構實現進制轉換)   演算紙上推導演算的過程(0:10還在學習代碼的人傷不起):     AC代碼 [cpp]   #include <stdio.h>   #include <string.h>   #include <stdlib.h>       #define DATA 40   #define MAX 200       void tenToBin(char *str);       char bin[MAX];       int main()   {       char str[DATA];           while(scanf("%s", str) != EOF)       {           tenToBin(str);           puts(bin);         }           return 0;   }       /**   * Description:字符串整數轉換為二進制   */   void tenToBin(char *str)   {       int i, j, k, len, sum, d;       char temp;           //初始化參數       sum = 1;       len = strlen(str);       k = 0;       memset(bin, 0, sizeof(bin));           while(sum)       {           sum = 0;               for(i = 0; i < len; i ++)           {               d = (str[i] - '0') / 2;               sum += d;                   if(i == len - 1)               {                   bin[k ++] = (str[i] - '0') % 2 + '0';               }else               {                   str[i + 1] += (str[i] - '0') % 2 * 10;               }                   str[i] = d + '0';           }       }               //逆序       for(i = 0, j = k - 1; i < j; i ++, j --)       {           temp = bin[j];           bin[j] = bin[i];           bin[i] = temp;       }   }   /**************************************************************      Problem: 1138      User: wangzhengyi      Language: C      Result: Accepted      Time:90 ms      Memory:908 kb  ****************************************************************/

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved