小甲鱼讲的数据结构与算法的逆波兰表达式那节
逆波兰的主函数。int main()
{
sqStack s;
char c;
double d,e;
char str;
int i=0;
InitStack(&s);
printf("please with nibolan expression input,\nnumber and expression use ' ' separation and as '#' over:");
scanf("%c",&c);
while(c!='#')
{
while(isdigit(c)||c=='.')//用于过滤数字。
{
str=c;
str='\0';//????小甲鱼说让我们去掉这行运行会有问题,我试了试没事啊?小甲鱼重点说这行有很重要的作用,所以想问问?这行有什么用?:smile
if(i>=10)
{
printf("\nerror,input single data too big!\n");
return -1;
}
scanf("%c",&c);
if(c==' ')
{
d=atof(str);
Push(&s,d);
i=0;
break;
}
}
switch(c)
{
case '+':
Pop(&s,&e);
Pop(&s,&d);
Push(&s,d+e);
break;
case '-':
Pop(&s,&e);
Pop(&s,&d);
Push(&s,d-e);
break;
case '*':
Pop(&s,&e);
Pop(&s,&d);
Push(&s,d*e);
break;
case '/':
Pop(&s,&e);
Pop(&s,&d);
if(e!=0)
{
Push(&s,d/e);
}
else
{
printf("\nerror,divisor is zeor.\n");
return -1;
}
break;
}
scanf("%c",&c);
}
Pop(&s,&d);
printf("the operation result in the end:%f\n",d);
return 0;
}
str='\0';// 你这个句有错误,没有中括号, 这句就是在字符数组后面加上\0 每一个字符数组都要以0结尾 要不计算机就不知道段字符有多长,问题出现也是有一定的几率 不是每次都会出现,原因是 你设置的这段字符后面 默认的是0 所以没出什么问题 ,如果字符过长,就不一定了! y290176346 发表于 2015-11-13 11:38
str='\0';// 你这个句有错误,没有中括号, 这句就是在字符数组后面加上\0 每一个字符数组都要以0结尾 要 ...
说的不错,应该是str='\0';谢谢大神了。我就是在这些比较抽象的东西方面有点不明白。以后多多照顾。:smile 浮云骑士 发表于 2015-11-13 12:45
说的不错,应该是str='\0';谢谢大神了。我就是在这些比较抽象的东西方面有点不明白。以后多多照顾。:smil ...
中括号打不上去,我不知道为什么? 浮云骑士 发表于 2015-11-13 12:46
中括号打不上去,我不知道为什么?
str='\0'. 浮云骑士 发表于 2015-11-13 12:54
str='\0'.
str='\0'. 感谢分享 :smile:smile:smile:smile:smile:smile 感谢分享 感谢分享 ABCD520232832 发表于 2016-5-15 05:51
感谢分享
不用谢。 感谢分享 其实我看不懂{:10_266:} ABCD520232832 发表于 2016-5-21 02:31
其实我看不懂
其实我知道你是为了转鱼币,我也是。{:5_107:}
页:
[1]