C++ 算术四则运算

C++算术四则运算,随机数种子,除法整除,减法第一位大,统计所答题目各个运算正确率,输入一个非int字符退出随机答题并统计当前正确率,没有详细写注释,应该还有未知bug未解,能跑起来就可以了,哈哈!

运行结果测试如下

代码如下

#include <iostream>
#include <ctime>
#include <windows.h>

using namespace std;


//加减乘除累计题目次数
int m=0, n=0, j=0, k=0;
int g=0;
int M=0,N=0,J=0,K=0;
//生成1-100随机数
int ttran(){
    clockid_t a = 0;
    struct timespec p = {0, 0};
    clock_gettime(a, &p);
    srand((unsigned)p.tv_nsec);
    //srand(100);
    int b;
    b = rand()%100+1;
    //cout<<b<<endl;
    return b;
}
//随机生成一个算式,返回算式计算结果
int ttmath(){
    int a ,b ,c;
    a = ttran();
    Sleep(100);
    b = ttran();
    c = ttran()%4+1;
    if(c ==1){
        g=c;
        cout<<a<<" + "<<b<<" = ";
        m++;
        return a+b;
    }else if(c == 2){
        g=c;
        if(a>b){
                cout<<a<<" - "<<b<<" = ";
                n++;
                return a-b;
            }
        while(1){
            a = ttran();
            Sleep(100);
            b = ttran();
            if(a>b){
                cout<<a<<" - "<<b<<" = ";
                n++;
                return a-b;
            }
        }
        
    }else if(c == 3){
        g=c;
        cout<<a<<" * "<<b<<" = ";
        j++;
        return a*b;
    }else{
        g=c;
        if(a%b == 0){
                cout<<a<<" / "<<b<<" = ";
                k++;
                return a/b;
            }
        while(1){
            a = ttran();
            Sleep(100);
            b = ttran();
            if(a%b == 0){
                cout<<a<<" / "<<b<<" = ";
                k++;
                return a/b;
            }
        }
        //return a/b;
    }
    //return c;
}

int main(){
    int b = 1;
    int c;
    int d = 0;
    int list[100];
    
    cout<<"start-------------"<<endl;
    while (1){
    
    //累计100道结束
    if((m+n+j+k) == 100){
            cout<<"finish 100"<<endl;
            goto ffg;
    }
    cout<<"the "<<b++<<"     ";
    int a ;
    a = ttmath();
    cin>>c;
    //输入非int型提前统计结束
    if(cin.fail()){
        switch (g){
        case 1:
            m--;
            break;
        case 2:
            n--;
            break;
        case 3:
            j--;
            break;
        case 4:
            k--;
            break;
        }
        goto ffg;
    }
    if(c == a){
        continue;
    }else{
        
        list[d] = b-1; 
        d++;

        switch (g){
        case 1:
            M++;
            break;
        case 2:
            N++;
            break;
        case 3:
            J++;
            break;
        case 4:
            K++;
            break;
        }
    }
    }
ffg:
    cout<<"in all: "<<m+n+j+k<<" ; Total Error: "<<d<<" ;please check: ";
    
    for(int l = 0; l<d; l++){
        cout<<list[l]<<", ";
    }
    cout<<endl<<"Accuracy:"<<((m+n+j+k-d)*100)/(m+n+j+k)<<"%"<<endl;
    if(m!=0){
        cout<<"+   "<<"in all:"<<m<<"  error:"<<M<<" Accuracy:"<<(m-M)*100/m<<"%"<<endl;
    }
    if(n!=0){
        cout<<"-   "<<"in all:"<<n<<"  error:"<<N<<" Accuracy:"<<(n-N)*100/n<<"%"<<endl;
    }
    if(j!=0){
        cout<<"*   "<<"in all:"<<j<<"  error:"<<J<<" Accuracy:"<<(j-J)*100/j<<"%"<<endl;
    }
    if(k!=0){
        cout<<"/   "<<"in all:"<<k<<"  error:"<<K<<" Accuracy:"<<(k-K)*100/k<<"%"<<endl;
    }    
    char q;
    cout<<"input q ---exit"<<endl;
   while ((q = getchar()) != 'q');

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值