许昊要多读书 2021-04-12 21:21 采纳率: 0%
浏览 27

数据结构的进制转换,为什么可以执行,但是答案不对呀

#include <stdio.h>


typedef struct {     
    int data[50];    
    int top; 
}SqStack;

void InitStack(SqStack *s) {     
    s->top=-1; 
}
void Push(SqStack *s,int e) {  
    if(s->top==49)
    printf("满了");
    else{
    s->top++;
    s->data[s->top]=e;
    }

int empty(SqStack *s){
    if(s->top==1)
    return 1;
    else
    return 0;
}

char Pop(SqStack *s)
{
    int e;
    e=s->data[s->top];
    s->top--;
    return e;
}

void multi(int a,int b){
    int i;
    SqStack s;
    InitStack(&s);
    while(a!=0){
        Push(&s,a%b);
        a=a/b;
    }
    printf("结果是");
    while(!empty(&s)){
        i=Pop(&s);
        printf("%d",i);
    }
    printf("\n");
}

main(){
    int a,b;
    printf("输入十进制数字");
    scanf("%d",&a);
    printf("输入进制");
    scanf("%d",&b);
    printf("转换完的数为");
    multi(a,b);
}
 

 

  • 写回答

2条回答 默认 最新

  • 关注
    //进制转换:
    #include<stdio.h>
    #include<stdlib.h>
    #define Stack_size 100
    #define Stackincreament 10
    typedef struct{
    	int *base;
    	int top;
    	int stacksize;
    }sqstack;
    void initstack(sqstack &la)
    {
    	la.base=(int*)malloc(Stack_size*sizeof(int));
    	la.stacksize=Stack_size;
    	if(!la.base)
    		exit(0);
    	la.top=0;
    }
    void push(sqstack &L,int e)
    {
    	if(L.top>=L.stacksize)
    	{
    		L.base=(int*)realloc(L.base,(Stack_size+Stackincreament)*sizeof(int));	
    		if(!L.base)
    		   exit(0);
    		L.stacksize+=Stackincreament;
    	}
    	L.base[L.top++]=e;
    }
    void pop(sqstack &l,int &e)
    {
    	if(l.top==0)
    		return ;
    	e=l.base[--l.top];
    	
    }
    void trans(int x,int n,sqstack &s)
    {
    	int e;
    	while(x!=0)
    	{	
    		e=x%n;
    		x/=n;
    		push(s,e);
    	
    	}
    	while(s.top!=0)
    	{
    		pop(s,e);
    	    printf("%5d",e);
    	}
    	printf("\n");
    
    }
    
    int main()
    {
    	sqstack m;
    	int x,n;
    	printf("请输入需转换的十进制数及转换后的进制数:\n");
    	scanf("%d",&x);
    	scanf("%d",&n);
    	initstack(m);
    	trans(x,n,m);
    	return 0;
    }
    评论

报告相同问题?

悬赏问题

  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试
  • ¥20 问题请教!vue项目关于Nginx配置nonce安全策略的问题
  • ¥15 教务系统账号被盗号如何追溯设备
  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题