zoukankan      html  css  js  c++  java
  • 个人作业1——四则运算题目生成程序(基于控制台)

    码市地址:https://coding.net/u/keyi123/p/kekeke/git/blob/master/四则运算.cpp
    https://coding.net/u/keyi123/p/kekeke/git/blob/master/四则运算.exe

    a.需求分析

    1. 除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:1/6 + 1/8 = 7/24

    2. 运算符为 +, −, ×, ÷

    3. 并且要求能处理用户的输入,并判断对错,打分统计正确率

    4. 要求能处理用户输入的真分数, 如 1/2, 5/12 等

    5. 使用 -n 参数控制生成题目的个数,例如执行下面命令将生成10个题目

    b.功能设计

    1. 自动生成的随机数

    2. 能够进行整数和真分数的四则运算

    3. 随机生成运算符号

    4. 判断对错,得出正确答案,打分统计正确率以及计算得分

    c.设计实现

     本程序是通过c++来实现的,一共有三个方法和一个主函数,gys(int x,int y)用于求最大公约数函数,gbs(int x,int y)用于求最小公倍数函数,yuefen(int &fz,int &fm)用于定义约分函数,主函数中能够生成随机数,整数和真分数的四则运算,以及判断对错,得出正确答案,打分统计正确率以及计算得分。
    

    d.代码说明

    gys(int x,int y)用于求最大公约数函数

    int gys(int x,int y)    //定义求最大公约数函数
    {
        return y?gys(y,x%y):x;  //递归调用gys,返回最大公约数
    }
    

    gbs(int x,int y)用于求最小公倍数函数

    int gbs(int x,int y)    //定义求最小公倍数函数
    {
        return x/gys(x,y)*y;
    }
    

    yuefen(int &fz,int &fm)用于定义约分函数

    void yuefen(int &fz,int &fm)          //定义约分函数
    {
        int s=gys(fz,fm);
        fz=fz/s;
        fm=fm/s;
    }
    

    main函数的主要部分
    (1)整数运算

    		for(i=0;i<num;i++)
    		{
    			srand((int)time(0));
    			int a=rand()%100+1;   //生成1~99范围内随机数
    			int b=rand()%100+1;
    			int c=rand()%3;     //生成0~3范围内随机数。0表示加法,1表示减法,2表示乘法,3表示除法 
    			if(c==0)
    			{
    				result1=a+b;
    				printf("%d+%d=",a,b);
    			}
    				if(c==1)
    			{
    				while((a-b)<0){
    				int a=rand()%100+1;   //生成1~99范围内随机数
    		        int b=rand()%100+1;
    				}
    				result1=a-b;
    				printf("%d-%d=",a,b);
    			}
    				if(c==2)
    			{
    				result1=a*b;
    				printf("%d*%d=",a,b);
    			}
    				if(c==3)
    			{
    				result1=a/b;
    				printf("%d÷%d=",a,b);
    			}
    			cin>>answer1;        
    			if(answer1==result1)
    			{
    				printf("correct
    "); 
    				co=co+1;             //若正确,co+1 
    			}
    			else 
    			{
    				printf("wrong
    ");
    

    (2)真分数运算

    		
    		for(i=0;i<num;i++)
    		{
    			srand((int)time(0));
    			int a=rand()%100+1;   //生成1~99范围内随机数
    			int b=rand()%100+1;
    			int c=rand()%100+1;
    			int d=rand()%100+1;
    			int e=rand()%3;     //生成0~3范围内随机数。0表示加法,1表示减法,2表示乘法,3表示除法 
    			if(a<b&&c<d) 
    			{
    				if(e==0)
    			  	{
    			  		
    					int u1,u2,v=gbs(b,d);
    	   				u1=(v/b*a);
    	   				//cout<<u1<<endl;
    	   				u2=v/d*c;
    	    			fz1=u1+u2;
    	    			fm1=v;
    	    			yuefen(fz1,fm1);
    	    			printf("%d/%d+%d/%d=",a,b,c,d);
    	    			
    				
    				}
    				if(e==1)
    				{
    					while((a*d-b*c)<0){
    					int a=rand()%100+1;   //生成1~99范围内随机数
    		            int b=rand()%100+1;
    			        int c=rand()%100+1;
    			        int d=rand()%100+1;	
    					}
    					int u1,u2,v=gbs(b,d);
    	    			u1=v/b*a;
    	    			u2=v/d*c;
    	    			fz1=u1-u2;
    	    			fm1=v;
    	    			yuefen(fz1,fm1);
    	    			printf("%d/%d-%d/%d=",a,b,c,d);
    	    			
    		
    				}
    				if(e==2)
    				{
    	    			fz1=a*c;
    	    			fm1=b*d;
    	   				yuefen(fz1,fm1);
    	    			printf("(%d/%d)*(%d/%d)=",a,b,c,d);
    	    		
    				}
    				if(e==3)
    				{
    	    			fz1=a*d;
    	    			fm1=b*c;
    	   				yuefen(fz1,fm1);	
    	   				printf("(%d/%d)÷(%d/%d)=",a,b,c,d);
    	   				
    				}
    				cin>>answer2;  //输入答案
    				float result2=(float)fz1/(float)fm1;
    				cout<<"正确的答案为:"<<result2<<endl;
    				if (abs(answer2-result2)<0.000001)         
    				{
    					printf("correct
    "); 
    					co=co+1;             //若正确,co+1
    				}
    				else printf("wrong
    ");
    			}
    			else i=i-1;
    		}
    		zhengquelv=(co*1.0)/num;        //计算正确率 
    		printf("
    正确率为:%f",zhengquelv);
    		printf("得分为:%f",zhengquelv*100);
    

    e.测试运行
    (1)整数运算

    (2)真分数运算

    PSP表:

    e.小结
    1、第一次做软件工程的作业,程序语言掌握的不是很熟练花费了一些时间,通过百度和请教同学,将循环、递归、浮点型比较等慢慢掌握熟练。
    2、随机数写在循环里,导致程序运行较慢,以后要注意。
    3、markdown的排版、、、写进去,没有注意中英文,导致无法自动排版,以后要多注意中英文的变换。
    4、日后要多熟悉程序语言,也要多向同学们学习。

  • 相关阅读:
    echarts使用
    Nutch插件系统
    linux命令总结
    linux命令行快捷键
    每日一笔
    Hadoop参数调优
    rsync用于同步目录
    hadoop遇到的问题(汇总)
    linux历史命令
    hadoop 编译代码及运行
  • 原文地址:https://www.cnblogs.com/keyi123/p/6516951.html
Copyright © 2011-2022 走看看