• 十进制数N和其它d进制数的转换是计算机实现计算的基本问题，其解决方案很多，其中最简单方法基于下列原理：即除d取余法。
• //头文件和结构体 #include <stdio.h> #include <stdlib.h> #define MAXSIZE 1024 typedef int elemtype;...//top栈顶元素的下标 }SequenStack; //初始化栈 elemtype *init_SequenStack() { Seq
//头文件和结构体
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 1024

typedef int elemtype;
typedef struct SequenStack
{
elemtype data[MAXSIZE];//栈的容量大小
int top;//top为栈顶元素的下标
}SequenStack;

//初始化栈
elemtype *init_SequenStack()
{
SequenStack *S;//指向栈的指针
S = (SequenStack *)malloc(sizeof(SequenStack));
if(S == NULL){
return S;
}else{
S -> top = -1;
return S;
}
}

、、进栈操作
int push_SequenStack(SequenStack *S,elemtype x)
{
if(MAXSIZE - 1 <= S ->top){
return 0;
}
S -> top ++;
S -> data[S -> top] = x;
return 1;
}

//出栈操作
int pop_SequenStack(SequenStack *S,elemtype *e)
{
//e为了接收栈顶元素
if(-1 == S -> top){
return 0;
}
*e = S -> data[S -> top];
S -> top --;
return 1;
}

//转换的核心算法
void conversion(SequenStack *S,int x,int m)
{//x为传入的十进制数，m是您想转化成进制
int i,j;
elemtype temp;
while(x != 0){
temp = x % m;
push_SequenStack(S,temp);
x = x / m;
}
}

下面是完整代码
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 1024
/*通过建立栈来实现进制转换*/

typedef int elemtype;
typedef struct SequenStack
{
elemtype data[MAXSIZE];//栈的容量大小
int top;//top为栈顶元素的下标
}SequenStack;

//初始化栈
elemtype *init_SequenStack()
{
SequenStack *S;
S = (SequenStack *)malloc(sizeof(SequenStack));
if(S == NULL){
return S;
}else{
S -> top = -1;
return S;
}
}

//进栈操作
int push_SequenStack(SequenStack *S,elemtype x)
{
if(MAXSIZE - 1 <= S ->top){
return 0;
}
S -> top ++;
S -> data[S -> top] = x;
return 1;
}

//出栈操作
int pop_SequenStack(SequenStack *S,elemtype *e)
{
//e为了接收栈顶元素
if(-1 == S -> top){
return 0;
}
*e = S -> data[S -> top];
S -> top --;
return 1;
}

//转换的核心算法
void conversion(SequenStack *S,int x,int m)
{
//x为待转化的十进制数，m为您想转化的进制数
int i,j;
elemtype temp;
while(x != 0){
temp = x % m;
push_SequenStack(S,temp);
x = x / m;
}
}
int main()
{
SequenStack *S;
elemtype *e,k;
int i,num;
e = &k;

S = init_SequenStack();
printf("请输入您想转化的10进制数!\n");
scanf("%d",&num);
while(1){
printf("1、十 -> 二:\n");
printf("2、十 -> 八:\n");
printf("请输入您想转化成几进制!输入3可退出当前程序\n");
scanf("%d",&i);
switch(i){
case 1:
{
printf("转化结果为:");
conversion(S,num,2);
while(-1 != (S -> top)){
pop_SequenStack(S,e);
printf("%d",*e);
}
printf("\n\n");
break;
}
case 2:
{
conversion(S,num,8);
while(-1 != (S -> top)){
pop_SequenStack(S,e);
printf("%d",*e);
}
printf("\n\n");
break;
}
case 3:
{
return;
}
}
}
}

运行结果如下:
小伙伴有什么不懂的可以在下面评论哦，当然也可以私聊我 对您有帮助的话点个赞支持一下吧
展开全文
• //十进制八进制 #include"stdio.h" #include"stdlib.h" #define maxsize 100 typedef struct { int data[maxsize]; int top; }link; void initializa(link *s)//初始化函数 { s->top=0; } int empty(link...
原理： 首先在栈底放入哨兵，接着用算法求出余数，把余数依次放入栈中， 然后取栈顶元素，并且出栈栈顶元素。
//十进制转八进制
#include"stdio.h"
#include"stdlib.h"
#define maxsize 100
typedef struct
{
int data[maxsize];
int top;

{
s->top=0;
}

{
if(s->top==0)
return 1;
else
return 0;
}

{
if(empty(s)==maxsize-1)
{
printf("此栈已满\n");
return 0;
}
else
{
s->top++;
(s->data)[s->top]=x;
}
return 1;
}

{
if(empty(s)==1)
{
printf("此栈为空\n");
return 0;
}
else
{
*x=(s->data)[s->top];
s->top--;
}
return 1;
}

{
if(empty(s)==1)
{
printf("无顶可取\n");
return 0;
}
else
{
*x=(s->data)[s->top];
}
return 1;
}

void transform(unsigned x)//转换函数
{
unsigned y=0;
initializa(s);//初始化函数
enter(s,'#');//进栈函数，注意这个# 是个字符，要加双引号
while(x!=0)
{
enter(s,x%8);
x=x/8;
}
while(1)//存在栈顶元素
{
gettop(s,&y);//将栈顶元素（也就是最后一个元素）放到y中
if(y!='#')
{
printf("%d",y);
out(s,&y);//出栈函数，将最后一个元素剔除
}
else
break;
}
}

int main()
{
unsigned x;//无符号x,也就是不能是负数
printf("请输入要转换的十进制数:\t");
scanf("%d",&x);
printf("十进制转八进制的结果为:\t");
transform(x);
printf("\n");
return 0;
}


运行之后: 
展开全文
• C语言实验（十一）实验内容实验一：勒让德多项式程序实验二：进制转换实验三：计算阶乘总结反思 实验内容 实验一：勒让德多项式程序 用递归法求n阶勒让德多项式的值。 实验步骤 1、首先，观察该多项式需要有n及x两...


C语言实验（十一）
实验内容实验一：勒让德多项式程序实验二：进制转换实验三：计算阶乘
总结反思

实验内容
实验一：勒让德多项式程序
用递归法求n阶勒让德多项式的值。  实验步骤 1、首先，观察该多项式需要有n及x两个值才可以求解它的值。所以需要有两个输入。
2、然后，将该多项式的求值方法封装成一个函数，在main()函数中调用这个函数。把结果输出。
3、在勒让德多项式求值的函数中，需要将x,n作为参数传入。根据题示的式子，判断n的取值，使用多重选择语句设置不同的计算方法。在n不等于0或1时，有递归。
实验代码
#include <stdio.h>
#include <stdlib.h>
int legendre(int n,int x);

int main()
{
int n,x;
float s;
printf("Input n:");
scanf("%d",&n);
printf("\n");
printf("Input x:");
scanf("%d",&x);
s = legendre(n,x);
printf("勒让德多项式的值为%.2f",s);
return 0;
}

int legendre(int n,int x)
{
if (n == 0)
return 1;
else if (n == 1)
return x;
else
return ((2*n-1)*x-legendre(n-1,x)-(n-1)*legendre(n-2,x))/n;
}

运行结果

实验二：进制转换
编写一个函数将输入的十进制转化为8进制。
实验步骤
1、首先，了解十进制转换为八进制的基本方法“除8取余”。输入一个十进制的数字，通过一个转换的函数转化为十进制。将“除8取余”方法封装成一个函数，在main()函数中调用这个函数。把结果输出。
2、在十进制转化成八进制的过程中，同样使用了递归的方法。“除8取余”的思想，将每一次的上次取余的结果乘以10得到上一位，加上本次模运算的结果即为最终结果。
实验代码
#include <stdio.h>
#include <stdlib.h>
int transform(int n);

int main()
{
int n,t;
printf("十进制：");
scanf("%d",&n);
printf("八进制：%d",transform(n));
return 0;
}

int transform(int n)
{
if (n < 8)
{
return n;
}
else
{
return (transform(n / 8) * 10 +n % 8);
}
return 0;
}

运行结果

实验三：计算阶乘
编写一个函数将计算10以下的阶乘。
实验步骤 1、计算10以下的阶乘。最重要的是阶乘的算法实现，前面的实验也用到过。
2、阶乘的实质就是不断与之前的数相乘，n=1为判断结束条件，实现起来比较容易。加上特殊的条件0的阶乘是1.
3、完成阶乘函数之后，在main()函数中计算10以下的阶乘即可。
实验代码
#include <stdio.h>
#include <stdlib.h>

int main()
{
int i;
for(i=0;i<10;i++)
printf("%d的阶乘结果为%d\n",i,fac(i));
return 0;
}

int fac(int n)
{
if(n == 1||n == 0)
return 1;
else
return n*fac(n-1);
}

运行结果
总结反思
这次实验主要练习了函数的使用以及递归的思想。练习了三个比较简单的实验：求解勒让德多项式的值、十进制整数转换为八进制及求10以内的阶乘。
递归的思想在高中数学中就已经学习到了。求最大公约数的辗转相除法、阶乘的方法、斐波那契数列及十进制转换为二进制的“除2取余”这些方法都有一种递归（迭代）的思想在。在编程的过程中，递归的思想通过函数自身调用实现。这个方法可以解决很多使用常规思路难以解决的问题。函数结合递归使用是一种很方便的编程技巧。
判断能否使用递归需要判断两个条件：1、存在限制条件，当满足这个条件时，递归不再继续。2、每次递归调用之后越来越接近这个限制条件。
展开全文
• 编程c语言 十进制八进制Octal value has 8 digit values from 0 to 7, with the base 8. (Read more about Computer number systems), here we will learn how to work with octal values in c programming ...

编程c语言 十进制转八进制
Octal value has 8 digit values from 0 to 7, with the base 8. (Read more about Computer number systems), here we will learn how to work with octal values in c programming language?
八进制值具有从0到7的8位数字，以8为底。(阅读有关计算机编号系统的更多信息)，这里我们将学习如何使用c编程语言来处理八进制值？
C编程中八进制数的表示 (Representation of octal numbers in C programming)
In C programming language, an octal number is represented by preceding with "0", thus the value in octal can be written as "0123" (which is equivalent to 83 in Decimal).
在C编程语言中，八进制数以“ 0”开头表示，因此八进制的值可以写为“ 0123” (相当于Decimal中的83 )。
在变量中分配八进制数 (Assigning the octal number in a variable)
There is no special type of data type to store octal values in C programming, octal number is an integer value and you can store it in the integral type of data types (char, short or int).
在C编程中，没有特殊的数据类型来存储八进制值，八进制数是整数值 ，您可以将其存储在数据类型的整数类型( char ， short或int )中。
Let suppose, we have a value in octal "0123" (83 in Decimal).
假设，我们有一个八进制“ 0123”的值(十进制为83)。
We are storing "0123" in an unsigned char variable (83 is small value and can be stored with in a Byte).
我们将“ 0123”存储在一个无符号的char变量中(83是一个小值，可以用Byte存储)。
Consider the following statements
考虑以下语句
unsigned char a=0123;

以八进制格式打印数字 (Printing the number in octal format)
To print integer number in octal format, "%o" is used as format specifier in printf() statement.
要以八进制格式打印整数，请在printf()语句中将“％o”用作格式说明符。
Consider the code, which is printing the value of a...
考虑下面的代码，它打印出一个 ...的值。

.minHeight{
min-height: 250px;
}
@media (min-width: 1025px){
.minHeight{
min-height: 90px;
}
}

.minHeight{
min-height: 250px;
}
@media (min-width: 1025px){
.minHeight{
min-height: 90px;
}
}

#include <stdio.h>

int main()
{
unsigned char a=0123;

printf("value of a (in octal)  : %o\n", a);
printf("value of a (in decimal): %d\n", a);

return 0;
}


Output
输出量
    value of a (in octal)  : 123
value of a (in decimal): 83


以八进制格式读取值 (Reading value in octal format)
"%o" can be used with scanf() statement to read the value in octal format from the user.
可以将“％o”与scanf()语句一起使用，以从用户读取八进制格式的值。
Consider the following code
考虑以下代码
#include <stdio.h>

int main()
{
unsigned int num;

printf("Input value in octal: ");
scanf("%o", &num);

printf("Entered value is in octal format  : %o\n", num);
printf("Entered value is in decimal format: %d\n", num);

return 0;
}


.minHeight{
min-height: 250px;
}
@media (min-width: 1025px){
.minHeight{
min-height: 90px;
}
}

.minHeight{
min-height: 250px;
}
@media (min-width: 1025px){
.minHeight{
min-height: 90px;
}
}

Output
输出量
    Input value in octal: 12345
Entered value is in octal format  : 12345
Entered value is in decimal format: 5349


通过分配八进制值来声明整数数组 (Declaring integer array by assigning octal values)
Consider the following example, where integer array is declaring with the octal values and printing in both formats Decimal and Octal.
考虑下面的示例，其中整数数组使用八进制值声明并以Decimal和Octal两种格式打印。
#include <stdio.h>

int main()
{
int arr[]={ 0100, 0101, 0123, 0761, 10};
int i;

printf("Array elements are\n");
for(i=0;i<5;i++)
printf("Decimal: %d, Octal: %o\n",arr[i],arr[i]);

return 0;
}


Output
输出量
    Array elements are
Decimal: 64, Octal: 100
Decimal: 65, Octal: 101
Decimal: 83, Octal: 123
Decimal: 497, Octal: 761
Decimal: 10, Octal: 12


阅读更多...
Octal literals in C language C语言的八进制文字 Hexadecimal (hex) literals in C language C语言中的十六进制(十六进制)文字 Working with hexadecimal numbers in C language 使用C语言处理十六进制数

翻译自: https://www.includehelp.com/c/working-with-octal-values-in-c-programming-language.aspx

编程c语言 十进制转八进制

展开全文
• C语言实现十进制转换成二十六进制的转换，代码已经经过调试可以使用，放心下载！
• 编程c语言 十进制八进制 C中的八进制文字 (Octal literals in C) Octal numbers are the technique to represent the numbers which use the base-8 number; it uses 7 digits 0, 1, 2, 3, 4, 5, 6, and 7. (Read:...
• 课程的随堂作业，C语言的，用dev就能运行，萌新代码，勿喷，仅仅帮助不想写作业的朋友方便一下，反正老师也不会仔细检查的
• C语言-顺序栈实现十进制转换二进制-八进制-十六进制
• 我们在进行十进制转化为其他进制的时候用的就是所谓的短除法 如下图： #include"iostream" using namespace std; int main() { int a[100];//定义一个数组来存最后的八进制数 int n,i=0; cin>>n; //用短...
• C语言十进制数转换为八进制C语言十进制数转换八进制完整源码 C语言十进制数转换八进制完整源码 #include <stdio.h> void decimal2Octal(long decimalnum); int main() { long decimalnum; printf(...
• } } } //基于栈的应用函数---将十进制转为八进制 void CONVERT(int n) { sl topelm=CREATE(); do { PUSH(topelm,n%8); n=n/8; }while(n!=0); PRINTSTACK(topelm); } //主函数 int main() { sl l; l=...
• 八进制十进制十进制八进制#include&lt;stdio.h&gt;#include&lt;math.h&gt;intmain(){ int n,now=0,i,remainder; scanf("%d",&amp;n); for(i=0;;i++) { remainder=n%10;...
• 我们处理的整数通常用十进制表示，在计算机内存中是以二进制补码形式存储，但通常二进制表示的整数比较长，为了便于在程序设计过程中理解和处理数据，通常采用八进制和十六进制，缩短了二进制补码表示的整数，但保持...
• 问题描述：使用C语言编程实现八进制转换为十进制。 程序源码： #include&lt;stdio.h&gt; void main() { char *p,s[6];int n; p=s; gets(p); n=0; while(*(p)!='\0') {n=n*8+*p-'0'; p++;} printf("...
• C语言实现二进制向八进制和十六进制转换 二进制转换成十进制 再将十进制转换成R进制
• 对于刚开始学习C语言的来说，我们知道%d可以表示十进制的数，%o可以表示八进制的数，%x用来表示十六进制的数，但却没有来表示二进制数的。 这就是相对应的八进制数和十六进制数#include &lt;stdio.h&gt; ...
• 以下程序的输出结果是 main(){ int a=20; printf("%d,%o,%x\n",a,a,a);...1.题目给出了 a=20这个十进制现在我们需要用十进制八进制，这里我们采用的就是直接除8取余的方法 2.同理对于10进制转16进制我们也是...
• #include<stdio.h> #include<stdlib.h> int main() { char *p; char s[6]; int n; p = s; gets(p); n = 0; while (*(p) != '\0') { n = n * 8 + *p - '0'; p++;... sys...
• printf("%d的八进制：",x);tran(x,8); printf("%d的十六进制：",x);tran(x,16); return 0; } 或者简单地 #include int main() { int n; scanf("%d",&n); printf("十六进制%X\n",n); printf("八进制%o\n",n); ...
• c语言实现八进制转化十进制的一个简单的算法，只作为对于进制转换的理解
• c语言八进制转换为十进制or十进制转换8进制 1.c语言八进制转换为十进制 #include<stdio.h> int main() { char p,s[20];int n; p=s; gets§; n=0; while(§!=’\0’) { n=n*8+*p-‘0’; p++; } printf("%d",...
• 将一个八进制数，逐一分解出对应的权值，再乘以权重，累加起来就可以转换为十进制了，采用具体的方法就是除余法，例如八进制数12，取余分解出最低位2，再乘以相应的权重，由于是最低位，所以权重 80=18^0 = 180=1 ...
• 以下代码可以实现十进制到二进制、八进制、十六进制的任意转换。 #include&amp;amp;lt;stdio.h&amp;amp;gt; #include&amp;amp;lt;string.h&amp;amp;gt; void fun10_2_8_16(char *p,long number,...
• C语言中，整数都是以二进制的形式存放在内存中，所谓的二进制、八进制十进制和十六进制只是输出显示方式的不同。 下表是各种进制整数的输出格式。 细心的读者可能会发现，上表中没有二进制的输出格式，不能使用 ...
• C语言递归算法十进制数转换为八进制C语言递归算法十进制数转换八进制完整源码 C语言递归算法十进制数转换八进制完整源码 #include <stdio.h> int decimal_to_octal(int decimal) { if ((decimal < 8) ...
• C语言栈的方式实现十进制数转换二进制数，完整代码，DEVC中直接使用
• C语言将八进制数转换进制C语言八进制数转换为十进制完整源码 C语言将八进制数转换为十进制完整源码 int convertValue(int num, int i) { return num * pow(8, i); } long long toDecimal(int octal_value) { ...
• 八进制十进制 #include <stdio.h> #include <math.h> int main(){ printf("请输入一个八进制数"); int count,result; int i=0,j, a[100]; scanf("%d",&count); while(count!=0){ a[i]=...
• 用栈实现十进制八进制。用链表实现的栈。

...

c语言 订阅