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); /*将最終結果輸出*/
}