C语言趣味编程100例——数制转换
来源:互联网 发布:做淘宝美工工资高吗 编辑:程序博客网 时间:2024/05/17 21:57
1.给一个M进制的数x,实现对x向任意的一个非M进制的数的转换;
2.基本概念:
基数:用一组固定的数字来表示数的大小,这组固定的数字的个数就称为该计数制的基数;
eg:十进制的基数是10;二进制的基数是2;
权:每一个数位都有一个固定的基值与之对应,称为权;对于一个M进制的数来说,小数点左边各位上对应的权值从右到左分别为基数的0次方,基数的1次方,对于小数点右边各位上对应的权值从左到右分别为基数的-1次方,基数的-2次方
二进制,八进制,十六进制向十进制转换:按权展开相加;
十进制转换成二进制,八进制,十六进制:整数部分除以基数取余数(取余的方向为从后向前);小数部分乘以基数取余数(取整的方向为从前向后)
二进制,八进制,十六进制相互转换:先转换成十进制再转换成其他进制;或者按照其对应关系进行转换;
程序如下:
#include <stdio.h>
#define MAXCHAR 101
int char_to_num(char ch);
char num_to_char(int num);
long source_to_decimal(char temp[],int source);
int decimal_to_object(char temp[],long decimal_num,intobject);
void output(char temp[],int length);
main ()
{
intsource,object,length;
long decimal_num;
char temp[MAXCHAR];
int flag=1;
while(flag)
{
printf("before convert number:");
scanf("%s",temp);
printf("shuzhi:");
scanf("%d",&source);
printf("convert shuzhi:");
scanf("%d",&object);
printf("output number:");
decimal_num=source_to_decimal(temp,source);
length=decimal_to_object(temp,decimal_num,object);
printf("%d\n",length);
output(temp,length);
printf("continue:1 ",length);
scanf("%d",&flag);
}
}
int char_to_num(char ch)
{
if(ch>'0'&&ch<='9')
{
return ch-'0';
}
else
return ch-'A'+10;
}
char num_to_char(int num)
{
if(num>=0&&num<=9)
return(char)('0'+num-0);
else
return(char)('A'+num-10);
}
long source_to_decimal(char temp[],int source)
{
long decimal_num=0;
int length,i;
for(i=0;temp[i]!='\0';i++)
length=i;
for(i=0;i<=length-1;i++)
decimal_num=(decimal_num*source)+char_to_num(temp[i]);
return decimal_num;
}
int decimal_to_object(char temp[],long decimal_num,intobject)
{
int i=0;
while(decimal_num)
{
temp[i]=num_to_char(decimal_num%object);
decimal_num=decimal_num/object;
i++;
}
temp[i]='\0';
return i;
}
void output(char temp[],int length)
{
int i;
for(i=length-1;i>=0;i--)
printf("%c",temp[i]);
printf("\n");
}
- C语言趣味编程100例——数制转换
- c语言趣味编程100例——排序
- c语言趣味编程100例——迭代循环:
- 数制转换(c语言)
- C语言实现数制转换
- C语言实现数制转换
- c语言趣味100例——穷举循环
- 趣味100道C语言编程题
- C语言趣味编程两小例
- 数据结构-C语言 栈的简单应用——10进制以内的数制转换
- C语言与Java实现:数制转换
- 趣味100道C语言编程题num eight
- 趣味100道C语言编程题num ten
- 趣味100道C语言编程题num seven
- 趣味100道C语言编程题num thirteen
- 《C语言趣味编程一例》的改进
- 趣味编程题——漏掉的账目(C语言编写)
- C语言趣味程序设计编程百例精解
- 3D匹配原理
- 视频播放器的界面设计并实现播放器
- hbase
- .ts是视频的一种封装格式
- c++ 私有继承
- C语言趣味编程100例——数制转换
- 超实用压力测试工具-ab工具
- iOS 分割NSString字符串为NSArray数组componentsSeparatedByString
- android listview中那些后知后觉的属性或方法
- Nginx安装
- 关于RecycleView的一些讲解和记录
- Hello World!
- 1242 斐波那契数列的第N项(矩阵快速幂)
- 详解java的四舍五入与保留位