回文数程序:多次执行问题

发表时间: 2011/11/5 20:56:26 作者: 施珺 阅读:2087 回复:0 编辑  删除
 #include<iostream.h>//头文件
//
#include<iostream>
#include <limits>
 
using namespace std;
//
const int TRUE=1;//定义的字符常量
const int FALSE=0;
const int MaxSize=100;
typedef struct Stack//定义的栈
{
    char s[MaxSize];
    int top;
}SeqStack;
void InitStack(SeqStack *Q)//初始化栈
{
   
    Q->top=-1;
}
int Push(SeqStack *Q,char c)//进栈
{
      if(Q->top==MaxSize-1)
    {
         cout<<"该栈已满!"<<endl;
         return(FALSE);
     }
      Q->top=Q->top+1;
      Q->s[Q->top]=c;
      return(TRUE);
}
int IsEmpty(SeqStack *Q)//判断栈是否为空
{
     return(Q->top==-1?TRUE:FALSE);
}
int Pop(SeqStack *Q,char *c)//出栈
{
     if(Q->top==-1)
    {
         return(FALSE);
     }
    *c=Q->s[Q->top];
     Q->top=Q->top-1;
     return(TRUE);
}
int IsHuiwen()//回文函数,看是否是回文
{
     char *a;
     a=new char;
     char ch,end;
      SeqStack Q;//声明一个站并加以初始化
      InitStack(&Q);
      cin>>ch;//输入字符
     while(ch!='&')//当输入的不是'&'的时候
     {
         Push(&Q,ch);//进栈
         cin>>ch;//继续输入
     }
      while(ch!='@')//当输入的不是'@'的时候
     {
         cin>>ch;//输入
         if(ch=='@'&&IsEmpty(&Q))//如果输入了'@',并且已经比较完成以后,返回true
            return(TRUE);
       Pop(&Q,&end);  //让栈中元素出栈并与输入的元素进行比较
       cout<<end<<endl;
       if(ch!=end)//如果不相等,输出相应信息  
        return(FALSE); 
     }
     return(FALSE);
}
void test()
{
     int yes;
      cout<<"请输入你要查看的序列(\'序列1&序列2@\'形式): ";
      yes=IsHuiwen();
     if(yes==1)
          cout<<"原序列是回文序列!"<<endl;
     else
           cout<<"原序列不是回文序列!"<<endl;
   }
void main()//主函数
{
      int flag=1;
      cout<<"欢迎使用回文判断程序!"<<endl<<endl;
     while(flag==1)
    {
         test();
   //注意**
         cout<<"是否要继续?(是请输入1,不是请输入0):";
         cin>>flag;
      }
     cout<<"退出程序,谢谢使用!!!"<<endl;
}


在上述两行代码之前加上清空输入流的语句就可以了,修改如下:
 
 cin.clear();
 cin.ignore(numeric_limits<streamsize>::max(),'\n');

头文件中要换成:
#include<iostream>
#include <limits>
 
using namespace std;
 
则运行结果如下:

回复

快速返回
标题 (可以为空)
姓名*  
内容
 
验证码 验证码(看不清楚?请点击刷新验证码)
  登录