A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

wangxiaojun111

初级黑马

  • 黑马币:

  • 帖子:

  • 精华:

© wangxiaojun111 初级黑马   /  2015-11-29 00:57  /  683 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

#include<stdio.h>
#include<string.h>
void TentoAny(int number,char *str,int digits)
{
int i=0;
if(digits>16||digits<2)//非2~16进制则直接退出
return ;
while(number)
{
switch(number%digits)
{//根据余数的情况做相应处理
case 15:
str[i++]='F';
break;
case 14:
str[i++]='E';
break;
case 13:
str[i++]='D';
break;
case 12:
str[i++]='C';
break;
case 11:
str[i++]='B';
break;
case 10:
str[i++]='A';
break;
default:
str[i++]=number%digits+'0';
break;
}
number=number/digits;
}
str[i]='\0';
strrev(str);//strrev函数定义在string.h中的,是对字符串做逆序处理的函数
//这里需要逆序的原因是因为得到的结果为该进制的逆序
}
int main()
{
int number,i;
char str[80];
printf("输入一个十进制数:");
scanf("%d",&number);
printf("\n---------2到16进制对应关系----------\n");
for(i=2;i<=16;i++)
{
TentoAny(number,str,i);
printf("%d转换为%d进制为:%s\n",number,i,str);
}
return 0;
}
上面的的switch语句也可替换为如下代码:
if(number%digits>=10)
{
str[i++]='A'+(number%digits-10);
}
else
{
str[i++]=number%digits+'0';
}




1 个回复

倒序浏览

回帖奖励 +41

66666666666666666666
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马