C++四则运算运行时错误

问题遇到的现象和发生背景

C++

遇到的现象和发生背景,请写出第一个错误信息

编译无错误,但达不到预期效果

用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
#include
using namespace std;
int a,b,huida,daan;
int xyt=0;
void zw(){
    cin>>huida;
    cout<if(huida==daan){
        cout<<"答对啦,真聪明!进入下一题扣0,退出扣1。"<>xyt;
        cout<else
    cout<<"Wrong!答案等于"<"。进入下一题扣0,退出扣1。"<>xyt;cout<while(xyt==0){
    srand(time(0));
    a=rand()%100;
    b=rand()%100;
    switch(rand()%4){
        case 0:daan=a+b;cout<'+'<'=';zw();break;
        case 1:if(b>a){a=b;    b=a;}daan=a-b;cout<'-'<'=';zw();break;
        case 2:daan=a*b;cout<'*'<'=';zw();break;
        case 3:a=a*1.0;daan=a/b;cout<'/'<'=';zw();break;            
    }   
    }    
    return 0;
}

运行结果及详细报错内容

编译成功,运行时回答问题后扣0不进入下一题(程序还在运行)

我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%

实在没有思路,恳请高人解答

我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”

正常运行程序,电脑自动出题,回答后可选择是否进入下一题。

回答请附原因及修正后的代码

else你没加括号

#include<bits/stdc++.h>
using namespace std;
int a,b,huida,daan;
int xyt=0;
void zw(){
    cin>>huida;
    //cout<<endl;
    if(huida==daan){
        cout<<"答对啦,真聪明!进入下一题扣0,退出扣1。"<<endl;    
        cin>>xyt;
        cout<<endl;        
    }
    else
    {
        cout<<"Wrong!答案等于"<<daan<<"。进入下一题扣0,退出扣1。"<<endl;
        cin>>xyt;
        cout<<endl;
    }
}
int main() 
{
    while(xyt==0){
        //cout<<xyt<<endl;
        srand(time(0));
        a=rand()%100;
        b=rand()%100;
        switch(rand()%4){
            case 0:daan=a+b;cout<<a<<'+'<<b<<'=';zw();break;
            case 1:if(b>a){a=b;    b=a;}daan=a-b;cout<<a<<'-'<<b<<'=';zw();break;
            case 2:daan=a*b;cout<<a<<'*'<<b<<'=';zw();break;
            case 3:a=a*1.0;daan=a/b;cout<<a<<'/'<<b<<'=';zw();break;            
        }   
    }    
    return 0;
}

在你的程序中,进入下一题的条件是 xyt 等于 0。但是在 main 函数的最后,xyt 被赋值为 0 。所以程序会一直循环下去。

修正后的代码应该这样:

int main() 
{
    while(xyt==0){
    srand(time(0));
    a=rand()%100;
    b=rand()%100;
    switch(rand()%4){
        case 0:daan=a+b;cout<<a<<'+'<<b<<'=';zw();break;
        case 1:if(b>a){a=b;    b=a;}daan=a-b;cout<<a<<'-'<<b<<'=';zw();break;
        case 2:daan=a*b;cout<<a<<'*'<<b<<'=';zw();break;
        case 3:a=a*1.0;daan=a/b;cout<<a<<'/'<<b<<'=';zw();break;            
    }   
    }    
    return 0;
}

在 void zw() 里添加一个语句:

cin>>xyt;

这样,在回答问题后,程序就会等待用户输入进入下一题或退出。

修正后代码如下:


#include<bits/stdc++.h>
using namespace std;
int a,b,huida,daan;
int xyt=0;
void zw(){
    cin>>huida;
    cout<<endl;
    if(huida==daan){
        cout<<"答对啦,真聪明!进入下一题扣0,退出扣1。"<<endl;    
    }
    else
    cout<<"Wrong!答案等于"<<daan<<"。进入下一题扣0,退出扣1。"<<endl;
    cin>>xyt;cout<<endl;    
}
int main() 
{
    while(xyt==0){
    srand(time(0));
    a=rand()%100;
    b=rand()%100;
    switch(rand()%4){
        case 0:daan=a+b;cout<<a<<'+'<<b<<'=';zw();break;
        case 1:if(b>a){a=b;    b=a;}daan=a-b;cout<<a<<'-'<<b<<'=';zw();break;
case 2:daan=ab;cout<<a<<''<<b<<'=';zw();break;
case 3:a=a*1.0;daan=a/b;cout<<a<<'/'<<b<<'=';zw();break;
}
}
return 0;
}