账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    请问需要加等号吗?为什么运行结果都对呢?
    37
    0
    #include<iostream>
    using namespace std;
    
    const int MAXSIZE=100;
    typedef int ElemType;
    typedef struct
    {
        ElemType data[MAXSIZE];
        int front;
        int rear;
    }SeqQueue;
    
    void InitQueue(SeqQueue &Q)
    {
        Q.front=Q.rear=0;
    }
    
    void EnQueue(SeqQueue &Q,ElemType x)
    {
        if((Q.rear+1)%MAXSIZE==Q.front)
        {
            cout<<"队列已满"<<endl;
            exit(1);
        }
        Q.rear=(Q.rear+1)%MAXSIZE;
        Q.data[Q.rear]=x;
    }
    
    ElemType DeQueue(SeqQueue &Q)
    {
        if(Q.front==Q.rear)
        {
            cout<<"队列已空"<<endl;
            exit(1);
        }
        
        Q.front=(Q.front+1)%MAXSIZE;
        ElemType x=Q.data[Q.front];
        return x;
    }
    
    bool QueueEmpty(SeqQueue &Q)
    {
        return Q.front==Q.rear;
    }
    
    bool QueueFull(SeqQueue &Q)
    {
        return (Q.rear+1)%MAXSIZE==Q.front;
    }
    
    int QueueLength(SeqQueue &Q)
    {
        return (Q.rear-Q.front+MAXSIZE)%MAXSIZE;
    }
    
    ElemType QueueMax(SeqQueue &Q)
    {
        int i;
        int f=(Q.front+1)%MAXSIZE;
        ElemType max=Q.data[f];
        
        for(i=1;i<QueueLength(Q);i++)
            if(max<Q.data[f+i])
               max=Q.data[f+i];
               
        
        return max;
    }
    
    int main()
    {
        SeqQueue Q;
        
        int time=0;
        ElemType e;
        int x,flag,index;
    
        InitQueue(Q);
        cout<<"请输入打印队列,以-1结束:";
        cin>>e;
        while(e!=-1)
        {
            EnQueue(Q,e);
            cin>>e;
        }
        
        cout<<"请输入需打印任务在队列中的位置:";
        cin>>x;
        if(x>QueueLength(Q))
        {
            cout<<"输入的位置有误!\n";
            return 0; 
        }
        flag=x;         //设置需打印任务在队列中的位置
        while(!QueueEmpty(Q)) 
        {
            e=DeQueue(Q);
            flag--;
            if(e<QueueMax(Q))
            { 
            
                EnQueue(Q,e);
                if(flag==0)
                   flag=QueueLength(Q);
            }
            else
            {
                time++;
                if(flag==0)
                   break;
            }
        }
        cout<<"完成打印任务所需时间为:"
            <<time<<"min.\n";
        
        return 0;
    }

    上面QueueMax函数中有一行for(i=1;i<QueueLength(Q);i++),书上写的是i<=QueueLength(Q)。请问需要加等号吗?
    为什么运行结果都对呢?

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • 点寂寞、抽孤单 普通会员 1楼

      在编程或数学运算中,"需要加等号"这个问题需要具体的上下文环境来判断。通常情况下:

      1. 在赋值语句中,比如在Python、Java等编程语言中,给变量赋值时必须使用等号(=): python a = 5

      2. 在数学公式表示“等于”的关系时,也需要使用等号(=): markdown 3 + 4 = 7

      3. 在条件判断、比较运算中,会用到双等号(==)表示两者是否相等: python if a == 5: print("a is equal to 5")

      至于你说的“运行结果都对”,如果是在某种特定场景下,即使未正确使用等号,程序也能得到预期的结果,这可能是由于语言的容错机制或者逻辑上的巧合,并不代表操作是正确的。例如,在某些情况下的逻辑运算符误写为赋值运算符,虽然可能不会报错并得到预期结果,但这是一种错误的用法,应当避免。

      所以,请提供更详细的代码或问题背景,以便给出准确的答案。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部