为了账号安全,请及时绑定邮箱和手机立即绑定

小白求大神帮忙找错QAQ,要吐血了QAQ

小白求大神帮忙找错QAQ,要吐血了QAQ

C
慕粉1462487243 2016-10-21 17:01:25
这是一个利用栈的知识,通过C,不是C++,C#进行进制转换的题,代码如下,结果“要转换的进制数”部分总显示不对QAQ求解,本人查错不太会QAQ 我的代码: #include <stdio.h> #include <stdlib.h> #include <math.h> #define S_SIZE 100 //栈所占空间 #define STACKINCREAMENT 10 //扩充空间时一次扩充10个字节 typedef struct SqStack { int*base;//栈底 int*top;//栈顶 int stacksize;//栈当前的存储空间 }SqStack; //主函数声明 SqStack * lnitStack();//初始化空栈 int StackEmpty(SqStack *S);//栈空 void GetTop(SqStack *S ,int *e);//获得栈顶元素 void push(SqStack *S,int *e);//进栈 void pop(SqStack *S,int *e);//出栈 void convert(SqStack *S,int N,int n );//十进制转换N进制 void main() { int  n,N; SqStack *s; s=lnitStack();//初始化空栈 printf("输入要转换的十进制数和要转换的进制数:\n"); scanf("%d,%d",&N,&n); printf("%d转换为%d进制后为:\n",N,n); convert(s,N,n); } SqStack * lnitStack() {    SqStack *S;     S=(SqStack *)malloc(sizeof(SqStack )); S->base=(int*)malloc(S_SIZE*sizeof(int)); S->stacksize=S_SIZE; S->top=S->base;//初始化空栈 return S; } int StackEmpty(SqStack *S) { if(S->base==S->top) return 1; else  return 0; } void GetTop(SqStack *S ,int *e) { *e=*(S->top-1); } void push(SqStack *S,int *e) { if(S->top-S->base>=S->stacksize) { S->base = (int *)realloc(S->base,(S->stacksize+STACKINCREAMENT)*sizeof(int));    S->base += S->stacksize; S->top = S->base;    S->stacksize += STACKINCREAMENT;   }   *(S->top)=*e; S->top++; } void pop(SqStack *S,int *e)  {   //出栈   if(S->base != S->top)   {    S->top--; *e=*S->top;   }  }   void convert(SqStack *S,int N,int n)  { int a; lnitStack(S);   do   {   a=N%n; push(S,&a);    N = N/n;   } while(N != 0);     while(!StackEmpty(S))   {    pop(S,&a);    if(a > 9)//十六进制时输出字母 {     a = a + 55;   printf("%c",a);    }    else     printf("%d",a);   }  printf("\n");  }
查看完整描述

1 回答

已采纳
?
黄小凡

TA贡献69条经验 获得超36个赞

你编译一下就能发现啊,第32行你定义lnitStack 函数时是没有参数的,第76行你调用的时候却传入了参数s,明显有问题啊。


刚试了一下,把76行的lnitStack(S);   中的参数S 删掉就好 了。 采纳我哟。完整的看完你程序。

查看完整回答
2 反对 回复 2016-10-21
  • 慕粉1462487243
    慕粉1462487243
    19 11 C:\Users\Deskep\未命名1.cpp [Error] '::main' must return 'int' 他为什么又这样报错了,把void main() 改为 int main()之后发现 要转换的进制数不管是输入几 输出的都是8 QAQ为什么
  • 慕粉1462487243
    慕粉1462487243
    好吧 有个逗号,么么哒(づ ̄ 3 ̄)づ
  • 1 回答
  • 0 关注
  • 1391 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信