作业:从键盘上输入一个字符串,去掉所有非十六进制字符后转换成十进制输出

要求:输入"g2sh8iBof"输出值 10431

解答:考察字符串数组基础支持,这里还没学到指针,答案里没有使用指针。

#include <stdio.h>
#include <string.h>
#include <math.h>

void main(void)
{
    char szHex[4],szRaw[] = "g2sh8iBof";

    int i,j=0,iRet = 0 ,len = strlen(szRaw);

    for (i = 0 ; i < len; i++){
        
        if(//anscii 0-9
            szRaw[i] >= '0' && szRaw[i] <= '9' 
            //anscii A-F
            || szRaw[i] >= 'A' && szRaw[i] <= 'F'
            //anscii a-f
            || szRaw[i] >= 'a' && szRaw[i] <= 'f'
            ){
            szHex[j++] = szRaw[i];
        }

        
    }
    
    
    for(i = 0; i < j; i++){
        if(szHex[i] >= '0' && szHex[i] <= '9' )
            
            iRet += ( szHex[i] - '0' ) * pow(16, 4-i-1);
        
        if(szHex[i] >= 'A' && szHex[i] <= 'F')
            
            iRet += (szHex[i] - 'A' + 10) * pow(16, 4-i-1);                
        
        if(szHex[i] >= 'a' && szHex[i] <= 'f')
            
            iRet += (szHex[i] - 'a' + 10) * pow(16, 4-i-1);
    }
    
    printf("%d
",iRet);
}

在线编译测试:https://ideone.com/ISg1Cr

原文地址:https://www.cnblogs.com/passedbylove/p/9153868.html