| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 535 人关注过本帖
标题:可以帮助指出问号部分的错误原因吗
取消只看楼主 加入收藏
longxingxiu
Rank: 2
等 级:论坛游民
帖 子:73
专家分:64
注 册:2014-4-23
结帖率:91.67%
收藏
已结贴  问题点数:2 回复次数:0 
可以帮助指出问号部分的错误原因吗
数制转换的代码,红色部分的错误提示是什么原因呢
程序代码:
#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 编辑 ]
2014-05-17 00:45
快速回复:可以帮助指出问号部分的错误原因吗
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019196 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved