回 帖 发 新 帖 刷新版面

主题:哪位高手谁能帮我一下

将某一十进制整数转换为十六进制,输出该十六进制数的各位数字之和,而后将这个十六进制数进行翻转(即逆序)后再次转换为十进制并输出。如十进制数12349转换为十六进制后为303DH,则该数十六进制数的各位数字之和为十进制的19(因为十六进制的D代表13,所以3+0+3+13=19);然后将303DH翻转后为D303H,再次转换为十进制后输出结果为54019。

回复列表 (共3个回复)

沙发

#include <iostream.h>
void main()
{
    int a,b[10],s=0,s2=0;
    int i=0,j=0;
    cin>>a;
    do 
    {
        b[i]=a%16;
        a=a/16;
        i++;
    } while (a);

    for (j=0;b[j]>-1;j++)
    {
        s=s+b[j];
    }
    cout<<s<<'\n';
    for(j=0;b[j]>-1;j++)
    {
        s2=s2*16+b[j];
        
    }
    cout<<s2<<'\n';

}

板凳

没办法啊  我也不知道啊






SIGNATURE:-----------------------------------
Imagination is more important than knowledge.
[url=http://www.orderfrees.com/nike-free-run-2-c-81.html]nike free run 2[/url]  ,   [url=http://www.finevipshop.com/nike-lunarglide-3-men-nike-lunarglide-3-c-52_53.html]nike lunarglide 3[/url]   ,   [url=http://www.runonewin.com/nike-free-run-2-c-5.html]nike free run 2[/url]

3 楼


#include<string.h>
#include<stdio.h>
int input()
{
    int i;
    printf("输入十进制数:");
    scanf("%d",&i);
    return i;
}
char inttochar(int i)
{
    char c;
    switch(i)
    {
    case 10:
        c='a';
        break;
    case 11:
        c='b';
        break;
    case 12:
        c='c';
        break;
    case 13:
        c='d';
        break;
    case 14:
        c='e';
        break;
    case 15:
        c='f';
        break;
    default:
        c=i+48;
        break;
    }
    return c;
}
void swap(int num10,char *num16)
{
    int i=0,temp,sum=0;
    while(num10!=0)
    {
        temp=num10%16;
        sum=sum+temp;
        num16[i]=inttochar(temp);
        num10=num10/16;
        i++;
    }
    num16[i]='\0';
    i--;
    printf("\n原十六进制数:");
    for(;i>=0;i--)
    {
        printf("%c",num16[i]);
    }
    printf("   各位之和%d",sum);


void reverse(char *num16)
{
    int i=0,j=strlen(num16)-1;
    char temp;
    printf("\n翻转后十六进制数:%s",num16);
    while(i<j)
    {
        temp=num16[i];
        num16[i]=num16[j];
        num16[j]=temp;
        i++;
        j--;
    }
    
}

int chartoint(char c)
{
    int i;
    switch(c)
    {
    case 'a':
        i=10;
        break;
    case 'b':
        i=11;
        break;
    case 'c':
        i=12;
        break;
    case 'd':
        i=13;
        break;
    case 'e':
        i=14;
        break;
    case 'f':
        i=15;
        break;
    default:
        i=c-48;
        break;
    }
    return i;
}

void newnum10(char *num16)
{
    int i,newint10=0,temp=1;
    for(i=0;i<strlen(num16);i++)
    {
        newint10=chartoint(num16[i])*temp+newint10;
        temp=temp*16;
    }
    printf("\n翻转后的十进制数%d",newint10);
}
void main()
{
    int number;
    char num16[10];
    number=input();
    swap(number,num16);
    reverse(num16);
    newnum10(num16);
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册