使用静态栈求十进制转八进制代码C语言
时间: 2024-06-12 08:11:40 浏览: 15
以下是使用静态栈求十进制转八进制的C语言代码:
```
#include <stdio.h>
#define MAX_SIZE 100
int main() {
int decimal, remainder, top = -1;
int stack[MAX_SIZE];
printf("请输入一个十进制数:");
scanf("%d", &decimal);
while (decimal != 0) {
remainder = decimal % 8;
stack[++top] = remainder;
decimal /= 8;
}
printf("转换为八进制数为:");
while (top != -1) {
printf("%d", stack[top--]);
}
printf("\n");
return 0;
}
```
相关问题
顺序栈十进制转二进制
顺序栈是一种栈的存储结构,它是用一段连续的存储单元依次存储栈中的元素,栈顶指针指向栈顶元素。顺序栈可以用数组来实现。十进制转二进制是指将一个十进制数转换为二进制数。顺序栈可以用来实现十进制转二进制的功能。具体实现方法如下:
1. 定义一个顺序栈,用于存储二进制数。
2. 输入一个十进制数,将其不断除以2,将余数压入栈中,直到商为0。
3. 依次出栈,输出栈中的元素,即为该十进制数的二进制表示。
以下是代码实现:
```
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 20 //静态顺序栈存储的最大空间
typedef struct {
int data[MAXSIZE];//静态顺序栈可用的最大容量
int top;//栈顶
}SqStack;
void InitStack(SqStack &S)//栈的初始化
{
S.top = -1;//静态顺序栈中,使S.top=-1便是对栈的初始化
}
int Push(SqStack &S,int e)//进栈
{
if(S.top==MAXSIZE-1)//判断栈是否为满
{
printf("栈满!\n");
return 0;
}
S.data[++S.top]=e;//S.top自加一,使S.top=0,使输入的e值导入栈中
return 0;
}
void Pop(SqStack &S)//使栈顶元素出栈,并输出栈顶元素,且栈长减一
{
if(S.top == -1)//判断栈是否为空
printf("栈空!\n");
else
printf("%d",S.data[S.top--]);//输出栈顶元素
}
void Binary(SqStack S)//十进制转二进制函数
{
int a, i = 0;
printf("请输入十进制数: ");
scanf("%d",a);//输入任意的十进制数
while(a)//循环结束条件是a为0
{
Push(S,a%2);//余数进栈
a = a/2;//由于是整数形式,不存在除不尽的状况,假设a=1,除2等于0
i++;//记录进栈多少次 ,方便出栈操作
}
while(i)//循环终止条件是i为0
{
Pop(S);//依次输出栈顶元素
i--;
}
}
int main() {
SqStack S;
InitStack(S);//创建一个栈,并初始化
Binary(S);//进制转换
return 0;
}
```
java十进制转二进制代码
下面是使用Java编写的十进制转二进制的代码:
```java
public class DecimalToBinary {
public static void main(String[] args) {
int decimalNumber = 17;
String binaryNumber = decimalToBinary(decimalNumber);
System.out.println("二进制表示:" + binaryNumber);
}
public static String decimalToBinary(int decimal) {
if (decimal == 0) {
return "0";
}
StringBuilder binary = new StringBuilder();
while (decimal > 0) {
binary.insert(0, decimal % 2); // 从右到左,逐位计算二进制值
decimal /= 2;
}
return binary.toString();
}
}
```
在此示例中,我们将整数17转换为二进制。我们创建了一个名为`decimalToBinary`的静态方法,接受一个十进制数作为参数,返回一个字符串,表示该数的二进制值。
在方法的主体中,我们首先检查特殊情况,即当输入为0时,直接返回字符串"0"。
然后,我们使用一个`StringBuilder`对象`binary`来构建二进制字符串。我们使用`while`循环,通过反复对输入的十进制数进行模2运算和整除2运算,计算每一位的二进制值,并将其追加到`binary`字符串的开头。最后,我们将`binary`转换为字符串并返回。
在`main`方法中,我们定义一个整数变量`decimalNumber`,并将其设置为我们要转换的十进制数(在此示例中为17)。然后,我们调用`decimalToBinary`方法,将返回的二进制值打印在控制台上。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)