X進位制轉成Y進位制
阿新 • • 發佈:2021-03-16
程式思想:
1:由於X和Y是任意數,所以進位制轉換時必須以十進位制為橋樑來進行轉換,轉換時要注意輸入的sum裡面可能含有字母,因此以字串形式輸入。
2:純數字與數字字元之間的ASCII碼相差48,即’0’-0=48;字母字元與之對應的數字之間的ASCII碼之間的轉換’A’-10=65
//x進位制->十進位制->y進位制 //重難點:x>10或者y>10 #include<stdio.h> #include<string.h> int main() { int x , y , i , temp , sum = 0 , len = 0; char num[80]={0}; char result[80]={0}; printf("請輸入x,y,num:\n"); scanf("%d %d %s",&x,&y,num); //x進位制轉化成十進位制為sum len = strlen(num); for(i = len - 1; i >= 0; i-- ) { if(num[i] > 57)//9的ASCII碼是57 temp = num[i] - 55; else temp = num[i] - 48; sum = sum * x + temp % x; } printf("%d\n",sum); //十進位制sum轉y進位制 i = 0; while(sum) { if(sum % y >= 10) result[i++] = sum % y + 55; else result[i++] = sum % y + 48; sum /= y; } result[i] = '\0'; for(i = strlen(result)-1; i >= 0; i--) putchar(result[i]); return 0; }
執行結果: