• 四则运算3


    一、设计思路

      第三版程序在第二版上增加了用户填写答案和自动批改答案功能,并且还能显示一共答对了多少题。

      

    二、程序源代码

    #include <stdlib.h>
    #include <iostream.h>
    #include <conio.h>
    #include <time.h>
     using namespace std;
    void Display1(int,int,int,int,int,int);
    void Display2(int [],int,int,int);
    int main()
    {
        int a = 0;
        int b = 0;
        int mode = 0;//0:加  1:减   2:乘 3:除 
        int i = 0; 
        int result = 0;
        int score = 0;
        int answer = 0;
        int c[7]={0,40,1,100,1,1,4};//是否定制,出题数量、是否有乘除、数值上限、数值下限,是否有余数,每行个数。
        srand((unsigned)time( NULL ) ); //初始化随机数发生器,使得每次运行生成的随机数不同
        printf("---------------------------------------------------------------------------
    ");
    	printf("                         欢迎来到二柱子出题系统!                          
    ");
        printf("               本系统默认生成10道100以内数字的四则运算题目,每行4道        
    ");
    	printf("                        是否定制?是输入1,否输入0:");
        cin>>c[0];
        if(c[0]==0)
    	{   
    	printf("----------------------------题目打印如下------------------------------------
    "); 
            Display1(a,b,mode,result,score,answer) ;
        }   
    	else 
    	{
        cout<<"                             请输入出题数量:";
    	cin>>c[1];
    	cout<<"                    是否含乘除?是输入1,否输入0:";
    	cin>>c[2];
    	cout<<"                              数值上限:"; 
    	cin>>c[3];
    	cout<<"                              数值下限:";
    	cin>>c[4]; 
    	cout<<"                    是否含余数?是输入1,否输入0:";
    	cin>>c[5]; 
    	cout<<"                             每行题目数:";
    	cin>>c[6]; 
    	printf("----------------------------题目打印如下------------------------------------
    "); 
        Display2(c,a,b,mode);	
        } 
    	printf("--------------------题目打印完毕,谢谢使用----------------------------------
    "); 
        cout<<endl;
    	return 0;   
    }
     void Display1(int a,int b,int mode,int result,int score,int answer)
    	{
    	 for(int i=0;i<10;i++) //做三十题
            {  
            a = rand() % 100; //生成一个0~99之间的随机数
            b = rand() % 100;  //生成一个0~99之间的随机数
            mode = rand() % 4; //生成一个0~3之间的随机数,代表运算符
            printf("<%d>%d",i+1, a);   //打印算式
            switch(mode) //确定运算符
            {  
            case 0:   
                printf("+%d =  ", b ); 
    			result= a + b;   //选择了+运算的正确答案  
                break;  
            case 1:    
                printf("-%d =  ", b );
    		    result= a - b;   //选择了-运算的正确答案   
                break;  
            case 2:   
                printf("*%d =  ", b ); 
    			 result= a * b;   //选择了*运算的正确答案  
                break;  
            case 3:   
                printf("/%d =  ", b );
    			result= a / b;   //选择了/运算的正确答案   
                break;  
            default:  
                printf("somethingis wrong!
    ");   
                break;       
            } 
             scanf("%d", &answer); //输入答案
            if(answer == result) //与正确答案一致
            {  
                score+= 10;  //加分
                printf("Right
    "); 
            } 
            else 
            {  
                printf("Wrong,the right answer is:%d
    ",result); //错开
            }      
    		}
    		 printf("Yourscore is: %d
    
    
    ", score);//显示十道题的得分	
    	} 
    	 void Display2(int c[],int a,int b,int mode)
    	{
    		  for(int i=0;i<c[1];i++) //定制题数 
                {  
                  a = rand() % (c[3]-c[4]+1)+c[4]; //生成限定的随机数
                  b = rand() % (c[3]-c[4]+1)+c[4];  //生成限定的随机数
                   if(c[2]==1)
    			   {      	
                    mode = rand() % 4; //生成一个0~3之间的随机数,代表运算符          
                 switch(mode) //确定运算符
                 {  
             case 0:   
                printf("%d+%d =  ",a, b );   
                break;  
             case 1:    
                printf("%d-%d =  ",a, b );   
                break;  
              case 2:   
                printf("%d*%d =  ",a, b );   
                break;  
              case 3: 
    		if(c[5] == 1)                 //判断选择是否有余数,如果能有余数
             {
    		 printf("%d/%d =  ",a, b ); 
             }
             else if(a%b!=0)                         //如果不能有余数
               {
                       i = i-1;
               }
    		else 
    		{
    		 printf("%d/%d =  ",a, b ); 
             }       
              break;  
            default:  
                printf("somethingis wrong!
    ");   
                break;       
                }
                if((i+1)%c[6]== 0)              //判断是否换行
             {
                  printf("
    ");            
             }
    		 else
    		 	{
     					
                   for(int j = 0;j<3;j++)
                   {
                         printf(" ");
                   }                               
    		    }
          } 
            else{
            	mode = rand() % 2; //生成一个0~1之间的随机数,代表运算符
            	 printf("%d", a);   //打印算式
            switch(mode) //确定运算符
            {  
            case 0:   
                printf("+%d =  
    ", b );   
                break;  
            case 1:    
                printf("-%d =  
    ", b );   
                break; 
    			default:  
                printf("somethingis wrong!
    ");   
                break;       
            } 
            if(i%c[6]== 0)              //判断是否换行
             {
                  printf("
    ");            
             }
    		 else
    		 	{
     					
                   for(int j = 0;j<3;j++)
                   {
                         printf(" ");
                   }                               
    		    }	
            }
    		} 	
    	} 
    

      运行截图:

    五、实验体会总结

      这次的程序可以说在第二个的基础上稍加改动,我对第一个函数修改了部分参数,输出10道题,主要是体现功能

  • 相关阅读:
    敏捷开发模式下的质量管理
    杨学明老师软件测试管理公开课将于2012年11月16日~17日在北京举办!
    杨学明老师为南京某机电企业成功举办两天IPD DRY RUN !
    软件测试管理公开课在北京成功举办!
    2012年12月4至6日,杨学明老师为中国科学院某研究所举办两天的软件项目管理和测试管理培训!
    杨老师“软件测试管理”公开课在北京成功举办!
    软件测试为什么失败?
    如何实现高效的产品测试管理杨学明
    杨学明老师软件测试管理公开课将于2012年9月21~22日在深圳举办!
    2011年9月23《软件测试管理》公开课,接受报名!
  • 原文地址:https://www.cnblogs.com/huazongzong/p/4357676.html
Copyright © 2020-2023  润新知