1. 程式人生 > >藍橋杯基礎練習 十六進位制轉十進位制

藍橋杯基礎練習 十六進位制轉十進位制

基礎練習 十六進位制轉十進位制
之前沒想到最後的結果這麼大,從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;
}