zoukankan      html  css  js  c++  java
  • 四则运算


    博客班级 AHPU软件工程
    作业要求 实现小学四则运算
    作业目标
    学号 3180701126

    作业目标

    写一个能自动生成小学四则运算题目的程序,然后在此基础上扩展:

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

    2)程序要求能处理用户的输入,判断对错,累积分数

    3)程序支持可以由用户自行选择加、减、乘、除运算

    4)使用-n参数控制生成题目的个数,例如Myapp.exe -n 10,将生成10个题目

    加法

    //整数的加法
    void add1()
    {
    int m,n,l;
    m=rand()%100;
    n=rand()%100;
    printf("请回答:
    		 %d + %d = ",m,n);
    scanf("%d",&l);
    if(m+n==l)
    {
     printf("回答正确!
    ");
     right++;
    }
    else
    {
     printf("回答错误!
    ");
     wrong++;
    }
    }
    
    //最大公约数
    int gcd(int a,int b)
    
    { 
        if(a%b==0)
        return b;
            else;
            return gcd(b,a%b);
    } 
    
    //真分数的加法
    void add2() 
    {
         int m1=0, z1=0, m2=0, z2=0;
         z1=1+rand()%9;
         m1=1+rand()%9+z1;
         z2=1+rand()%9;
         m2=1+rand()%9+z2;
         printf("请回答:
    		 %d/%d + %d/%d = ",z1,m1,z2,m2);
         
         int a,b;
         a=z1*m2+z2*m1;
         b=m1*m2;
         int i=gcd(a,b);
         a/=i;
         b/=i; 
         char answer[10],a1[12],a2[12];
         itoa(a,a1,10);
         itoa(b,a2,10);
         strcat(a1,"/");
         strcat(a1,a2);
         scanf("%s",&answer);
         if(strcmp(a1,answer)==0)
         {printf("回答正确!
    ");
                      right++;
         }
       else
       {
        printf("回答错误!
    ");
        wrong++;
       }
    }
    

    减法

    //整数的减法 
    void minu1()
    {
     int m,n,l;
     m=rand()%100;
     n=rand()%100;
     printf("请回答:
    		 %d - %d = ",m,n);
     scanf("%d",&l);
     if(m-n==l)
     {
      printf("回答正确!
    ");
      right++;
     }
     else
     {
      printf("回答错误!
    ");
      wrong++;
     }
    }
    
    //真分数的减法
    void minu2()
    {
          int m1=0, z1=0, m2=0, z2=0;
          z1=1+rand()%9;
          m1=1+rand()%9+z1;
          z2=1+rand()%9;
          m2=1+rand()%9+z2;
          printf("请回答:
    		 %d/%d + %d/%d = ",z1,m1,z2,m2);
          int a,b;
          a=z1*m2-z2*m1;
          b=m1*m2;
          int i=gcd(a,b);
    	  a/=i;
    	  b/=i; 
    	  char answer[10],a1[12],a2[12];
    	  itoa(a,a1,10);
    	  itoa(b,a2,10);
    	  strcat(a1,"/");
    	  strcat(a1,a2);
          scanf("%s",&answer);
          if(strcmp(a1,answer)==0)
          {printf("回答正确!
    ");
                       right++;
    	  }
        else
        {
         printf("回答错误!
    ");
         wrong++;
        }
    }
    

    乘法

    //整数的乘法 
    void mul1()
    {
     int m,n,l;
     m=rand()%100;
     n=rand()%100;
     printf("请回答:
    		 %d * %d = ",m,n);
     scanf("%d",&l);
     if(m*n==l)
     {
      printf("回答正确!
    ");
      right++;
     }
     else
     {
      printf("回答错误!
    ");
      wrong++;
     }
    }
    
    //真分数的乘法
    void mul2() 
    {
          int m1=0, z1=0, m2=0, z2=0;
          z1=1+rand()%9;
          m1=1+rand()%9+z1;
          z2=1+rand()%9;
          m2=1+rand()%9+z2;
          printf("请回答:
    		 %d/%d + %d/%d = ",z1,m1,z2,m2);
          int a,b;
          a=z1*z2;
          b=m1*m2;
          int i=gcd(a,b);
    	  a/=i;
    	  b/=i; 
    	  char answer[10],a1[12],a2[12];
    	  itoa(a,a1,10);
    	  itoa(b,a2,10);
    	  strcat(a1,"/");
    	  strcat(a1,a2);
          scanf("%s",&answer);
          if(strcmp(a1,answer)==0)
          {printf("回答正确!
    ");
                       right++;
    	  }
        else
        {
         printf("回答错误!
    ");
         wrong++;
        }
    }
    

    除法

    //整数的除法 
    void div1()
    {
     int m,n,l;
     m=rand()%100;
     n=rand()%100;
     printf("请回答:
    		 %d / %d = ",m,n);
     scanf("%d",&l);
     if(m/n==l)
     {
      printf("回答正确!
    ");
      right++;
     }
     else
     {
      printf("回答错误!
    ");
      wrong++;
     }
    }
    
    //真分数的除法
    void div2()
    {
          int m1=0, z1=0, m2=0, z2=0;
          z1=1+rand()%9;
          m1=1+rand()%9+z1;
          z2=1+rand()%9;
          m2=1+rand()%9+z2;
          printf("请回答:
    		 %d/%d + %d/%d = ",z1,m1,z2,m2);
          int a,b;
          a=z1*m2;
          b=m1*z2;
          int i=gcd(a,b);
    	  a/=i;
    	  b/=i; 
    	  char answer[10],a1[12],a2[12];
    	  itoa(a,a1,10);
    	  itoa(b,a2,10);
    	  strcat(a1,"/");
    	  strcat(a1,a2);
          scanf("%s",&answer);
          if(strcmp(a1,answer)==0)
          {printf("回答正确!
    ");
                       right++;
    	  }
        else
        {
         printf("回答错误!
    ");
         wrong++;
        }
    }
    

    选择运算方式菜单

    //整数运算 
    int menu1()
    {
     int choise;
     int con=0;
     printf("
    			*****整数运算*****
    
    ");
     while(1)
     {
      printf("请选择:
    ");
      printf("			  加法运算(请输入1)
    ");
      printf("			  减法运算(请输入2)
    ");
      printf("			  乘法运算(请输入3)
    ");
      printf("			  除法运算(请输入4)
    ");
      printf("			  退出运算(请输入5)
    ");
      if(con==0)
       scanf("%d",&choise);
      switch(choise)
      {
      case 1:
       add1();
       break;
      case 2:
       minu1();
       break;
      case 3:
       mul1();
       break;
      case 4:
       div1();
       break;
      case 5:
       break;
      }
      printf("
    			继续运算?(请输入1)
    ");
      printf("
    			重新选择?(请输入2)
    ");
      printf("
    			退出运算?(请输入3)
    ");
      scanf("%d",&con);
      if(con==1)
       con=1;
      else if(con==2)
       con=0;
      else if(con==3)
       break;
      else
       printf("你输入的指令有误!请重新输入!
    ");
     }
     printf("您总共完成了 %d 道题
    正确 %d 道
    错误 %d 道
    ",right+wrong,right,wrong);
    }
    //分数运算 
    int menu2()
    {
     int choise;
     int con=0;
     printf("
    			*****分数运算*****
    
    ");
     while(1)
     {
      printf("请选择:
    ");
      printf("			  加法运算(请输入1)
    ");
      printf("			  减法运算(请输入2)
    ");
      printf("			  乘法运算(请输入3)
    ");
      printf("			  除法运算(请输入4)
    ");
      printf("			  退出运算(请输入5)
    ");
      if(con==0)
       scanf("%d",&choise);
      switch(choise)
      {
      case 1:
       add2();
       break;
      case 2:
       minu2();
       break;
      case 3:
       mul2();
       break;
      case 4:
       div2();
       break;
      case 5:
       break;
      }
      printf("
    			继续运算?(请输入1)
    ");
      printf("
    			重新选择?(请输入2)
    ");
      printf("
    			退出运算?(请输入3)
    ");
      scanf("%d",&con);
      if(con==1)
       con=1;
      else if(con==2)
       con=0;
      else if(con==3)
       break;
      else
       printf("你输入的指令有误!请重新输入!
    ");
     }
     printf("您总共完成了 %d 道题
    正确 %d 道
    错误 %d 道
    ",right+wrong,right,wrong);
    }
    int main(){
    	
      start:
      	system("color f2");//屏幕颜色设定
    	system("mode con:cols=80 lines=35");
      printf("			  整数运算(请输入1)
    ");
      printf("			  分数运算(请输入2)
    ");
      printf("			 请选择:");
      int ch;
      while(1)
      {
      	 scanf("%d",&ch);
      	switch(ch){
      		case 1: menu1();break;
      		case 2: menu2();break;
      		default:
      			printf("			输入错误!请重新输入");
    			goto start; 
        system("pause");
    	system("cls");
    	  }
       } 
       
    }
    

    运行截图

    主界面


    运行界面


    作业小结

    psp表格

    psp2.1 任务内容 计划完成需要的时间(min) 实际完成需要的时间(min)
    Planning 计划 120 10
    Development 开发 110 150
    Analysis 需求分析(包括学习新技术) 10 10
    Design Spec 生成设计文档 30 40
    Design Review 设计复审 5 10
    Coding Standard 代码规范 5 5
    Design 具体设计 10 12
    Coding 具体编码 40 30
    Code Review 代码复审 5 7
    Test 测试(自我测试,修改代码,提交修改) 10 15
    Reporting 报告 9 6
    Test Report 测试报告 5 5
    Size Measurement 计算工作量 3 1
    Postmortem & Process Improvement Plan 事后总结,并提出过程改进计划 5 5
  • 相关阅读:
    Centos7.2升级内核至3.10.0-957【转】
    部署一套完整的Kubernetes高可用集群(上)【转】
    Nginx配置中一个不起眼字符"/"的巨大作用,失之毫厘谬以千里【转】
    使用vmware搭建k8s集群【转】
    nginx的request body日志格式配置
    nginx漏洞修复:SSL/TLS 服务器瞬时 Diffie-Hellman 公共密钥过弱【原理扫描】【转】
    nginx:[warn] the "ssl" directive is deprecated, use the "listen ... ssl" directive instead
    linux系统删除分区
    Linux用户锁定、解锁及锁定查看
    innobackupex远程备份【转】
  • 原文地址:https://www.cnblogs.com/wangyifo/p/13941386.html
Copyright © 2011-2022 走看看