主题:[讨论]为什么我的这个程序出了错误呢
#include <ctype.h>
#include <malloc.h>
#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <io.h>
#include <math.h>
#include <process.h>
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
typedef int Status;
typedef int Boolean;
#define STACK_INIT_SIZE 10 // 存储空间初始分配量
#define STACK_INCREMENT 2 // 存储空间分配增量
struct SqStack
{
int *base; // 在栈构造之前和销毁之后,base的值为NULL
int *top; // 栈顶指针
int stacksize; // 当前已分配的存储空间,以元素为单位
}; // 顺序栈
void InitStack(SqStack &S);
void Push(SqStack &S,int e);
int Pop(SqStack &S,int &e);
int StackEmpty(SqStack S);
void InitStack(SqStack &S)
{ // 构造一个空栈S
if(!(S.base=(int *)malloc(STACK_INIT_SIZE*sizeof(int))))
exit(OVERFLOW); // 存储分配失败
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
}
void Push(SqStack &S,int e)
{ // 插入元素e为新的栈顶元素
if(S.top-S.base>=S.stacksize) // 栈满,追加存储空间
{
S.base=(int *)realloc(S.base,(S.stacksize+STACK_INCREMENT)*sizeof(int));
if(!S.base)
exit(OVERFLOW); // 存储分配失败
S.top=S.base+S.stacksize;
S.stacksize+=STACK_INCREMENT;
}
*(S.top)++=e;
}
int Pop(SqStack &S,int &e)
{ // 若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;否则返回ERROR
if(S.top==S.base)
return ERROR;
e=*--S.top;
return OK;
}
int StackEmpty(SqStack S)
{ // 若栈S为空栈,则返回TRUE,否则返回FALSE
if(S.top==S.base)
return TRUE;
else
return FALSE;
}
int main()
{ // 对于输入的任意一个非负10进制整数,打印输出与其等值的16进制数
SqStack s;
unsigned n; // 非负整数
int x;
InitStack(s); // 初始化栈
printf("将10进制整数n转换为8进制数,请输入:n(>=0)=");
scanf("%u",&n); // 输入非负十进制整数n
while(n) // 当n不等于0
{
Push(s,n%8); // 入栈n除以16的余数(16进制的低位)
n=n/8;
}
while(!StackEmpty(s)) // 当栈不空
{
Pop(s,x); // 弹出栈顶元素且赋值给e
printf("%d",x); // 大于9的余数,输出相应的字符
}
printf("\n");
system("pause");
return 0;
}
在上可以通过...但在上却不行...而且错误很奇怪的
出的错误居然是unresolved external symbol _WinMain@16 referenced in function ___tmainCRTStartup
: fatal error LNK1120: 1 unresolved externals
#include <malloc.h>
#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <io.h>
#include <math.h>
#include <process.h>
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
typedef int Status;
typedef int Boolean;
#define STACK_INIT_SIZE 10 // 存储空间初始分配量
#define STACK_INCREMENT 2 // 存储空间分配增量
struct SqStack
{
int *base; // 在栈构造之前和销毁之后,base的值为NULL
int *top; // 栈顶指针
int stacksize; // 当前已分配的存储空间,以元素为单位
}; // 顺序栈
void InitStack(SqStack &S);
void Push(SqStack &S,int e);
int Pop(SqStack &S,int &e);
int StackEmpty(SqStack S);
void InitStack(SqStack &S)
{ // 构造一个空栈S
if(!(S.base=(int *)malloc(STACK_INIT_SIZE*sizeof(int))))
exit(OVERFLOW); // 存储分配失败
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
}
void Push(SqStack &S,int e)
{ // 插入元素e为新的栈顶元素
if(S.top-S.base>=S.stacksize) // 栈满,追加存储空间
{
S.base=(int *)realloc(S.base,(S.stacksize+STACK_INCREMENT)*sizeof(int));
if(!S.base)
exit(OVERFLOW); // 存储分配失败
S.top=S.base+S.stacksize;
S.stacksize+=STACK_INCREMENT;
}
*(S.top)++=e;
}
int Pop(SqStack &S,int &e)
{ // 若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;否则返回ERROR
if(S.top==S.base)
return ERROR;
e=*--S.top;
return OK;
}
int StackEmpty(SqStack S)
{ // 若栈S为空栈,则返回TRUE,否则返回FALSE
if(S.top==S.base)
return TRUE;
else
return FALSE;
}
int main()
{ // 对于输入的任意一个非负10进制整数,打印输出与其等值的16进制数
SqStack s;
unsigned n; // 非负整数
int x;
InitStack(s); // 初始化栈
printf("将10进制整数n转换为8进制数,请输入:n(>=0)=");
scanf("%u",&n); // 输入非负十进制整数n
while(n) // 当n不等于0
{
Push(s,n%8); // 入栈n除以16的余数(16进制的低位)
n=n/8;
}
while(!StackEmpty(s)) // 当栈不空
{
Pop(s,x); // 弹出栈顶元素且赋值给e
printf("%d",x); // 大于9的余数,输出相应的字符
}
printf("\n");
system("pause");
return 0;
}
在上可以通过...但在上却不行...而且错误很奇怪的
出的错误居然是unresolved external symbol _WinMain@16 referenced in function ___tmainCRTStartup
: fatal error LNK1120: 1 unresolved externals