(shu[j]!='#')Р {Р cout<<shu[j];Р j++;Р }Р cout<<"# "<<gettop(fen)<<"->";Р for(j=0;j<str.length();j++) Р { cout<<str.at(j);}Р row++;Р pop(fen,ch2);Р j=str.length()-1;Р while(j>=0)Р {Р push(fen,str.at(j));Р j--;Р }Р cout<<endl;Р }Р }Р?}Р?Р}Рvoid main()Р{Р?cout<<"这里是预测分析法程序测试!!!"<<endl;Р?cout<<"请输入一串仅含i,+,*,(,)的字符串,并以#结束"<<endl;Р?char a;Р?sqstack fen;Р?int i=0;Р?while(a!='#')Р?{Р cin>>a;Р shu[i]=a;Р i++;Р?}Р?cout<<"对输入串:"<<shu<<"的分析过程"<<endl;Р?initstack(fen);Р?push(fen,'#');Р?push(fen,'E');Р?fenxi(fen);Р}Р运行结果截图:Р测试一:Р测试二:Р测试三:(错误测试)Р七、实验小结和思考Р预测分析法相对于RL法简单很多,而且预测分析表已经得到。直接按照书上一步步编程就好。试验中遇到几个问题:1.首次在C语言中使用string引用,不知道如何输出。Р栈输出时,顺序是倒的。3.实验调试成功后莫名其妙地出现几行空白Р这些问题,第一个通过网络了解了string类型的使用得到了解决,第二个问题自己编个函数也行,就是第三个问题,我找了半天没有发现那里有多余的换行输出符,我预测可能是我调试的时候多加了一个(由于我的C语言版本使用debug断点调试会出现错误,我使用的是最原始的调试),不过也无伤大雅。