用C++设计了一个算法,检验括号的匹配,运行时光标一直闪烁,提醒输入,谁能告诉我这是为什么啊

#include<stdio.h>#include<string.h>#include<malloc.h>#defineSTACK_INIT_SIZE100#define... #include <stdio.h>
#include <string.h>
#include <malloc.h>
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define OVERFLOW -2

typedef char SElemType;
typedef int Status;
typedef struct {
SElemType *top,*base;
int stacksize;
}SqStack;
/*初始化顺序栈*/
Status InitStack(SqStack *S){
S->base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType));
if(!S->base) return OVERFLOW;
S->top=S->base;
S->stacksize=STACK_INIT_SIZE;
return OK;
}
/*判断顺序栈是否为空*/
Status StackEmpty(SqStack *S){
return S->base==S->top;

}
/*判断顺序栈是否为满*/
Status StackFull(SqStack *S){
return S->top-S->base>=S->stacksize;

}
/*取顺序栈的栈顶元素*/
Status GetTop(SqStack *S){
int a;
if(S->top!=S->base)
a=*(--S->top);
return a;
}
/*求顺序栈的长度 长度作为返回值返回*/
Status StackLength(SqStack *S){
int n;
n=(S->top)-(S->base);
return n;
}
/*输出顺序栈*/
Status ShowStack(SqStack *S){
SElemType *p;
int n,i;
n=StackLength(S);
p=S->base;
for(i=1;i<=n;i++){
printf("%c",*p);
p=p+1;
}
return OK;

}
/*进栈*/
Status Push(SqStack *S,SElemType e){
if(StackFull(S)) return OVERFLOW;
*(S->top)=e;
S->top++;
return OK;
}
/*出栈 把出站的元素作为返回值*/
Status Pop(SqStack *S){
int a;
a=*(--S->top);
return a;

}

main(){
char c;
char d[100];
int a=0,b=0,SUM=0;
SqStack r;
SqStack *S;
S=&r;
InitStack(S);
printf("put the string:");
scanf("%s",d);
while(c=getchar()!='\0'){
if(c='(')
Push(S,c);
a=a+1;
}
while(c=getchar()!='\0'){
if(c=')')
Pop(S);
b=b+1;
}
if(a>=b)
SUM=a-b;
else if(a<=b)
SUM=b-a;
return SUM;
}
展开
 我来答
风若远去何人留
2013-04-08 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450126
专业C/C++软件开发

向TA提问 私信TA
展开全部
while(c=getchar()!='\0')
getchar是读从屏幕上输入的
你在屏幕上如果没有输入\0 他就会一直循环
不过 在屏幕上怎么输入\0呢?难度不小
这里的设计应该有些问题
更多追问追答
追问
scanf("%s",d);
字符串的输入是用这个啊
回车不是结束字符串的输入吗
追答
\0是字符串结束符,回车是\n
另外你输入的字符串放在了d里面,后来就没用过了啊
getchar是又到输入去读的,并不会从d里面读
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式