主题:哪位高手谁能帮我一下
一点小无知
[专家分:0] 发布于 2011-09-06 15:07:00
将某一十进制整数转换为十六进制,输出该十六进制数的各位数字之和,而后将这个十六进制数进行翻转(即逆序)后再次转换为十进制并输出。如十进制数12349转换为十六进制后为303DH,则该数十六进制数的各位数字之和为十进制的19(因为十六进制的D代表13,所以3+0+3+13=19);然后将303DH翻转后为D303H,再次转换为十进制后输出结果为54019。
回复列表 (共3个回复)
沙发
gongwenbiao [专家分:0] 发布于 2011-09-08 16:39:00
#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';
}
板凳
lijiaoyand [专家分:50] 发布于 2011-09-15 18:39:00
没办法啊 我也不知道啊
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 楼
1505777477 [专家分:0] 发布于 2011-09-17 16:26:00
#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);
}
我来回复