三进制C语言
1. 在c语言中整型常数可用十进制、八进制和______进制三种数制表示。
在C语言中整型常数可用十进制、八进制和十六进制三种数制表示。
1、八进制整常数必须以0开头,即以0作为八进制数的前缀。数码取值为0~7。八进制数通常是无符号数。
(1)以下各数是合法的八进制数:
015、0101、0135777。
(2)以下各数不是合法的八进制数:
252(无前缀0)、0386(包含了非八进制数码)、-0127。
2、十六进制整常数的前缀为0X或0x。其数码取值为0~9,A~F或a~f。
(1)以下各数是合法的十六进制整常数:
0X2A(十进制为42)、0XA0 (十进制为160)、0XFFFF (十进制为65535)。
(2)以下各数不是合法的十六进制整常数:
5A (无前缀0X)、0X3H (含有非十六进制数码)。
3、十进制整常数没有前缀。其数码为0~9。
(1)以下各数是合法的十进制整常数:
235、-528、65535、1627。
(2)以下各数不是合法的十进制整常数:
023 (不能有前导0)、23D (含有非十进制数码)。
(1)三进制C语言扩展阅读:
C语言的数据类型包括:整型、字符型、实型或浮点型(单精度和双精度)、枚举类型、数组类型、结构体类型、共用体类型、指针类型和空类型。
C语言包含有各种控制语句仅有9种,关键字也只有32个,程序的编写要求不严格且多以小写字母为主,对许多不必要的部分进行了精简。
实际上,语句构成与硬件有关联的较少,且C语言本身不提供与硬件相关的输入输出、文件管理等功能,如需此类功能,需要通过配合编译系统所支持的各类库进行编程,故C语言拥有非常简洁的编译系统。
C语言的运算非常灵活,功能十分丰富,运算种类远多于其它程序设计语言。在表达式方面较其它程序语言更为简洁,如自加、自减、逗号运算和三目运算使表达式更为简单,但初学者往往会觉的这种表达式难读,关键原因就是对运算符和运算顺序理解不透不全。当多种不同运算组成一个运算表达式,即一个运算式中出现多种运算符时,运算的优先顺序和结合规则显得十分重要。
2. c语言中怎么转换为三进制
转为2进制会吧
3进制类似 进行模3取余
然后逆序就可以了
参考代码
#include<stdio.h>
intmain()
{
intn,l;
intv[100]={0};
scanf("%d",&n);
l=0;
while(n)
{
v[l++]=n%3;
n/=3;
}
while(l--)
{
printf("%d",v[l]);
}
return0;
}
3. 用c语言将十进制转化三进制怎么做
用内部函数 itoa(v,s,3); v 为给入的10进制数,s 为3进制结果 字符串。
例如:
#include <stdio.h>
int main(){
int v;
char s[60];
printf("input v:");
scanf("%d",&v);
itoa(v,s,3);
printf("%s\n",s);
return 0;
}
输入10,输出101
====
手工计算也可以,用不断除以3,取余数,拼起来即可。与除2取余数转换到2进制的方法一样。用 itoa(v,s,base); 的好处是,你只要更换base,便可得 base 进制的结果,免得自己写程序转换。
4. 为什么在c语言中会引入三种进制数!八进制,十进制,十六进制!难道一种进制数不够用还是为什么哪位
1) 二进制数中只有两个字符0和1,表示具有两个不同稳定状态的元器件。例如,电路中有,无电流,有电流用1表示,无电流用0表示。类似的还比如电路中电压的高,低,晶体管的导通和截止等。
2) 二进制数运算简单,大大简化了计算中运算部件的结构。
由于二进制数据的基R较小,所以二进制数据的书写和阅读不方便,为此,在小型机中引入了八进制。
八进制的基R=8=2^3,有数码0、1、2、3、4、5、6、7,并且每个数码正好对应三位二进制数,所以八进制能很好地反映二进制。八进制用下标8或
数据后面加O表示 例如:二进制数据 ( 11 101 010 . 010 110 100 )2 对应 八进制数据 ( 3 5 2 . 2 6 4
)8或352.264O.
人们通常使用的是十进制。它的特点有两个:有0,1,2….9十个基本数字组成,十进制数运算是按“逢十进一”的规则进行的.
在计算机中,除了十进制数外,经常使用的数制还有二进制数和十六进制数.在运算中它们分别遵循的是逢二进一和逢十六进一的法则.
由于二进制数在使用中位数太长,不容易记忆,所以又提出了十六进制数
十六进制数有两个基本特点:它由十六个字符0~9以及A,B,C,D,E,F组成(它们分别表示十进制数10~15),十六进制数运算规律是逢十六进一,即基R=16=2^4,通常在表示时用尾部标志H或下标16以示区别。
例如:十六进制数4AC8可写成(4AC8)16,或写成4AC8H。
5. C语言中的整数可用哪几种进制表示如何表示
C语言只有十进制和十六进制,平常用的一般都是十进制,十六进制是以0x开头的,其他进制可以通过itoa函数很容易转换得到,头文件是stdlib.h,itoa有三个参数,第一个参数是十进制的数,第二个参数是用来存储转换后的内容,第三个参数就是想转换的进制类型,比如二进制就写2
6. C语言求教大神,这个平衡三进制怎么转换的啊,有什么简便的方法吗
1 和0就是自己值了, -就是-1
于是 一个字符串
比如
1-10-
就是
1*3^4 + (-1)*3^3+1*3^2+0*3^1 + (-1)*3^0
这样明白了吗?
其实代码很好写的。
7. 将10进制转为三进制的c语言
#include<stdio.h>
#include<stdlib.h>
#defineN30
intmain()
{
inta[N],m,i=0,t;
printf("请输入一个10进制数: ");
scanf("%d",&m);
t=m;
while(t)
{
t/=3;
a[i++]=m-3*t;
m=t;
}
printf("转换成3进制数为: ");
while(i)
printf("%d",a[--i]);
printf(" ");
return0;
}
希望对你有所帮助,满意请采纳,谢谢!!
8. C语言:键盘输入一个十进制整数,输出其对应的二进制、三进制、四进制……十六进制数值。
#defineN"0123456789ABCDEF"
#include<stdio.h>
voidchange(intx,intn,char*p){
chartmp[100];//临时存放转换数
inti,total=0;
while(x){
tmp[total++]=N[x%n];
x/=n;
}
for(i=total-1;i>=0;i--){
p[total-1-i]=tmp[i];
}
if(total==0){
p[0]='0';
p[1]=0;
}
else
p[total-1-i]=0;
}
intmain()
{
chars[100];//用于存放转换的进制的数
inti,x;
printf("把一个数转换成234...16进制数 ");
scanf("%d",&x);
for(i=2;i<=16;i++){
change(x,i,s);
printf("转换成%d进制是:%s ",i,s);
}
}
9. 把一个十进制数转化成一个三进制数,这个程序错在哪里
num=num/3-num%3;这句话有点问题,应该是num=num/3或者num=(num-num%3)/3;输出的时候是逆序。for(i=0;i<k;i=i+1)
{ printf("%d",a[i]);}
改成for(i=k-1;i>=0;i--)
{ printf("%d",a[i]);}
10. c语言123456789=100编程思想
就是个深度优先搜索。
枚举所有符号可能添加的情况。
{
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;
}
这段是在做拆符号的事情,就是根据i的值确定那8个空格填什么
switch(n%3) /*根据这一位的情况进行处理*/
{
case 0:m=m*10+j;break;
case 1:op='+';break;
case 2:op='-';break;
}
if (n%3) str[ptr++]=op; /*记录运算模式*/
str[ptr++]='0'+j;
n/=3;
}
就是按照填好的符号,计算表达式的结果
然后就是判断是不是是100。