可以帮助指出问号部分的错误原因吗
数制转换的代码,红色部分的错误提示是什么原因呢程序代码:
#include "stdio.h" #include "stdlib.h" #include "malloc.h" #include "string.h" #define STACK_INIT_SIZE 1000 #define STACKINCREMENT 10 #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define OVERFLOW 0 typedef struct { int *base; int *top; int stacksize; }SqStack;//栈的顺序存储表示 int N;//定义全局变量N,表示将要转换为R进制的十进制数 int R;//定义全局变量R,表示进制数R int InitStack(SqStack &S) { S.base=(int*)malloc(STACK_INIT_SIZE * sizeof(int)); if(!S.base)exit(0); S.top=S.base; S.stacksize=STACK_INIT_SIZE; return OK; }//栈的初始化 int StackEmpty(SqStack &S) { if(S.top==S.base) return TRUE; else return FALSE; }//判断栈是否为空 int Push(SqStack &S,int e) { if(S.top-S.base>=S.stacksize) { S.base=(int*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(int)); if(!S.base) exit(OVERFLOW); S.top=S.base+S.stacksize; S.stacksize+=STACKINCREMENT; } *S.top++=e; return OK; }//进栈操作 int Pop(SqStack &S,int &e) {if(S.top==S.base)return ERROR; e=*--S.top ; return OK; }//出栈操作 void conversion(SqStack &S,int R,int N,int &e) { InitStack(S); while(N) { Push(S,N%R); N=N/R; } while(!StackEmpty(S))//?? { Pop(S,e);//?? if(e<10) { printf("%d",e); } else { e=e+55; printf("%c\n",e); } } printf("\n"); }//数制转换函数 int Ninputlegality() { char str1[100];//数组str存放输入的字符,以便判断输入是否有误 int i; gets(str1);//?? for(i=0;str1[i]!='\0';i++) {if((str1[i]>57)||(str1[i]<48)) { return(0); break; } else { N=atoi(str1);//输入无误时,字符数组转换为十进制数N return(1); } } }//判断十进制数N输入是否合法 int Rinputlegality() { char str2[100]; int i; gets(str2); for(i=0;str2[i]!='\0';i++) { if((str2[i]>57)||(str2[i]<48)) { return(0); break; } else { R=atoi(str2);//输入无误时,字符数组转换为进制数R return(1); } } }//判断进制数r输入是否合法 void main() { int e,p,q; SqStack S; m:printf("请输入十进制整数N:"); p=Ninputlegality(); if(p==0) { printf("输入有误\n"); goto m; }//保证输入数据合法 n:printf("请输入将要转换为的进制数R:"); q=Rinputlegality(); if(q==0) { printf("输入有误\n"); goto n; }//保证输入数据合法 printf("%d由十进制转换为%d进制数为:",N,R); conversion(S,R,N,e); }//主函数
[ 本帖最后由 longxingxiu 于 2014-5-17 00:48 编辑 ]