c语言指针实现十进制转二进制
时间: 2024-03-02 14:45:36 浏览: 93
以下是一个C语言代码示例,使用指针实现十进制转二进制:
```c
#include <stdio.h>
void decToBinary(int decimalValue) {
int binary[32]; // 存储二进制数的数组
int i = 0; // 数组索引
// 将十进制数转换为二进制数
while (decimalValue > 0) {
binary[i] = decimalValue % 2;
decimalValue = decimalValue / 2;
i++;
}
// 逆序输出二进制数
printf("Binary: ");
for (int j = i - 1; j >= 0; j--) {
printf("%d", binary[j]);
}
printf("\n");
}
int main() {
int decimalValue;
printf("请输入一个十进制数:");
scanf("%d", &decimalValue);
decToBinary(decimalValue);
return 0;
}
```
相关问题
在c语言中用栈十进制转二进制
可以通过以下代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#define MAX_CHAR 100
// 定义栈结构
typedef struct {
int top; // 栈顶指针
int capacity; // 栈的容量
int *arr; // 存储元素的数组指针
} Stack;
// 初始化栈
Stack *initStack(int capacity) {
Stack *stack = (Stack *)malloc(sizeof(Stack));
stack->top = -1;
stack->capacity = capacity;
stack->arr = (int *)malloc(sizeof(int) * capacity);
return stack;
}
// 判断栈是否为空
bool isEmpty(Stack *stack) {
return stack->top == -1;
}
// 判断栈是否已满
bool isFull(Stack *stack) {
return stack->top == stack->capacity - 1;
}
// 入栈
void push(Stack *stack, int data) {
if (isFull(stack)) {
printf("Stack is full.\n");
return;
}
stack->top++;
stack->arr[stack->top] = data;
}
// 出栈
int pop(Stack *stack) {
if (isEmpty(stack)) {
printf("Stack is empty.\n");
return -1;
}
int data = stack->arr[stack->top];
stack->top--;
return data;
}
// 十进制转二进制
void decimalToBinary(int decimal) {
Stack *stack = initStack(MAX_CHAR);
while (decimal > 0) {
push(stack, decimal % 2); // 余数入栈
decimal /= 2;
}
printf("Binary representation is: ");
while (!isEmpty(stack)) {
printf("%d", pop(stack)); // 依次出栈输出
}
printf("\n");
}
int main() {
int decimal;
printf("Input a decimal number: ");
scanf("%d", &decimal);
decimalToBinary(decimal);
return 0;
}
```
代码中用到了栈结构,通过一次次的除以二,将每次的余数依次入栈,再依次出栈输出,从而实现了十进制转二进制。
C语言数据结构十进制转二进制算法代码
C语言中有多种数据结构可以实现十进制转二进制,其中栈是一种常用的数据结构。下面是一段使用栈实现十进制转二进制的C语言代码:
```
#include <stdio.h>
#include <stdlib.h>
#define MaxSize 100
typedef struct stack {
int Data[MaxSize]; // 存储元素的数组
int Top; //栈顶指针
} SeqStack;
SeqStack* creatstack() {
SeqStack *p = (SeqStack*)malloc(sizeof(SeqStack));
p->Top = -1;
return p;
}
void Push(SeqStack *p,int x) {
p->Top++;
p->Data[p->Top] = x;
}
void convNum(SeqStack *p,int n, int R) {
while (n!=0) {
Push(p,n%R);
n/=R;
}
}
int main() {
SeqStack *s;
s = creatstack();
int x; //原数
int r=2; //要转化的进制数
scanf("%d", &x);
convNum(s,x,r);
while (s->Top!=-1) {
printf("%d", s->Data[s->Top--]);
}
return 0;
}
```
该代码中,首先定义了一个栈的结构体,包括一个存储元素的数组和一个栈顶指针。然后定义了创建栈、入栈和转换进制的函数。在主函数中,先创建一个栈,然后输入原数和要转化的进制数,调用转换进制的函数将原数转化为二进制数,并将结果依次出栈输出。
阅读全文