Toggle navigation
科创
{{ getSearchSuggestionLabel(suggestion) }}
{{ part.text }}
查看更多
登录
 
注册
电波
论坛
专栏
应用
登录
注册
{{ getSearchSuggestionLabel(suggestion) }}
{{ part.text }}
查看更多
论坛
>
计算机科学
>
软件综合
>
计算机编程
文号
t77737
阅读
9903
回复
9
收藏
4
关于C语言写数制转换的问题
季节逝去
2015/11/10
软件综合
IP:福建
以下是程序的代码。
用.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
S.base = (SElemType * )malloc(STACK_INIT_SIZE * sizeof(SElemType));
if (!S.base) exit (OVERFLOW); //存储分配失败
S.top =S.base;
S.stacksize =STACK_INIT_SIZE;
return OK;
}//InitStack
Status Pop (SqStack &S,SElemType &e )
{ //若栈不空,则删除S的栈顶元素,并用e返回其值,并返回OK,否则返回ERROR
if(S.top ==S.base) return ERROR;
e=*--S.top;
return OK;
}// Pop
Status Push(SqStack &S,SElemType e) // 插入元素e为新的栈顶元素
{
if(S.top -S.base >= S.stacksize)
{ // 当前存储空间已满,增加分配
S.base = (SElemType *)realloc(S.base,
(S.stacksize+STACKINCREMENT)*sizeof(SElemType));
if (! S.base ) exit(OVERFLOW); // 存储分配失败
S.top =S.base+S.stacksize;
S.stacksize+= STACKINCREMENT; //增加存储容量
}
*S.top++=e;
return OK;
}// Push
Status StackEmpty(SqStack &S)
{
if (S.base==S.top)
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();
}
来自:
计算机科学
/
软件综合
/
计算机编程
9
0
全部
只看作者
季节逝去
作者
11年1个月前
IP:福建
796495
1楼
用VC6.0写的。这是编写成功后的截图
加载全文
引用
评论
0
季节逝去
作者
11年1个月前
IP:福建
796501
2楼
这个程序写了2天,其实不用栈也可以写出的,也更省事,但是写的代码一点也不短,你们能以最短的代码写出,不一定用什么先进的算法?就是把10进制转换为8进制,程序的printf(“输入8进制整数”)是错误的,应该是10进制……
加载全文
引用
评论
0
季节逝去
作者
11年1个月前
IP:福建
796506
4楼
引用 金星凌日:
我记得传引用的参数(就是参数前面的&)是C++才有的,C语言只能传指针。(没看过后来的C语言标准,不知新标准里有没有。但VC6肯定不支持)
你说的是不是scanf(“%d",&e);?如果是这个,那么C语言是支持的,
加载全文
引用
评论
0
全部
只看作者
在列表中查看
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
编辑
删除
{{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
保存
取消
我也是有底线的
保存中...
保存