中科院量子上市公司:懂计算机编程的高手请帮帮忙!!!(数据结构)

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/05 05:06:29
我现在想要实现的功能是比较算术符号的优先级,如果前者的优先级比后者的高,即返回yes,若为低,则返回yes1,若相等,则返回yes2;我现在的问题就是当你第一次输入两个算法符号的时候输出的结果是正确的,但当你第二次再输入的时候就会出现问题,这是为什么呢?请哪位高手帮帮忙。
#include"stdio.h"
Precede(char &c1,char &c2)
{
if(c1=='+'&&c2=='+')return('>');
else if(c1=='+'&&c2=='-')return('>');
else if(c1=='+'&&c2=='*')return('<');
else if(c1=='+'&&c2=='/')return('<');
else if(c1=='+'&&c2=='(')return('<');
else if(c1=='+'&&c2==')')return('>');
else if(c1=='+'&&c2=='#')return('>');
else if(c1=='-'&&c2=='+')return('>');
else if(c1=='-'&&c2=='-')return('>');
else if(c1=='-'&&c2=='*')return('<');
else if(c1=='-'&&c2=='/')return('<');
else if(c1=='-'&&c2=='(')return('<');
else if(c1=='-'&&c2==')')return('>');
else if(c1=='-'&&c2=='#')return('>');
else if(c1=='*'&&c2=='+')return('>');
else if(c1=='*'&&c2=='-')return('>');
else if(c1=='*'&&c2=='*')return('>');
else if(c1=='*'&&c2=='/')return('>');
else if(c1=='*'&&c2=='(')return('<');
else if(c1=='*'&&c2==')')return('>');
else if(c1=='*'&&c2=='#')return('>');
else if(c1=='/'&&c2=='+')return('>');
else if(c1=='/'&&c2=='-')return('>');
else if(c1=='/'&&c2=='*')return('>');
else if(c1=='/'&&c2=='/')return('>');
else if(c1=='/'&&c2=='(')return('<');
else if(c1=='/'&&c2==')')return('>');
else if(c1=='/'&&c2=='#')return('>');
else if(c1=='('&&c2=='+')return('<');
else if(c1=='('&&c2=='-')return('<');
else if(c1=='('&&c2=='*')return('<');
else if(c1=='('&&c2=='/')return('<');
else if(c1=='('&&c2=='(')return('<');
else if(c1=='('&&c2==')')return('=');
else if(c1=='('&&c2=='#')return('1');
else if(c1==')'&&c2=='+')return('>');
else if(c1==')'&&c2=='-')return('>');
else if(c1==')'&&c2=='*')return('>');
else if(c1==')'&&c2=='/')return('>');
else if(c1==')'&&c2=='(')return('1');
else if(c1==')'&&c2==')')return('>');
else if(c1==')'&&c2=='#')return('>');
else if(c1=='#'&&c2=='+')return('<');
else if(c1=='#'&&c2=='-')return('<');
else if(c1=='#'&&c2=='*')return('<');
else if(c1=='#'&&c2=='/')return('<');
else if(c1=='#'&&c2=='(')return('<');
else if(c1=='#'&&c2==')')return('1');
else if(c1=='#'&&c2=='#')return('=');
return ('0');
}
void main()
{
char a;
char b,d;
while(a&&b)
{
printf("Please enter the characters:\n");
scanf("%c%c",&a,&b);
if(a=='0'||b=='0')
{
break;
}
printf("%c %c\n",a,b);
d=Precede(a,b);
switch(d)
{
case'>':printf("YES!\n");break;
case'<':printf("YES1!\n");break;
case'=':printf("YES2!\n");break;
default:printf("Selection error!\n");break;
}
}
}
这个程序运行不起来啊,第一次输入两个字符,比如说是++,返回的结果是正确的;但是第二次再输入的时候,比如说--,它就会当成分开的一个一个的字符来接收,返回的结果是-Selection error!Please enter the character:-Selection error!就是说,它会把我输入的两个字符分开看,相当于我输入了两次,每次都只输入一个字符。这到底是怎么回事啊?请各位高手帮帮忙啊!!!

你这个都能运行,