以下是程序的代码。
用.c编译一直出错,总是报一些“{”,“(”符号之类乱七八糟的错误,但是用.cpp编译连接就没问题了。请问这是为什么呢?
#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
#define STACK_INIT_SIZE 100 //存储空间初始分配量
#define STACKINCREMENT 10 //存储空间分配增量
#define OK 1
#define ERROR -1
#define OVERFLOW -1
#define TURE 1
#define FALSE 0
typedef int SElemType;
typedef int Status;
typedef struct{
SElemType *base;
//在栈构造之前和销毁之后, base的值为NULL
SElemType *top; //栈顶指针
int stacksize; //当前已分配的存储空间,以元素为单位
}SqStack;
Status InitStack(SqStack &S) {// 构造一个空栈S
XXXXse = (SElemType * )malloc(STACK_INIT_SIZE * sizeof(SElemType));
if (!XXXXse) exit (OVERFLOW); //存储分配失败
XXXXp =XXXXse;
XXXXacksize =STACK_INIT_SIZE;
return OK;
}//InitStack
Status Pop (SqStack &S,SElemType &e )
{ //若栈不空,则删除S的栈顶元素,并用e返回其值,并返回OK,否则返回ERROR
if(XXXXp ==XXXXse) return ERROR;
e=*XXXXXXp;
return OK;
}// Pop
Status Push(SqStack &S,SElemType e) // 插入元素e为新的栈顶元素
{
if(XXXXp XXXXXse >= XXXXacksize)
{ // 当前存储空间已满,增加分配
XXXXse = (SElemType *)realloc(XXXXse,
(XXXXacksize+STACKINCREMENT)*sizeof(SElemType));
if (! XXXXse ) exit(OVERFLOW); // 存储分配失败
XXXXp =XXXXse+XXXXacksize;
XXXXacksize+= STACKINCREMENT; //增加存储容量
}
*XXXXp++=e;
return OK;
}// Push
Status StackEmpty(SqStack &S)
{
if (XXXXse==XXXXp)
return TURE;
else
return FALSE;
}
void conversion()
{
//对于输入的任意一个非负十进制整数打印输出与其等值的八进制数 构造空栈
SElemType e,N;
SqStack S;
InitStack(S);
printf("输入8进制整数\n");
scanf ("%d",&N);
while (N) {
Push(S, N % 8);
N = N/8;
}
while (!StackEmpty(S)) {
Pop(S,e);
printf( "%d", e );
}
}
void main()
{ // conversion
//ElemType e;
//Stack S;
//InitStack(S);
//printf("输入有关元素:\n");
//scanf("%d",&e);
//Push(S,e);
//Pop(S,e);
//printf("%d",e);
conversion();
getch();
}
200字以内,仅用于支线交流,主线讨论请采用回复功能。