首页 > 技术文章 > 个人作业---四则运算生成程序

jsj182zfj 2020-11-07 09:10 原文

| 班级 |


| ---- | ---- | ---- |
| 作业要求 |
目录

    | 作业目标 | 学会使用markdown的使用方法 |
    | 学号 | 3180701226 |
    目录

      题目要求

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

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

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

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

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


      代码说明

      加法

      void add() //整数的加法
      {
            int a,b,c;
            a=rand()%100; //随机生成
            b=rand()%100;
            printf("请回答:\n\t\t %d + %d = ",a,b);
            scanf("%d",&c);
            if(a+b==c)
            {
                  printf("回答正确!\n");
                  right++;
            }
            else
            {
                  printf("回答错误!\n");
            wrong++;
            }
      }
      
      void Add() //真分数的加法
      {
            int zhenfenshu1_m=0, zhenfenshu1_z=0, zhenfenshu2_m=0, zhenfenshu2_z=0;
            int a,b,c;
            zhenfenshu1_m=0+rand()%100;
            zhenfenshu1_z=0+rand()%100;
            //判断产生的真分数正确性
            while(zhenfenshu1_m<zhenfenshu1_z)
            {
                zhenfenshu1_m=0+rand()%100;
                zhenfenshu1_z=0+rand()%100;    
            }
      
            zhenfenshu2_m=0+rand()%100;
            zhenfenshu2_z=0+rand()%100;
      

      减法

      void minu() //整数减法
      {
            int a,b,c;
            a=rand()%100;
            b=rand()%100;
            printf("请回答:\n\t\t %d - %d = ",a,b);
            scanf("%d",&c);
            if(a-b==c)
            {
                  printf("回答正确!\n");
                  right++;
            }
            else
            {
            printf("回答错误!\n");
            wrong++;
            }
      }
      void Minu() //真分数的减法
      {
            int zhenfenshu1_m=0, zhenfenshu1_z=0, zhenfenshu2_m=0, zhenfenshu2_z=0;
            int a,b,c;
            zhenfenshu1_m=0+rand()%100;
            zhenfenshu1_z=0+rand()%100;
            //判断产生的真分数正确性
            while(zhenfenshu1_m<zhenfenshu1_z)
            {
                zhenfenshu1_m=0+rand()%100;
                zhenfenshu1_z=0+rand()%100;    
            }
      
            zhenfenshu2_m=0+rand()%100;
            zhenfenshu2_z=0+rand()%100;
      

      乘法

      void mul() //整数乘法
      {
            int a,b,c;
            a=rand()%100;
            b=rand()%100;
            printf("请回答:\n\t\t %d * %d = ",a,b);
            scanf("%d",&c);
            if(a*b==c)
            {
                  printf("回答正确!\n");
                  right++;
            }
            else
            {
                  printf("回答错误!\n");
                  wrong++;
            }
      }
      void Mul() //真分数的乘法
      {
            int zhenfenshu1_m=0, zhenfenshu1_z=0, zhenfenshu2_m=0, zhenfenshu2_z=0;
            int a,b,c;
            zhenfenshu1_m=0+rand()%100;
            zhenfenshu1_z=0+rand()%100;
            //判断产生的真分数正确性
            while(zhenfenshu1_m<zhenfenshu1_z)
            {
                zhenfenshu1_m=0+rand()%100;
                zhenfenshu1_z=0+rand()%100;    
            }
      
            zhenfenshu2_m=0+rand()%100;
            zhenfenshu2_z=0+rand()%100;
      

      除法

      void di() //整数除法
      {
            int a,b,c;
            a=rand()%100;
            b=rand()%100;
            printf("请回答:\n\t\t %d / %d = ",a,b);
            scanf("%d",&c);
            if(a/b==c)
            {
                  printf("回答正确!\n");
                  right++;
            }
            else
            {
                  printf("回答错误!\n");
                  wrong++;
            }
      }
      void Di() //真分数的除法
      {
            int zhenfenshu1_m=0, zhenfenshu1_z=0, zhenfenshu2_m=0, zhenfenshu2_z=0;
            int a,b,c;
            zhenfenshu1_m=0+rand()%100;
            zhenfenshu1_z=0+rand()%100;
      
      



      运行截图

      开始界面
      开始界面
      选择界面
      选择
      运算
      运算
      运算
      运算

      个人小结

       在使用markdown语法编辑的过程中,遇到了许多问题,但在不断的修改过程中依次得到了解决,但还是有很多不足。
      在编辑过程中,还不是很熟练,但了解到了markdown语法的便捷性,感觉非常有趣,希望在以后的编辑中逐渐熟练


      psp

      psp2.1 | 任务内容 | 计划完成需要的时间(min)| 实际完成需要的时间(min) |

      • | :-: | :-: | :-: | -:
        Planing |计划 |10 |30 |
        Estimate |估计这个任务需要多少时间,
        并规划大致工作步骤 |10 | 10 |
        Development |开发| 200| 300|
        Analysis |需求分析(包括学习新技能)|30|90|
        Design Spec|生成设计文档|15|20|
        Design Review|设计审核|15|20|
        Coding Standard|代码规范|5|10|
        Design|具体设计|10|12|
        Coding|具体编码|200|200|
        Code Review|代码复核|20|20|
        Test|测试(自我测试,修改代码
        提交修改)|60|60|
        Reporting|报告|15|15|
        Test Report|测试报告|5|5|
        Size Measurement|计算工作量|20|25|
        Postmortem & Process
        Improvement|事后总结,并提出过程修改计划|5|5|

      源码

      #include<stdio.h>
      #include<math.h>
      #include<windows.h>
      #include<time.h> 
      
      
      int right=0;//答对的正确的题目个数 
      int wrong=0;//答错的题目个数
      
      void add() //整数的加法
      {
            int a,b,c;
            a=rand()%100; //随机生成
            b=rand()%100;
            printf("请回答:\n\t\t %d + %d = ",a,b);
            scanf("%d",&c);
            if(a+b==c)
            {
                  printf("回答正确!\n");
                  right++;
            }
            else
            {
                  printf("回答错误!\n");
                  wrong++;
            }
      }
      
      void Add() //真分数的加法
      {
            int zhenfenshu1_m=0, zhenfenshu1_z=0, zhenfenshu2_m=0, zhenfenshu2_z=0;
            int a,b,c;
            zhenfenshu1_m=0+rand()%100;
            zhenfenshu1_z=0+rand()%100;
            //判断产生的真分数正确性
            while(zhenfenshu1_m<zhenfenshu1_z)
            {
                zhenfenshu1_m=0+rand()%100;
                zhenfenshu1_z=0+rand()%100;    
            }
      
            zhenfenshu2_m=0+rand()%100;
            zhenfenshu2_z=0+rand()%100;
      
            //判断产生的真分数正确性
            while(zhenfenshu2_m<zhenfenshu2_z)
            {
                zhenfenshu2_m=0+rand()%100;
                zhenfenshu2_z=0+rand()%100;    
            }
            printf("请回答:\n\t\t %d / %d + %d / %d = ",zhenfenshu1_z,zhenfenshu1_m,zhenfenshu2_z,zhenfenshu2_m);
            scanf("%d",&c);
            a=zhenfenshu1_z/zhenfenshu1_m, b=zhenfenshu2_z/zhenfenshu2_m;
            if(a+b==c)
            {
                printf("回答正确!\n");
                right++;
            }
            else
            {
                printf("回答错误!\n");
                wrong++;
            }
      }
      
      void minu() //整数减法
      {
            int a,b,c;
            a=rand()%100;
            b=rand()%100;
            printf("请回答:\n\t\t %d - %d = ",a,b);
            scanf("%d",&c);
            if(a-b==c)
            {
            printf("回答正确!\n");
            right++;
            }
            else
            {
            printf("回答错误!\n");
            wrong++;
            }
      }
      void Minu() //真分数的减法
      {
            int zhenfenshu1_m=0, zhenfenshu1_z=0, zhenfenshu2_m=0, zhenfenshu2_z=0;
            int a,b,c;
            zhenfenshu1_m=0+rand()%100;
            zhenfenshu1_z=0+rand()%100;
            //判断产生的真分数正确性
            while(zhenfenshu1_m<zhenfenshu1_z)
            {
                zhenfenshu1_m=0+rand()%100;
                zhenfenshu1_z=0+rand()%100;    
            }
      
            zhenfenshu2_m=0+rand()%100;
            zhenfenshu2_z=0+rand()%100;
      
      //判断产生的真分数正确性
            while(zhenfenshu2_m<zhenfenshu2_z)
            {
          zhenfenshu2_m=0+rand()%100;
          zhenfenshu2_z=0+rand()%100;    
            }
            printf("请回答:\n\t\t %d / %d - %d / %d = ",zhenfenshu1_z,zhenfenshu1_m,zhenfenshu2_z,zhenfenshu2_m);
            scanf("%d",&c);
            a=zhenfenshu1_z/zhenfenshu1_m, b=zhenfenshu2_z/zhenfenshu2_m;
            if(a-b==c)
            {
                printf("回答正确!\n");
                right++;
            }
            else
            {
                printf("回答错误!\n");
                wrong++;
            }
      }
      
      void mul() //整数乘法
      {
            int a,b,c;
            a=rand()%100;
            b=rand()%100;
            printf("请回答:\n\t\t %d * %d = ",a,b);
            scanf("%d",&c);
            if(a*b==c)
            {
            printf("回答正确!\n");
            right++;
            }
            else
            {
            printf("回答错误!\n");
            wrong++;
            }
      }
      void Mul() //真分数的乘法
      {
            int zhenfenshu1_m=0, zhenfenshu1_z=0, zhenfenshu2_m=0, zhenfenshu2_z=0;
            int a,b,c;
            zhenfenshu1_m=0+rand()%100;
            zhenfenshu1_z=0+rand()%100;
      //判断产生的真分数正确性
            while(zhenfenshu1_m<zhenfenshu1_z)
            {
                zhenfenshu1_m=0+rand()%100;
                zhenfenshu1_z=0+rand()%100;    
            }
      
            zhenfenshu2_m=0+rand()%100;
            zhenfenshu2_z=0+rand()%100;
      
      //判断产生的真分数正确性
      while(zhenfenshu2_m<zhenfenshu2_z)
      {
          zhenfenshu2_m=0+rand()%100;
          zhenfenshu2_z=0+rand()%100;    
      }
      printf("请回答:\n\t\t %d / %d * %d / %d = ",zhenfenshu1_z,zhenfenshu1_m,zhenfenshu2_z,zhenfenshu2_m);
      a=zhenfenshu1_z/zhenfenshu1_m, b=zhenfenshu2_z/zhenfenshu2_m;     
      scanf("%d",&c);
      if(a*b==c)
      {
          printf("回答正确!\n");
          right++;
      }
      else
      {
          printf("回答错误!\n");
          wrong++;
      }
      }
      void di() //整数除法
      {
            int a,b,c;
            a=rand()%100;
            b=rand()%100;
            printf("请回答:\n\t\t %d / %d = ",a,b);
            scanf("%d",&c);
            if(a/b==c)
            {
            printf("回答正确!\n");
            right++;
            }
            else
            {
            printf("回答错误!\n");
            wrong++;
            }
      }
      void Di() //真分数的除法
      {
            int zhenfenshu1_m=0, zhenfenshu1_z=0, zhenfenshu2_m=0, zhenfenshu2_z=0;
            int a,b,c;
            zhenfenshu1_m=0+rand()%100;
            zhenfenshu1_z=0+rand()%100;
      //判断产生的真分数正确性
      while(zhenfenshu1_m<zhenfenshu1_z)
      {
          zhenfenshu1_m=0+rand()%100;
          zhenfenshu1_z=0+rand()%100;    
      }
      
      zhenfenshu2_m=0+rand()%100;
      zhenfenshu2_z=0+rand()%100;
      
      //判断产生的真分数正确性
      while(zhenfenshu2_m<zhenfenshu2_z)
      {
          zhenfenshu2_m=0+rand()%100;
          zhenfenshu2_z=0+rand()%100;    
      }
      printf("请回答:\n\t\t %d / %d ÷ %d / %d = ",zhenfenshu1_z,zhenfenshu1_m,zhenfenshu2_z,zhenfenshu2_m);
      scanf("%d",&c);
      a=zhenfenshu1_z/zhenfenshu1_m, b=zhenfenshu2_z/zhenfenshu2_m;
      if(a/b==c)
      {
          printf("回答正确!\n");
          right++;
      }
      else
      {
          printf("回答错误!\n");
          wrong++;
      }
      }
      int main(void)
      {
            int choise,bot;
            srand(time(NULL)); //随机数每次循环都不一样
            int con=0;
            printf("\n\t\t\t小学简易四则运算\n\n");
            while(1)
            {
            if(con==0)
            {
                  printf("\t\请选择:\n");
                  printf("\t\t 整数计算(请输入1)\n\t\t真分数计算(请输入2)\n");
                  scanf("%d",&choise);
                  switch(choise)
                  {
                  case 1:
                  printf("\t\t\t 加法运算(请输入1)\n");
                  printf("\t\t\t 减法运算(请输入2)\n");
                  printf("\t\t\t 乘法运算(请输入3)\n");
                  printf("\t\t\t 除法运算(请输入4)\n");
                  printf("\t\t\t 退出运算(请输入5)\n");
                  scanf("%d", &bot);
                  switch(bot)
                  {
                  case 1:
                  add();
                  break;
                  case 2:
                  minu();
                  break;
                  case 3:
                  mul();
                  break;
                  case 4:
                  di();
                  break;
                  case 5:
                  return 0; 
                  }
            break;
                  case 2:
                  printf("\t\t\t 加法运算(请输入1)\n");
                  printf("\t\t\t 减法运算(请输入2)\n");
                  printf("\t\t\t 乘法运算(请输入3)\n");
                  printf("\t\t\t 除法运算(请输入4)\n");
                  printf("\t\t\t 退出运算(请输入5)\n");
                  scanf("%d", &bot);
                  switch(bot)
                  {
                  case 1:
                  Add();
                  break;
                  case 2:
                  Minu();
                  break;
                  case 3:
                  Mul();
                  break;
                  case 4:
                  Di();
                  break;
                  case 5:
                  return 0; 
                  }
            break;
                }
            }
            if(con==1)
          {
              switch(choise)
                {
                    case 1:
                        printf("\t\t\t  加法运算(请输入1)\n");
                        printf("\t\t\t  减法运算(请输入2)\n");
                        printf("\t\t\t  乘法运算(请输入3)\n");
                        printf("\t\t\t  除法运算(请输入4)\n");
                        printf("\t\t\t  退出运算(请输入5)\n");
                        scanf("%d", &bot);
                        switch(bot)
                        {
                            case 1:
                                add();
                                 break;
                            case 2:
                                 minu();
                                break;
                            case 3:
                                 mul();
                                 break;
                            case 4:
                                 di();
                                 break;
                            case 5:
                                 return 0;    
                      }
                      break;
                  case 2:
                        switch(bot)
                        {
                            case 1:
                                Add();
                                 break;
                            case 2:
                                 Minu();
                                break;
                            case 3:
                                 Mul();
                                 break;
                             case 4:
                                 Di();
                                 break;
                            case 5:
                                 return 0;    
                      }
                      break;
      
                }
          }
            printf("\n\t\t\t继续运算?(请输入1)\n");
            printf("\n\t\t\t重新选择?(请输入2)\n");
            printf("\n\t\t\t退出运算?(请输入3)\n");
            scanf("%d",&con);
            if(con==1)
                 con=1;
            else if(con==2)
                 con=0;
            else if(con==3)
                 break;
            else
                 printf("抱歉!,你输入的指令有误!请重新输入!\n");
      }
      fflush(stdin);   //清空输入缓冲区
      printf("您总共完成了 %d 道题\n正确 %d 道\n错误 %d 道\n",right+wrong,right,wrong);
      }
      

      推荐阅读