2017-09-14 13 views
-3
#include <iostream> 
#include<stdio.h> 
using namespace std; 

int main() 
{ 
    int x,i,y,d=0; 
    char c[255]; 
    gets(c); 
    for(i=0;c[i]!='\0';i++) 
    { 
     if(c[i]>=0 && c[i]<=9) 
     { 
      x=c[i]; 
      cout<<x; 
      d=(d*16)+x; 
     } 
     else if(c[i]>=65 && c[i]<=90) 
     { 
      y=c[i]-55; 
      d=(d*16)+y; 
     } 
    } 
    cout<<d; 
    return 0; 
} 

ここで整数dは10進数になります。 Code :: Blocksで実行されているプログラムはエラーを表示しません。 は助けてくれてありがとう:)16進数から10進数に変換するプログラムが動作しない

+1

、具体的に動作していないいただきましたか!? – Legman

+0

'gets(c)'なぜあなたはこれをしますか?情報を読み込むためのいくつかのより良い方法。また、何が動作していないか – JackVanier

+0

タスクについて[ストリームマニピュレータ](http://en.cppreference.com/w/cpp/io/manip/hex)を使用するだけです。 – Ron

答えて

2

あなたのキーボード入力が0..930..39ある..すなわち'0''9'をASCII-文字はないが返されます。同様に、'A'65(ない55)です:

if(c[i]>='0' && c[i]<='9') 
    { 
     x=c[i] - '0'; 
     cout<<x; 
     d=(d*16)+x; 
    } 
    else if(c[i]>='A' && c[i]<='F') 
    { 
     y=c[i] - 'A'; 
     d=(d*16)+y; 
    } 
+2

'if(c [i]> = 'A' && c [i] <= 'F')'と 'y = c [i] - 'A'; '。 –

関連する問題