zoukankan      html  css  js  c++  java
  • 四则运算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道题,主要是体现功能

  • 相关阅读:
    纹理mag filter不能取GL_XXX_MIPMAP_XXXX
    (转)No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=arm64, VA 解决办法
    轻松制作儿童趣味算术软件
    批处理设置IP地址
    安卓手机文件管理器简单横向评比
    Linux基础和网络管理上机试题
    值得收藏的批处理程序
    王垠:完全用Linux工作
    XINU安装程序.exe一键配置好XINU实验环境
    很全面的WinRAR实用技巧系列
  • 原文地址:https://www.cnblogs.com/huazongzong/p/4357676.html
Copyright © 2011-2022 走看看