在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ C/ 一起talk C栗子吧(第七回:C語言實例--進制轉換)
一起talk C栗子吧(第八回:C語言實例--素數)
一起talk C栗子吧(第十八回:C語言實例--輸出十六進制)
一起talk C栗子吧(第十七回:C語言實例--棧二)
一起talk C栗子吧(第十九回:C語言實例--位操作)
一起talk C栗子吧(第十六回:C語言實例--棧一)
一起talk C栗子吧(第五回:C語言實例--數組巧妙賦值)
一起talk C栗子吧(第十二回:C語言實例--單鏈表一)
一起talk C栗子吧(第九回:C語言實例--最大公約數)
一起talk C栗子吧(第二回:C語言實例--判斷閏年)
一起talk C栗子吧(第六回:C語言實例--生成隨機數)
一起talk C栗子吧(第四回:C語言實例--斐波那契數列)
一起talk C栗子吧(第十四回:C語言實例--循環(huán)鏈表)
一起talk C栗子吧(第十五回:C語言實例--雙向鏈表)
一起talk C栗子吧(第二十一回:C語言實例--表達式求值)
一起talk C栗子吧(第三回:C語言實例--求階乘)
一起talk C栗子吧(第七回:C語言實例--進制轉換)
一起talk C栗子吧(第二十回:C語言實例--括號匹配)
一起talk C栗子吧(第一回:C語言實例概述)
一起talk C栗子吧(第十回:C語言實例--最小公倍數)
一起talk C栗子吧(第十一回:C語言實例--文件組織結構)
一起talk C栗子吧(第十三回:C語言實例--單鏈表二)

一起talk C栗子吧(第七回:C語言實例--進制轉換)

各位看官們,大家好,從今天開始,我們講大型章回體科技小說 :C栗子,也就是C語言實例。閑話休提, 言歸正轉。讓我們一起talk C栗子吧!

看官們,上一回中咱們說的是生成隨機數的例子,這一回咱們說的例子是:進制轉換。說到進制估計大家 都不陌生,計算機中的進制有二進制,八進制,十進制,十六進制。

今天咱們將要說的是十進制如何轉換成二進制,八進制和十六進制。在這里我把寫程序的步驟和算法思路 寫出來供大家參考。

  • 1.獲取用戶想要轉換的數值和想到轉換的進制。這里要檢查輸入是否正確。這是程序健壯性的體現。
  • 2.依據用戶輸入的不同進制,進行不同的轉換。在代碼中,我把轉換過程封裝成了一個函數。
  • 3.輸出轉換后的結果。輸出轉換后的結果也封裝成了一個函數。

看官們,咱們接下來說說如何進行進制轉換,也就是進制轉換函數的內容。

  • 1.使用被轉換的數值模轉換進制,并且把模的結果保存起來。比如被轉換的數值為9,轉換進制為2.那么模的 結果 =9%2.該步驟要執(zhí)行多次,具體的次數由步驟2決定。把每次執(zhí)行的結果從左到右排列成一排就是轉換 進制的結果。在程序中使用一個數組來保存結果。
  • 2.使用被轉換的數值除以轉換進制,并且判斷商是否為0.如果不為0重復步驟1和2,直到商等于0為止。

看官們,說完了轉換函數,咱們接下來說說輸出進制轉換結果的函數。

  • 1.輸出結果時與轉換轉換函數中保存結果的順序正好相反。保存是沿著數組頭到尾的方向,輸出時是沿著 數組尾到頭的方向。兩個方向正好相反。
  • 2.十六進制的輸出結果中包含A-F這些字符,所以專門對它們進行了轉換。

看官們,詳細的代碼如下,請大家參考:

     1  /* **************************
     2   * For Hex conversion
     3   * *************************/
     4  #include<stdio.h>
     5  
     6  /*convert function
     7   *Parameter a is used for saving converting result
     8   *Parameter iVal is a value ,which will be converted.
     9   *Parameter base is a base value ,
    10   */
    11  
    12  #define SUCCESS 0
    13  #define FALSE 1
    14  #define BIT 32
    15  
    16  int convert(int *a,int iVal,int base)
    17  {
    18      int index = 0;
    19      int res = 0;
    20  
    21  
    22      if(NULL == a)// check the pointer
    23      {
    24          printf("null pointer \n");
    25          return FALSE;
    26      }
    27      
    28      if( 0 == base) //check the base, 0 can't be used for division
    29      {
    30          printf("bad value of base \n");
    31          return FALSE;
    32      }
    33  
    34      res = iVal;
    35      //the main algorithm
    36      do
    37      {
    38          *(a+index) = res % base;
    39          res /= base;
    40          ++index;
    41      }while(res != 0);
    42  
    43      return SUCCESS;
    44  }
    45  
    46  int showConvertResult(int *a)
    47  {
    48      int index = 0;
    49  
    50      if(NULL == a)// check the pointer
    51      {
    52          printf("null pointer \n");
    53          return FALSE;
    54      }
    55  
    56      for(index=BIT; index>0; --index)
    57      {
    58          if(index %4 == 0)
    59              printf(" ");
    60  
    61          switch( *(a+index-1) ) // input hex character
    62          {
    63          case 10:
    64              printf("%c",'A');
    65              break;
    66          case 11:
    67              printf("%c",'B');
    68              break;
    69          case 12:
    70              printf("%c",'C');
    71              break;
    72          case 13:
    73              printf("%c",'D');
    74              break;
    75          case 14:
    76              printf("%c",'E');
    77              break;
    78          case 15:
    79              printf("%c",'F');
    80              break;
    81          default:
    82              printf("%d",a[index-1]);
    83              break;
    84          }
    85      }
    86  
    87      printf("\n");
    88  
    89      return SUCCESS;
    90  }
    91  
    92  int main()
    93  {
    94      int base = 0;
    95      int iVal =0;
    96      int result = 0;
    97      int hex[BIT] = {0}; // the max bit is 32
    98  
    99      printf("please input a number for conversion: \n");
   100      if(0 == scanf("%d",&iVal))
   101      {
   102          printf("Input number is not right \n");
   103          return FALSE;
   104      }
   105  
   106      printf("please select a char for conversion: \n");
   107      printf(" \t ->Decimal conver to  Binary:input 1 : \n");
   108      printf(" \t ->Decimal conver to  Octonary:input 2 : \n");
   109      printf(" \t ->Decimal conver to  Hex:input 3 : \n");
   110  
   111      if(0 == scanf("%d",&base))
   112      {
   113          printf("Input number for selecting is not right \n");
   114          return FALSE;
   115      }
   116  
   117      switch(base)
   118      {
   119      case 1:
   120          result = convert(hex,iVal,2);
   121          break;
   122  
   123      case 2:
   124          result = convert(hex,iVal,8);
   125          break;
   126  
   127      case 3:
   128          result = convert(hex,iVal,16);
   129          break;
   130  
   131      default:
   132          break;
   133  
   134      }
   135  
   136      if(result == FALSE)
   137          return FALSE;
   138      else 
   139      {
   140          showConvertResult(hex);
   141          return SUCCESS;
   142      }
   143  }

各位看官,關于進制轉換的例子咱們就說到這里。欲知后面還有什么例子,且聽下回分解。