天天看點

3-n進制轉換為10進制3-n進制轉換為10進制

3-n進制轉換為10進制

#include <stdio.h>
#include <string.h>
int main()
{
    long t1;
    int i, n, t, t3;
    char a[100];
    printf("please input a number string:\n");
    gets(a);											/*輸入n進制數存到數組a中*/
    strupr(a);											/*将a中的小寫字母轉換成大寫字母*/
    t3 = strlen(a);										/*求出數組a的長度(這個函數不是标準C語言函數,在Linux下,需要自己去定義一個)*/
    t1 = 0;												/*為t1賦初值0*/
    printf("please input n(2or8or16):\n");
    scanf("%d", &n);										/*輸入進制數*/
    for (i = 0; i < t3; i++)
    {
        if (a[i] - '0' >= n && a[i] < 'A' || a[i] - 'A' + 10 >= n)			/*判斷輸入的資料和進制數是否相符*/
        {
            printf("data error!!");							/*輸出錯誤*/
            exit(0);										/*退出程式*/
        }
        if (a[i] >= '0' && a[i] <= '9')							/*判斷是否為數字*/
            t = a[i] - '0';									/*求出該數字賦給t*/
        else if (n >= 11 && (a[i] >= 'A' && a[i] <= 'A' + n - 10))		/*判斷是否為字母*/
            t = a[i] - 'A' + 10;								/*求出字母所代表的十進制數*/
        t1 = t1 * n + t;									/*求出最終轉換成的十進制數*/
    }
    printf("the decimal is %ld\n", t1);							/*将最終結果輸出*/
} 
           

繼續閱讀