2012年1月9日 星期一

acm 10473: Simple Base Conversion

 [心得] :0.012
1.題目說這個數10進位的值一定小於 231 
   所以可以用2的31次方數值試看看
 2.用long long int宣告 scanf 記得用%lld

3. (網路上別人寫的文章)
字串轉數字
int nValue;
float fValue;
CString szValue = "224";
sscanf(szValue,"%d",&nValue);
szValue = "5.82";
sscanf(szValue,"%f",&fValue);
以上為sscanf()的用法
第一個參數為我們所要轉換的字串
第二個參數則是該字串的格式 如果我們要將他轉成整數 則裡面就是"%d"
如果是要轉浮點數 裡面就是"%f"
轉好的結果就會放在第三個參數所指的位置裡面
特別要注意 第三個參數是要傳入指標 不是傳入數值

#include <stdio.h>

int main()
{
   char a[4000];
   long long int number;
   while(gets(a)!=NULL)
   {
     if(a[0]=='-') break;
    
     if(a[1]=='x')
     {
       sscanf(a,"%x" ,&number),
       printf("%lld\n", number);  
     }
     else
     {
        sscanf(a ,"%lld" ,&number),
        printf("0x%X\n", number);  
     }        
   }
  system("pause");
  return 0;
}

沒有留言:

張貼留言