四则运算设计03

题目要求

1学生写的程序必须能判断用户的输入答案是否正确

2程序必须能处理四则运算的混合算式

1 设计思路:

产生随机数以及题目中产生的数的个数

通过if判断是否符合条件

通过for循环来实现产生所需要的算式的个数

在具体实现过程中,通过对比用户答案和程序运行答案来判断答案的对错

 

2源程序代码:

 

#include<iostream>
#include<ctime>
#include<cstdlib>
using namespace std;
void main()
{
    int ProNum;  
    int fanwei;  
    int fushu;  
    int yushu;  
    int chengchu;  
    int kuohao;   
    
    cout<<"请输入你想要出的题目的个数(请输入整数)"<<endl;  
    cin>>ProNum;      
    
    cout<<"请输入取值范围的最小值(0~100)"<<endl;  
    cin>>fanwei;  
    
    cout<<"请选择是否有负数选择1表示有选择0表示没有(请按要求选择1或0)"<<endl; 
    cin>>fushu; 
    
    cout<<"请选择是否有余数 3表示有选择4表示没有(请按要求选择3或4)"<<endl;  
    cin>>yushu;  
    
    cout<<"请选择是否有乘除 5表示有选择6表示没有(请按要求选择5或6)"<<endl;  
    cin>>chengchu;  
    
    cout<<"请选择是否有括号 7表示有选择8表示没有(请按要求选择7或8)"<<endl;  
    cin>>kuohao; 
    
    
    int num[10];
    int MyAnswer,answer;
    int RiNum=0;
    int FaNum=0;
    int zff=0, fhnum=0;    
    char fs[20];   
    char fuhao[20];    
    int weizhi1;   
    int weizhi2;   
    
    
    srand(time(0));
    for(int i=0;i<ProNum;i++)
    {
        int shuzinum=rand()%4+2;   
        for(int j=0;j<=shuzinum;j++)   
        {
            num[j]=rand()%100+1;    
            for(;;)      
            {
                if(num[j]<fanwei)
                    num[j]=rand()%100+1;
                else
                    break;
            }
            
            
            if(fushu==1){
                zff=rand()%2;
            if(zff==0)   
                fs[j]='-';
            if(fs[j]=='-')
                num[j]=num[j]*(-1);
            if(zff==1)
                fs[j]='+';
            }
            if(fushu==0){
               fs[j]='+';
            }

            
}
        
        for(int ii=0;ii<shuzinum;ii++)    
        {
            if(chengchu==5)  
            {
                fhnum=rand()%4;
                if(fhnum==0)
                    fuhao[ii]='+';
                if(fhnum==1)
                    fuhao[ii]='-';
                if(fhnum==2)
                    fuhao[ii]='*';
                if(fhnum==3)
                {
                    fuhao[ii]='/';
                    if(yushu==3)   
                    {
                        weizhi1=ii;   
                        for(;;)
                        {
                            if(num[ii]%num[ii+1]!=0)
                                break;
                            else 
                            {
                                num[ii]=rand()%100+1;
                                num[ii+1]=rand()%100+1;
                            }
                        }
                    }
                    if(yushu==4)     
                    {
                        weizhi1=ii;   
                        for(;;)
                        {
                            if(num[ii]%num[ii+1]!=0)
                            {
                                num[ii]=rand()%100+1;
                                num[ii+1]=rand()%100+1;
                            }
                            else 
                                break;
                        }
                    }
                }
            }
            if(chengchu==6)   
            {
                fhnum=rand()%2;
                if(fhnum==0)
                    fuhao[ii]='+';
                if(fhnum==1)
                    fuhao[ii]='-';
            }
        }
        
        cout<<i+1<<": "<<num[0];
        
        if(shuzinum==2)   
            kuohao=8;
        if(kuohao==7)  
        {
            weizhi2 =rand()%(shuzinum-2)+1;    
            for(int i=0;i<weizhi2 -1;i++)
            {
                cout<<fuhao[i]<<num[i+1];
            }
            cout<<fuhao[weizhi2 -1]<<"("<<num[weizhi2]<<fuhao[weizhi2]<<num[weizhi2 +1]<<")";
            for(int i=weizhi2 +1;i<shuzinum;i++)
            {
                cout<<fuhao[i]<<num[i+1];
            }
            answer=num[0];
            
            if(fuhao[weizhi2]=='+')
            {
                num[weizhi2]=num[weizhi2]+num[weizhi2 +1];
                num[weizhi2 +1]=0;
            }
            if(fuhao[weizhi2]=='-')
            {
                num[weizhi2]=num[weizhi2]-num[weizhi2+1];
                num[weizhi2+1]=0;
            }
            if(fuhao[weizhi2]=='*')
            {
                num[weizhi2]=num[weizhi2]*num[weizhi2];
                num[weizhi2+1]=1;
            }
            if(fuhao[weizhi2]=='/')
            {
                num[weizhi2]=num[weizhi2]/num[weizhi2+1];
                num[weizhi2+1]=1;
            }
        
            for(int i=0;i<shuzinum;i++)
            {
                if(fuhao[i]=='*')
                {
                    num[i]=num[i]*num[i+1];
                    num[i+1]=1;
                }
                if(fuhao[i]=='/')
                {
                    num[i]=num[i]/num[i+1];
                    num[i+1]=1;
                }
            }
            
            for(int i=0;i<shuzinum;i++)
            {
                if(fuhao[i]=='+')
                    answer=answer+num[i+1];
                if(fuhao[i]=='-')
                    answer=answer-num[i+1];
                if(fuhao[i]=='*')
                    answer=answer*num[i+1];
                if(fuhao[i]=='/')
                    answer=answer/num[i+1];
            }
        }
        if(kuohao==8)    
        {
            for(int i=1;i<shuzinum;i++)
            {
                cout<<fuhao[i]<<num[i+1];
            }
            answer=num[0];
            
            for(int i=0;i<shuzinum;i++)
            {
                if(fuhao[i]=='*')
                {
                    num[i]=num[i]*num[i+1];
                    num[i+1]=1;
                }
                if(fuhao[i]=='/')
                {
                    num[i]=num[i]/num[i+1];
                    num[i+1]=1;
                }
            }
            for(int i=0;i<shuzinum;i++)
            {
                if(fuhao[i]=='+')
                    answer=answer+num[i+1];
                if(fuhao[i]=='-')
                    answer=answer-num[i+1];
                if(fuhao[i]=='*')
                    answer=answer* num[i+1];
                if(fuhao[i]=='/')
                    answer=answer/num[i+1];
            }
        }
        
        cout<<"="<<endl;
        cout<<"请输入你的计算结果"<<endl;
        cin>>MyAnswer;
        
        if(answer-MyAnswer<0.00001)
        {
            RiNum++;
            cout<<"恭喜你算对了"<<endl;
        }
        else
        {
            FaNum++;
            cout<<"对不起算错了"<<endl;
        }
    }
    cout<<"算对了:"<<RiNum<<""<<"算错了:"<<FaNum<<""<<endl;
}
3运行结果截图


4实验总结:通过该实验,我明白了同伴的重要性。两个人的思维碰撞确实比一个人的苦思冥想要好的多。这次合作让我想到了团体的重要性,使我明白了合作的关键。


 


 


5时间记录日志:


学生:孙梅                        日期:3/26


教师:  王建民                    课程:软件工程概论


日期

开始时间

结束时间

中段时间(分钟)

净时间

(分钟)

活动

备注

C

U

3/21

8:00

9:50

10

100

上课

课间休息

 

 

3/22

14:00

15:00

5

55

看《构建之法》

上厕所

 

 

 

18:00

20:00

20

100

写程序

休息

 

 

3/23

16:00

16:40

0

40

写程序

 

 

 

 

19:00

20:00

0

60

写阅读笔记

 

 

 

3/24

19:00

21:30

30

120

编写程序

休息

 

 

3/25

15:00

15:30

0

30

写进度条

 

 

 

3/26

9:00

11:30

0

150

写程序

 

 

 


 


结对照片:



posted @ 2016-03-26 17:17  sunmei  阅读(154)  评论(0编辑  收藏  举报