藍橋杯基礎練習 十六進位制轉十進位制
阿新 • • 發佈:2018-12-22
基礎練習 十六進位制轉十進位制
之前沒想到最後的結果這麼大,從int開始改long,之後應該輸出4268084666的地方輸出了負數,又繼續改成了long long。
long,long long 的表示範圍:
long 2147483648~2147483647
long long的最大值:9223372036854775807
long long的最小值:-9223372036854775808
#include<stdio.h> #include<string.h> int main() { char h[8]; int i,j=0; scanf("%s",h); long long sum=0; long long q=1; for(i=strlen(h)-1;i>=0;i--)//對每一位進行判斷 { switch(h[i]) { case '0':sum=sum+0*q;break; case '1':sum=sum+1*q;break; case '2':sum=sum+2*q;break; case '3':sum=sum+3*q;break; case '4':sum=sum+4*q;break; case '5':sum=sum+5*q;break; case '6':sum=sum+6*q;break; case '7':sum=sum+7*q;break; case '8':sum=sum+8*q;break; case '9':sum=sum+9*q;break; case 'A':sum=sum+10*q;break; case 'B':sum=sum+11*q;break; case 'C':sum=sum+12*q;break; case 'D':sum=sum+13*q;break; case 'E':sum=sum+14*q;break; case 'F':sum=sum+15*q;break; } q=q*16; } printf("%lld",sum); return 0; }