首页 > 其他分享 >数制转换

数制转换

时间:2023-04-24 18:23:25浏览次数:29  
标签:字符 转换 temp int decimal char num 数制

问题:给定一个M进制的数x,实现对x向任意一个非M进制的数转换。

分析:十进制转其他进制,整数部分除以基数取余数(取余数的方向从后往前),小数部分乘以基数取整数(取整方向从前往后);其他进制转十进制:按权展开相加;其他进制转其他进制:先转为十进制再转为其他进制。十六进制0到F,故是字符数组,因此我们需要定义一个char_to_number函数来使字符数组转换为数字,同时定义一个number_to_char函数来把数字转化成字符数组。字符转换成数字:字符-‘0’所得的ASCII值即为该数字,对于A到F则·需要让字符-‘A’+10即可。数字转换成字符:0到9可以使用强制类型转换,10以后的数字则是‘A’+num-10;

#include<stdio.h>
#define N 10
/*将字符转换成数字*/
int char_to_num(char ch)
{
if(ch>='0'&&ch<='9')
return ch-'0'; //字符小于10
else
return ch-'A'+10;//字符大于10
}
/*将数字转换为字符*/
char num_to_char(int num)
{
if(num>=0&&num<=9)
return (char) ('0'+num-0);//将0到9间的数字转换成字符
else
return (char)('A'+num-10);//将大于10的数字转换为字符
}
/*其他进制转十进制*/
long source_to_decimal(char temp[],int source)
{
long decimal=0;
int length;
int i;
for(i=0;temp[i]!='\0';i++)

{
length=i;}
for(i=0;i<=length;i++)
{
decimal=(decimal*source)+char_to_num(temp[i]);
}

return decimal;
}
int decimal_to_object(char temp[],long decimal,int object)
{
int i=0;
while(decimal)
{
temp[i]=num_to_char(decimal%object);//求出余数并转换成字符
decimal=decimal/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");

}

int main()
{

int source; //存储原数制
int object; //存储目标数制
int length; //存储转换成目标数制后字符数组的长度
long decimal; //存储转换成的十进制数
char temp[N];//存储待转换的数值和转换好的数值
int flag=1; //存储是否退出程序的标志
while(flag)
{
printf("转换前的数是");
scanf("%s",temp);
printf("转换前的数制是");
scanf("%d",&source);
printf("转换后的数制是");
scanf("%d",&object);
printf("转换后的数是");
decimal=source_to_decimal(temp,source);
length=decimal_to_object(temp,decimal,object);
output(temp,length);
printf("qingjixvshuru");
scanf("%d",&flag);


}

return 0;
}

 

标签:字符,转换,temp,int,decimal,char,num,数制
From: https://www.cnblogs.com/qian-heng/p/17348537.html

相关文章

  • TypeScript 学习笔记 — 数组常见的类型转换操作记录(十四)
    获取长度lengthtypeLengthOfTuple<Textendsany[]>=T["length"];typeA=LengthOfTuple<["B","F","E"]>;//3typeB=LengthOfTuple<[]>;//0取第一项FirstItemtypeFirstItem<Textendsany[]>......
  • celery传参时的对象转换
    遇到一个有趣的问题,celerydelay传入SSH的对象时,报错ObjectoftypeSSHisnotJSONserializable,分析一下就是只能传json的数据。把所有传入的数据都转成json。1、因为我传递的是对象,所以要把对象转成json,所以我就自定义了一个JSONEncoderclassMyEncoder(json.JSONEncoder):......
  • 如何通过C#/VB.NET代码将PowerPoint转换为HTML
    利用PowerPoint可以很方便的呈现多媒体信息,且信息形式多媒体化,表现力强。但难免在某些情况下我们会需要将PowerPoint转换为HTML格式。因为HTML文档能独立于各种操作系统平台(如Unix,Windows等)。并且它可以加入图片、声音、动画、影视等内容,还能从一个文件跳转到另一个文件,与世界各地......
  • python工具模块介绍-time 时间访问和转换
    快速入门In[1]:importtime#获取当前时间In[25]:time.strftime("%Y-%m-%d_%H-%M-%S",time.localtime())Out[25]:'2018-06-17_20-05-36'#停顿0.5秒In[26]:time.sleep(0.5)简介功能:时间访问和转换。相关模块:datetime 标准模块。calendar标准模块。下面介......
  • 轻量化3D文件格式转换HOOPS Exchange新特性
    BIM与AEC市场发展现状近年来BIM(建筑信息模型)和AEC(建筑、工程和施工)市场一直保持着持续增长。2014年全球BIM软件市场价值27.6亿美元,而到2022年,预期到达115.4亿美元,复合年增长率保持在19.1%,并且对未来十年BIM增长率的保守估计为10%。世界各地的许多政府现在也在强制要求遵守......
  • C#开发的免费PDF转换、压缩、拆分、合并助手
    《骑士科技星火计划》现推出首款产品—《工程人PDF助手》,为工程人打造属于自己的PDF功能助手,具有PDF转换、压缩、拆分及合并等功能。《工程人PDF助手》为《骑士科技星火计划》首款产品,安装步骤简单,操作便捷,供各位工程人免费使用! 获取方式欢迎关注公众号《工程人的编程课堂》,后......
  • PR语音转字幕转换插件Speech to Text for Premiere Pro
    在SpeechtoTextforPremierePro(PR语音转字幕转换插件中您可以使用以下各种格式转换:中文(PL/PRC)、英文、日语、韩语、意大利语、葡萄牙语、波兰语、法语、意大利语、荷兰语、英语、西班牙语等。如果您对中文、日语、韩语、葡萄牙语、法语、荷兰语等语言感兴趣,可以在这里找到......
  • 不用转换!喜马拉雅音频直接下载!2023可用!
    在如今的快节奏生活中,很多人喜欢在空闲时间里聆听音频专辑,其中喜马拉雅音频专辑成为了许多人的首选。喜马拉雅音频专辑包含了各种各样的主题,如广播剧、情感心理、历史人文、娱乐健康等,内容多样丰富,并且主持人已经成为了听众心中的好伙伴。不过,要享受这些音频专辑,您需要先下载一些......
  • 10.数制转化
     问题分析: 十进制整数转换为R进制整数的基本方法是:“除R取余”。具体做法为:对于十进制数整数,用R连续除要转换的十进制整数及各次所得之商,直除到商等于0时为止,则各次所得之余数即为所求R进制整数由低位到高位的值。这个过程可以写成一个简单的循环。    一般而言,对于......
  • 数制度转换
    一、问题描述:二、设计思路:  三、程序流程图:#include<stdio.h>#definea101/*最大允许字符串长度*/intchar_to_num(charch);/*返回字符对应的数字*/intnum_to_char(intnum);/*返回数字对应的字符*/longother_to_decimal(chartemp[],intother);/*返回由原数转......