练习,自动出题并判断

设计一个程序,用来实现帮助小学生进行算术运算练习
/*
小学生运算,自动出题并判断
*/
#include <iostream>
#include<ctime>
#include<cstdlib>
using namespace std;

int main()
{
    int i,n=0,s,ran_num1,ran_num2;
    srand(time(0)); //time(0)返回值作种子
    for(i=1; i<=3; i++)
    {
        ran_num1=rand()%100;
        ran_num2=rand()%100;

        cout<<ran_num1<<"+"<<ran_num2<<"=";
        cin>>s;
        if (s==(ran_num1+ran_num2))
        {
             n+=1;
        cout<<"正确"<<endl;
        }
        else cout<<"错误"<<endl;

    }

cout<<"总共作对"<<n<<"道题!"<<endl;
    return 0;
}

它具有以下功能:提供10道加、减、乘、除四种基本算术运算的题目,每道题中的操作数是随机产生的,且操作数不超过2位数的正整数;练习者根据显示的题目输入自己的答案,程序自动判断输入的答案是否正确并显示出相应的信息。最后显示做对了几道题。

/*
小学生四则运算,自动出题并判断
*/
#include <iostream>
#include<ctime>
#include<cstdlib>
using namespace std;

int main()
{
    int i,n=0,s,c,d,ran_num1,ran_num2,f;
    srand(time(0)); //time(0)返回值作种子
    for(i=1; i<=10; i++)
    {
        ran_num1=rand()%100;
        ran_num2=rand()%100+1;
        f=rand()%4;
        if(ran_num1<ran_num2)
            {
                c=ran_num1;
                ran_num1=ran_num2;
                ran_num2=c;
            }

        switch(f)
        {
        case 0:
            d=ran_num1+ran_num2;
            cout<<ran_num1<<"+"<<ran_num2<<"=";
            break;
        case 1:

            d=ran_num1-ran_num2;
            cout<<ran_num1<<"-"<<ran_num2<<"=";
            break;

        case 2:
            d=ran_num1*ran_num2;
            cout<<ran_num1<<"*"<<ran_num2<<"=";
            break;

        case 3:
            d=ran_num1/ran_num2;
            cout<<ran_num1<<"/"<<ran_num2<<"=";
            break;

        }
        cin>>s;
        if (s==d)
        {
            n+=1;
            cout<<"正确"<<endl;
        }
        else cout<<"错误"<<endl;

    }

    cout<<"总共作对"<<n<<"道题!"<<endl;
    return 0;
}

学习其他方法

    #include <iostream>  
    #include<ctime>  
    #include<cstdlib>  
    int qa(); //函数声明,完成一道题的测试并返回评判结果,正确1为,错误为0  
    using namespace std;  
    int main()  
    {  
        int sum=0;//学生得分  
        for(int i=0; i<10; i++)  
        {  
            cout<<"第"<<i+1<<"题:"<<endl;  
            sum+=qa();  
            cout<<endl;  
        }  
        cout<<"共答对了"<<sum<<"道题,得分"<<sum*10<<endl;  
        return 0;  
    }  
      
    int qa()  
    {  
        srand(time(0)); //初始化随机种子  
        int a,b,c,d,t;  
        a=rand()%100+1;  
        b=rand()%100+1;  
        c=rand()%4;  
        if(a<b&&(c==1||c==3)) //给小学生的题,减和除运算保证大减小和大除以小(额外增加的需求,并非原题中提及)  
        {  
            d=a;  
            a=b;  
            b=d;  
        }  
        if(c==3)//对于除法,调整被除数,以保证能整除(额外增加的需求,并非原题中提及)  
            a=(a/b)*b;  
        switch(c)  
        {  
        case 0:  
            d=a+b;  
            cout<<a<<"+"<<b<<"=";  
            break;  
        case 1:  
      
            d=a-b;  
            cout<<a<<"—"<<b<<"=";  
            break;  
        case 2:  
            d=a*b;  
            cout<<a<<"×"<<b<<"=";  
            break;  
        case 3:  
            d=a/b;  
            cout<<a<<"÷"<<b<<"=";  
            break;  
        }  
        cin>>t;  
        if(t==d)  
            cout<<"    right! ";  
        else  
            cout<<"    wrong! ";  
        return t==d;  
    }  
关于随机数的两个函数是在cstdlib中提供的,所以要通过#include予以包含。
随机数加1,这样a和b的范围是1-100,而不是0-99。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值