用C语言编写程序,输入任意一个十进制的三位数,将它分别转化为五进制、八进制和十五进制

用C语言编写程序,输入任意一个十进制的三位数,将它分别转化为五进制、八进制和十五进制,第1张

#include<stdioh>

#include<stringh>

static char QUINARY = "01234";

static char OCTONARY = "01234567";

static char FIFTNARY = "0123456789ABCDE";

static char buff[10];

char toQuinary(int num);

char toOctonary(int num);

char toFifnary(int num);

char reverse(char str);

int main(void)

{

int flag = 1;

int num = 0;

int choice = 0;

while(flag)

{

printf("请输入一个三位数:");

scanf("%d",&num);

printf("转换为几进制? 1--五进制 2--八进制 3--十五进制 0--退出\t");

scanf("%d",&choice);

char result = "";

switch(choice)

{

case 1:

result = toQuinary(num);

printf("%s\n",result);

break;

case 2:

result = toOctonary(num);

printf("%s\n",result);

break;

case 3:

result = toFifnary(num);

printf("%s\n",result);

break;

default:

flag = 0;

break;

}

}

return 0;

}

char toQuinary(int num)

{

if(num <= 0) return "0";

int i = 0;

while(num > 0)

{

int ret = num % 5;

buff[i] = QUINARY[ret];

num /= 5;

i++;

}

buff[i]='\0';

return reverse(buff);

}

char toOctonary(int num)

{

if(num <= 0) return "0";

int i = 0;

while(num > 0)

{

int ret = num % 8;

buff[i] = OCTONARY[ret];

num /= 8;

i++;

}

buff[i]='\0';

return reverse(buff);

}

char toFifnary(int num)

{

if(num <= 0) return "0";

int i = 0;

while(num > 0)

{

int ret = num % 15;

buff[i] = FIFTNARY[ret];

num /= 15;

i++;

}

buff[i]='\0';

return reverse(buff);

}

char reverse(char str)

{

int length = strlen(str);

char copy[length+1];

int i = 0;

for(i=0; i<length;i++)

{

copy[i] = str[length-i-1];

}

copy[i] = '\0';

strcpy(str,copy);

return str;

}

记得有过这方面的论述,在所有进制方面,2进制效率最低,3进制最高。当然,理论上

e进制最高。但是,如果要实现两态门,2进制很容易,实现3态门,则需要的线路超过很多,最终的结果是,从芯片门电路使用的角度讲,2进制最高效,3进制最浪费。不知道我理解的对不对。

不知道cetyhb的优点是什么,不过,从计算原理的角度上讲,比基因计算机、量子计算机要落后很多吧,后二者的眼睛也没有投入非常多的力量,何况只是三进制呢?

我的看法不一定对,可以讨论。

PLC将一个十进制的数分解成三个十进制的数 *** 作方法如下:

1、首先打开plc编程软件,编写一条以X0控制十进制数据传送的指令,在X0触点后直接输入“MOVK5D0”表示把十进制数5传送至D0寄存器。

2、然后在写一条计数指令,用C0对M8013进行计数。

3、可以讲计数器的当前数值传送至数据寄存器D1,指令为“MOVC0D1”。

4、编写好程序之后进行转换,然后对程序进行模拟,点击测试按钮即可将程序写入模拟PLC。

5、依次点击模拟调试工具的“菜单启动”—“内存继电器监视”。

6、然后将测试按钮X调用,点击软元件—位软元件窗口,然后选择X。

7、这时可以看到,点击X0可以将十进制5传送至数据寄存器D0;点击X1时,可以将C0的当前数据传送至D1。PLC是一种存储程序的控制器,用户根据某一对象的具体控制要求,编制好控制程序后,用编程器将程序输入到PLC(或用计算机下载到PLC)的用户程序存储器中寄存。PLC的控制功能就是通过运行用户程序来实现。

数码管静态显示3十六进制是指在数码管上显示一个固定的十六进制数值,不进行任何动态变化。十六进制是一种数制,它由0-9和A-F这16个数码组成,相当于二进制的4位,可以更方便地表示二进制数。在数码管上显示十六进制数值需要将其转换为二进制数值,然后通过控制数码管的各个显示段来显示出来。

具体实现方法是将十六进制数值转换为二进制数值,然后将二进制数值分别赋值给对应的数码管段。例如,十六进制数值3对应的二进制数值为0011,将其分别赋值给数码管的第一位和第二位,就可以在数码管上显示出3的十六进制数值。

需要注意的是,在将十六进制数值转换为二进制数值时,需要注意高位补0。例如,十六进制数值A对应的二进制数值为1010,需要将其补齐为00001010再进行显示。

总之,数码管静态显示3十六进制需要将其转换为二进制数值,并将其分别赋值给对应的数码管段,才能在数码管上显示出来。

#include"stdioh"

void main()

{

unsigned int a=0;

printf("Please input a 3bits hex mod number:");

scanf("%x",&a);

printf("%d",a); //这里输出十进制

}

//通过输出格式控制就可以实现了。

//如果是输出BCD码就需要计算。

#include"stdioh"// function below code a hex_numb to a bcd_code;

unsigned short bcd(unsigned short hex_number)

{unsigned short bcd_result=0;

bcd_result|=(hex_number/1000)<<12;

bcd_result|=((hex_number%1000)/100)<<8;

bcd_result|=((hex_number%100)/10<<4);

bcd_result|=hex_number%10;

return bcd_result;}

void main()

{unsigned int a=0,b=0;

printf("Please input a 3bits hex mod number:");

scanf("%x",&a);

b=bcd(a);

printf("%x",b);//这里输出格式16进制

}

程序如下:

main()

{

char op,str[80];

int i,j,s,n,m,ptr;

for (i=0;i<=6561;i++) /i是每一种枚举的情况,把i分解为八位3进制数,每一位表示每一个位置的符号/

{

s=0; /该方式下的和/

m=1; /作 *** 作数/

n=i; /获取i在3进制下的每一位会破坏i,所以借用变量n来获取/

op='+'; /第一次 *** 作方式为+/

ptr=0; /指针用来记录运算过程/

str[ptr++]='1'; /首先记录一个1/

for (j=2;j<=9;j++) /八次循环,每次的下一个 *** 作数是j/

{

if (n%3) /3进制下的第j-1位数,如果不是0,则要完成先前的 *** 作/

{

if (op=='+') s+=m; else s-=m;m=j;

}

switch(n%3) /根据这一位的情况进行处理/

{

case 0:m=m10+j;break;

case 1:op='+';break;

case 2:op='-';break;

}

if (n%3) str[ptr++]=op; /记录运算模式/

str[ptr++]='0'+j;

程序运行结果为:

FOUND: 123-45-67+89=100

FOUND: 12-3-4+5-6+7+89=100

FOUND: 12+3+4+5-6-7+89=100

FOUND: 123+4-5+67-89=100

FOUND: 1+2+3-4+5+6+78+9=100

FOUND: 12+3-4+5+67+8+9=100

FOUND: 1+23-4+56+7+8+9=100

FOUND: 1+2+34-5+67-8+9=100

FOUND: 1+23-4+5+6+78-9=100

FOUND: 123+45-67+8-9=100

FOUND: 123-4-5-6-7+8-9=100

以上就是关于用C语言编写程序,输入任意一个十进制的三位数,将它分别转化为五进制、八进制和十五进制全部的内容,包括:用C语言编写程序,输入任意一个十进制的三位数,将它分别转化为五进制、八进制和十五进制、我查了下苏联三进制计算机CETYHB.看起来比二进制牛B多了为什么没得到重视以及现在还有这类计算机研、PLC如何将一个十进制的数分解成三个十进制的数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10085483.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存