c语言e的ascll编码值,求教!我想显示数字但是现在显示的却是数字在ASCII码中对应的符...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

以下是程序,可能比较长,主要的问题是比如计算表达式6+3*(9-5)/2-8可得结果是4,但是如果输入3*4,则得到结果'

#include

using namespace std;

#include

#define OK 1

#define ERROR 0

#define OVERFLOW -2

#define MAXSIZE 100

typedef int Status;

typedef struct

{

char *base;

char *top;

int stacksize;

}SqStack;

Status InitStack(SqStack &S)

{

S.base=new char[100];

if(!S.base) exit(OVERFLOW);

else S.top=S.base;

S.stacksize=MAXSIZE;

return OK;

}

Status Push(SqStack &S,char e)

{

if(S.top-S.base==S.stacksize) return ERROR;

else *S.top++=e;

return OK;

}

char GetTop(SqStack S)

{

if(S.top!=S.base)

return *(S.top-1);

else exit(ERROR);

}

Status Pop(SqStack &S,char &e)

{

if(S.top==S.base) return ERROR;

else {--S.top;e=*S.top;}

return OK;

}

Status In(char c)

{

if(c>='0'&&c<='9') return 0;

else if(c=='+'||c=='-'||c=='*'||c=='/'||c=='('||c==')'||c=='#') return 1;

else exit(ERROR);

}

int Precede(char a,char b)//a为栈顶元素,b为读到的元素//令a等于b为7,a大于b为8,a小于b为9

{

if(b=='+')

{

if(a=='('||a=='#') return(9);

else return(8);

}

if(b=='-')

{

if(a=='('||a=='#') return(9);

else return(8);

}

if(b=='*')

{

if(a=='*'||a=='/'||a==')') return(8);

else return(9);

}

if(b=='/')

{

if(a=='*'||a=='/'||a==')') return(8);

else return(9);

}

if(b=='(') return(9);

if(b==')')

{

if(a=='(') return(7);

return(8);

}

if(b=='#')

{

if(a=='#') return(7);

else return(8);

}

}

int Operate(int a,char theta,int b)

{

if(theta=='+') return (a+b-'0');

else if(theta=='-') return (a-b+'0');

else if(theta=='*') return ((a-'0')*(b-'0')+'0');

else if(theta=='/') return ((a-'0')/(b-'0')+'0');

}

char EvaluateExpression(char s[])

{

char x,theta,ch;

char a,b,r;

int i;

SqStack OPTR,OPND;

InitStack(OPTR);

InitStack(OPND);

Push(OPTR,'#');

for(i=0;i

{

ch=s[i];

if(!(r=In(ch))){Push(OPND,ch);}

else

{

switch(Precede(GetTop(OPTR),ch))

{

case 9://a小于b为9

Push(OPTR,ch);

break;

case 8://a大于b为8//应该是从此处开始无法将字符输入到OPTR中

Pop(OPTR,theta);

Pop(OPND,b);

Pop(OPND,a);

Push(OPND,Operate(a,theta,b));

i=i-1;

break;

case 7://a等于b为7

Pop(OPTR,x);

break;

}

}

}

return GetTop(OPND);

}

int main()

{

cout<

cout<

char e[100];

gets(e);

char result;

result=EvaluateExpression(e);

cout<

cout<

cout<

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 ASCII 码,以十进制表示,e 的为 101,G 的为 71,3 的为 51,a 的为 97。因此,G 的更大。 ASCII 码(American Standard Code for Information Interchange)是一种常用的电脑编码系统,它将字母、数字和特殊号等编码成不同的数字,使得计算机能够辨别并存储文本信息。 ASCII 码是以十进制形式表示的,共包含 0 到 127 个字。每个字都有一个唯一的数字,这个数字越大,代表的字的 ASCII 码就越大。 ### 回答2: 在ASCII码,每个字都有对应数字。根据ASCII码表,我们可以找到e、G、3和a这几个字对应数字。 e的ASCII为101, G的ASCII为71, 3的ASCII为51, a的ASCII为97。 根据ASCII码数字,我们可以看出,G对应最大,为71。其次是a,对应为97。接下来是e,对应为101。最后是3,对应为51。 所以,在e、G、3和a这几个字,G对应最大。 ### 回答3: 在 ASCII 码,每个字对应着一个唯一的。根据 ASCII 码表,我们可以找到 e、G、3 和 a 所对应如下: - 字 e 对应的 ASCII 为 101; - 字 G 对应的 ASCII 为 71; - 字 3 对应的 ASCII 为 51; - 字 a 对应的 ASCII 为 97。 因此,根据 ASCII 码的大小,我们可以得出以下结论: - 字 G 对应的 ASCII 最大,为 71; - 字 e 对应的 ASCII 次之,为 101; - 字 a 对应的 ASCII 稍小,为 97; - 字 3 对应的 ASCII 最小,为 51。 综上所述,字 G 对应最大。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值