十进制与八进制的转换


1.格式控制(直接输出)

  • 格式控制包括格式说明和格式字符。

  • 格式说明由“%”和格式字符组成,如%d、%f等。它的作用是将输出的数据转换为指定的格式输出。格式说明总是由“%”字符开始的。不同类型的数据用不同的格式字符。

  • %d为整型输出;%o以八进制数形式输出整数。

#include<stdio.h>

int main(void)
{
	int n;
	scanf("%d",&n);
	printf("%o",n);
	return 0;
}

2.除k取余法(循环)

  • 通过利用循环来实现除k取余法,是比较常见的一种进制转换的方式。
#include<stdio.h>
#include<math.h>

int main(void)
{
	int n,temp,sum=0,i=0;
	scanf("%d",&n);
	while(n)
	{
		temp = n%8;
		n = n/8;
		sum += temp*pow(10,i);
		i++;
	}
	printf("%d",sum);
	return 0;
}

3.字符串版

  • 利用字符串的特性来实现进制转换。
#include<stdio.h>
#include<string.h>
#define N 100

void change (char str[N],int n);
int main(void)
{
	char str[N];
	int n;
	scanf("%d",&n);
	change(str,n);
	puts(str);
	return 0; 
}
void change (char str[N],int n)
{
	int i=0;
	while(n)
	{
		str[i]=n%8+'0';
		i++;
		n/=8;
	}
	str[i]='\0';
	strrev(str);
}


4.指针法

  • 结合循环、字符串、指针来实现进制转换。
#include<stdio.h>
#include<string.h>
#define N 100

void change (char str[N],int n);
int main(void)
{
	char str[N];
	int n;
	scanf("%d",&n);
	change(str,n);
	puts(str);
	return 0; 
}
void change (char str[N],int n)
{
	int i=0,d;
	while(n)
	{
		d = n%8;
		str[i]="0123456789abcdef"[d];
		i++;
		n/=8;
	}
	str[i]='\0';
	strrev(str);
}


Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐