2014-10-29, 10:54 PM
|
#5 (permalink)
|
管理員
|
以下是迪西自己的寫法
PHP 語法:
#include<stdio.h> #include<stdlib.h>
// 副程式:輸入1~15 dec 轉 hex, if 公式 int HEX_ABC_if (int DEC, bool Caps) { if (DEC < 10) // 數值 < 10 的 { return 48+DEC; } // 使用 ACSII 碼轉換為"文字格式" 的數字 else // 數值 > 10 的轉換 { if (Caps) // HEX 字母大小寫變換 { return 55+DEC; } // 使用 ACSII 碼轉換成大寫字母 else { return 87+DEC; } // 使用 ACSII 碼轉換成小寫字母 } return 0; }
// 主程式 int main(int argc, char *argv[]) { int Index; // 則位紀錄資料時,位置移位數。 char Display[21]=""; //提供儲存轉換的結果 int Base,Quotient,Residue,Number; // Base=進位轉換的基數, Quotient=商數, // Residue=餘數, Number=輸入的數值 int i; // 供 for loop 使用 char Temp; // 供 for loop 使用
while(1) // 重複執行輸入與轉換的 while loop { // 構成數字輸入的功能 printf("\n請輸入10進位數數字:"); scanf("%d", &Number); // 係利用長除法以下的 while loop 實現,取得進位數轉換值。 // 但是數值左右顛倒的。 Quotient=Number; // scanf 從取得的數值給 Quotient Base=16; //設定底數的除數。 Index=0; // Display 的 Index 規零 while (Quotient > 0) // 只要商數 > 0 就進入執行 { Residue = Quotient; // 設定長除法的被除數 Quotient /= Base; // 取得目前的商數 Residue %= Base; // 取得目前的餘數 Display [Index++] = HEX_ABC_if (Residue,1); // 將取得的餘數轉成 hex 編碼,並儲存到 Display 中。 } Display[Index+1]='\0'; // 補上 C/C++ 語言的字串結尾。
// 以下的 for loop 是把 Display 中的左右顛倒結果,反轉修正回來。 for (i = 0; i < Index/2; i++) { Temp = Display[i]; Display[i] = Display[Index-1-i]; Display[Index-1-i] = Temp; } printf("\n輸入的10進位數:[%d]\n",Number); printf("輸出的16進位數:[%s]\n",Display); } return 0; }
|
__________________
在「專業主討論區」中的問題解決後,要記得按一下 按鈕喔,
這是一種禮貌動作。
一樣是在「專業主討論區」中發問,不管問題解決與否,都要回應別人的回答文喔。
不然搞 [斷頭文],只看不回應,下次被別人列入黑名單就不要怪人喔。
天線寶寶說再見啦~ ... 天線寶寶說再見啦~
迪西:「再見~ 再見~」
『 Otaku Culture Party 』 關心您 ...
|
|
送花文章: 37855,
收花文章: 6441 篇, 收花: 26052 次
|