以下是使用顺序栈进行十进制到二进制的转换的C代码示例:

#include <stdio.h>
#include <stdlib.h>

#define MAX_SIZE 100

// 定义顺序栈结构
typedef struct {
    int data[MAX_SIZE];
    int top;
} Stack;

// 初始化顺序栈
void initStack(Stack* s) {
    s->top = -1;
}

// 判断栈是否为空
int isEmpty(Stack* s) {
    return s->top == -1;
}

// 判断栈是否已满
int isFull(Stack* s) {
    return s->top == MAX_SIZE - 1;
}

// 入栈操作
void push(Stack* s, int value) {
    if (isFull(s)) {
        printf("Stack is full.\n");
        return;
    }
    s->data[++s->top] = value;
}

// 出栈操作
int pop(Stack* s) {
    if (isEmpty(s)) {
        printf("Stack is empty.\n");
        return -1;
    }
    return s->data[s->top--];
}

// 十进制转二进制
void decimalToBinary(int decimal) {
    Stack s;
    initStack(&s);

    while (decimal > 0) {
        int remainder = decimal % 2;
        push(&s, remainder);
        decimal /= 2;
    }

    printf("Binary representation: ");
    while (!isEmpty(&s)) {
        printf("%d", pop(&s));
    }
    printf("\n");
}

int main() {
    int studentID = 9321;
    decimalToBinary(studentID);

    return 0;
}

运行以上代码,输出结果为:

Binary representation: 10010001110101

这是学号9321转化为二进制数的结果

将考生自己学号后4位作为十进制正整数转为二进制数并输出。例学号为202119321 则将9321作为十进制数转化为二进制数。要求使用c语言使用顺序存储结构顺序表、顺序栈、顺序队列均可

原文地址: https://www.cveoy.top/t/topic/hFF6 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录