结对编程——300道小学四则运算

发布时间 2023-04-17 20:57:42作者: hskno1

本次结对编程作业由我和2152620同学使用c++语言共同完成。

代码如下:

#include <iomanip>
#include <iostream>
#include <ctime>
#include <cstdlib>

using namespace std;
int num1[300];
int num2[300];
int op[300];
int answer[300];
int real[300];

void srand(unsigned int seed);
int getRand(int min, int max);

void get_question(int num1[],int num2[],int op[],int real[])     //数组随机填充函数 
{
    for(int i = 1;i<=300;i++){
        op[i]=getRand(0,3);                                      //随机生成运算符 
    } 
    

        for(int j = 1;j<=300;j++){
        if (op[j] == 0){
            real[j]=getRand(0,100);
            num2[j]=getRand(0,real[j]);
            num1[j]=real[j]-num2[j];
            
            
        }
        else if(op[j] == 1){
            num1[j]=getRand(0,100);
            num2[j]=getRand(0,num1[j]);
            real[j]=num1[j]-num2[j];
            
            
        }
        else if(op[j] == 2) {
            num1[j]=getRand(0,10);
            num2[j]=getRand(0,10);
            real[j]=num1[j]*num2[j];
            
        }
        else{
            real[j]=getRand(0,10);
            num2[j]=getRand(1,10);
            num1[j]=real[j]*num2[j];
            
        }    
       } 
 } 
 
 int getRand(int min, int max) {                                       //随机数生成函数 
    return ( rand() % (max - min + 1) ) + min ;
}

void display_question(int num1[],int num2[],int op[],int real[]){      //题目输出函数 

        for(int i = 1;i<=300;i++){
            switch(op[i]){
                case 0:
                   
                    cout<<setw(3)<<i<<". "<<setw(3)<<num1[i]<<" +"<<setw(3)<<num2[i]<<'='<<setw(8)<<"   ";
    
                    break;
                case 1:
                    
                    cout<<setw(3)<<i<<". "<<setw(3)<<num1[i]<<" -"<<setw(3)<<num2[i]<<'='<<setw(8)<<"   ";
                    
                    break;
                case 2:
                    
                    cout<<setw(3)<<i<<". "<<setw(3)<<num1[i]<<" *"<<setw(3)<<num2[i]<<'='<<setw(8)<<" ";
                    
                    break;
                case 3:
                    
                    cout<<setw(3)<<i<<". "<<setw(3)<<num1[i]<<" /"<<setw(3)<<num2[i]<<'='<<setw(8)<<" ";
                    
                    break;
            }
            if (i%5==0) cout<<endl;
    } 
    

        
}


void check_answer(int answer,int real[],int right){                        //答案检查函数 
    for(int i = 1;i<=300;i++){                                             //为方便演示可把此处的i改为小数字 
        cout<<"请输入第"<<i<<"题的答案"<<endl;
        cin>>answer; 
        if(answer==real[i]){
            right++;
            cout<<"正确!"<<endl; 
        }
        else 
        cout<<"错误!"<<endl; 
    }
    right=right/3;
    cout<<"答题结束,你的分数是:"<<right<<endl; 

}

int main (){
    int answer;
    int right=0;
    int i=0;
    srand(time(NULL));
    while(i==0){
    get_question( num1,num2, op, real);
    display_question( num1,num2, op, real);
    check_answer(answer, real,right);
    cout<<"是否再来一组?(输入0)"<<endl;
    cout<<"按任意键退出。。。"<<endl;
    cin>>i;

    }
    
    return 0;
}

运行结果:

心得体会:

       由于题目要求的是100以内的四则运算,所以要确保结果在0-100以内。此外,我们还通过限制随机数生成条件来避免除数为零、减数大于被减数等情况。在运行的过程中我们发现,如果在300道题答完之前退出,之后再运行生成的300道题跟之前一样。于是,我们加入了srand函数来对随机数进行初始化。通过这次的作业,我们意识到团队协作对于软件开发的重要性。具有团队意识,对于我们未来进入工作岗位也是十分重要的。