本文目录一览:
C语言十进制转八进制
现在我一共给你三个答案:
1递归的,
2你原先改成的,
3一般的
**********************************************************************
/*如你所愿写个递归的*/
#includestdio.h
r8(int a)
{
int i,j;
if(a==0)
return (0);
else
{
j=a%8;
i=a/8;
r8(i);
printf("%d",j);
}
}
int main()
{
int n;
printf("请输入十进制数:");
scanf("%d",n);
printf("转换成八进制数是:");
r8(n);
printf("\n");
}
**********************************************************************
原先代码修改的:
#include "stdio.h"
#include "math.h"
main()
{
int i,n=0,o=0,j=0;
scanf("%d",i); /*改成*/
if(i=7)
o=i;
else
{
while(i7)
{ /*加括号*/
j=i%8;
i=i/8;
o=j*pow(10,n)+o;
n++;
} /*加括号*/
}
o=o+i*pow(10,n);
printf("o=%d\n",o);
}
**********************************************************************
另外,转八进制可以这样写
#include "stdio.h"
int main()
{
int d;
printf("请输入十进制数:");
scanf("%d",d);
printf("该数的八进制表示为:%o\n",d);
return 0;
}
c语言“把十进制数转换成八进制数”怎么写
#includestdio.h
#includestring.h
main()
{
int i,m,n,s=0,t=1;char a[100],b[100];
gets(a);//用回车分割
scanf("%d%d",n,m); //输入的进制和想要转换的进制
for(i=strlen(a)-1;i=0;i--)//先转10进制
{ if(n!=16)
s+=(a[i]-48)*t;
else
s+=(a[i]-55)*t;
t*=n;
}
for(i=0;s;i++)//10进制转你想要的进制
{
if(s%m=10)
b[i]=s%m+55;
else
b[i]=s%m+48;
s/=m;
}
b[i]='\0';
for(i=strlen(b)-1;i=0;i--)
printf("%c",b[i]);
}
这是任意进制的转换 望满意
C语言 十进制数转换八进制 算法
方法一:直接使用控制字符串 %o 八进制%x
方法二:
求余来算,比如求十进制数 x(x100) 的8进制,先通过 x%8 可以得到个位(末位)上的数,当十进制数等于8时,必然会进位,求余的结果正好是不能进位的部分,x=x/8(这就像位移,x的8进制数向右移了一位),这样已经求出来的 个位 位移后没有了,原来的十位变成了个位,继续把得到的x按上面的方式求末位,就能求出来十位,按照这种方式得到的 8进制数 是反的(先得到个位,再十位。。。),这样很适合放到栈中,取得时候又会反过来,伪代码可以这样写:
while(x){
printf("%d",x%n);//会打印出x转换为 N进制数 从低位到高位上的每一位数
x/=n;
}
十进制转换N进制:
#includestdio.h
#includestdlib.h
#includestring.h
typedef int INT;
typedef struct dd
{
INT data;
struct dd *next;
}LNode,*LStack;
LStack pushstack(LStack top,int x)
{
LStack p;
p=(LStack)malloc(sizeof(LNode));
if((x)!=-1) {p-data=(x); p-next=top; top=p;}
return top;
}
LStack outstack(LStack top,int *x)
{
LStack p=top;
*x=p-data;
top=p-next;
free(p);
return top;
}
main()
{
int x,n;
LStack top=NULL;
printf("请输入原数及要转换的进制:");
do{
scanf("%d%d",x,n); //输入一个十进制数和要转换的进制,比如3 2 得到1 }while(x35||x0||n2);
while(x){ //这个循环把每一位放到栈中
top=pushstack(top,x%n);
x/=n;
while(top!=NULL)
{
top=outstack(top,x);
if(x10)
printf("%c",x+'0');
else
printf("%c",x+'A'-10);
}
return 0; }
用c语言的函数调用如何将一个十进制数转换为八进制数?
10进制转换8进制输出,使用printf函数的格式输出%o即可。如果需要得到转换后的字符串,使用sprintf函数即可。
例程:
#include stdio.h
int main (){
int x;
char s[100];
printf("输入要转换的十进制数:\n");
scanf("%d",x);
sprintf(s,"%o",x); //十进制转换为八进制,并保存到s字符串当中
printf("使用sprintf函数转换的八进制数是:%s\n",s)
printf("使用printf函数转换的八进制数是:%o\n",x); //十进制转换为八进制,并直接输出到屏幕
return 0;
}