小学生四则运算之

https://git.oschina.net/Mr-zf/feng.git

题目描述:

看了大家对于本课程的目标和规划,很多同学都希望能提高自己的实践能力,没有捷径可走,就是练习、练习再练习!那么就从第一个个人项目开始吧,用一周的时间完成一个基于控制台的四则运算程序,实现一个自动生成小学四则运算题目的命令行程序

从《构建之法》第一章的 “程序” 例子出发,像阿超那样,花二十分钟写一个能自动生成小学四则运算题目的命令行 “软件”,满足以下需求:

    1. 除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:1/6 + 1/8 = 7/24
    2. 运算符为 +, ?, ×, ÷
    3. 并且要求能处理用户的输入,并判断对错,打分统计正确率。
    4. 要求能处理用户输入的真分数, 如 1/2, 5/12 等
    5. 使用 -n 参数控制生成题目的个数,例如执行下面命令将生成10个题目
      Myapp.exe -n 10                                                                                                                                                                       需求分析:
    6. 1、自动生成题目

      2、除了整数,还要支持真分数运算

      3、判断答案正确与否(可以识别真分数答案)

      4、可以控制生成题目数量实现步骤

      5、化简分数成最简结果

    7. 实现方式
    8. 本程序的设计主要基于对C/C++中产生随机数的应用,在产生算数符号部分主要采用了switch语句,通过随机产生0-3的数值来随机产生"+-*/"字符,并进行相应的处理;在处理整数操作部分时,使用try/throw语句,避免除法分母为0,语句采用一维数组,记录答案结果;在处理真分数部分,采用while语句产生合理的真分数,采用二维数组记录答案结果
    9. 代码说明
    10. #include<iostream>
      #include<stdlib.h>
      #include<conio.h>
      using namespace std; 
      
      void DealFenshu(int m, int a[][2])
      {
          for(int p=0;p<m;p++)
          {
              int i=(int)rand()%10;
              int j=(int)rand()%10;
              while(j==0||i>=j)
              {
                  i=(int)rand()%10;
                  j=(int)rand()%10;
              }
              int x=(int)rand()%10;
              int y=(int)rand()%10;
              while(y==0||x>=y)
              {
                  x=(int)rand()%10;
                  y=(int)rand()%10;
              }
              int k=(int)rand()%100/25;
              switch(k)
              {
                  case 0:
                      cout<<"("<<i<<"/"<<j<<")"<<"+"<<"("<<x<<"/"<<y<<")"<<"=";
                      a[p][0]=i*y+x*j;
                      a[p][1]=j*y;
                      break;
                  case 1:
                      cout<<"("<<i<<"/"<<j<<")"<<"-"<<"("<<x<<"/"<<y<<")"<<"=";
                      a[p][0]=i*y-x*j;
                      a[p][1]=j*y;
                      break;
                  case 2:
                      cout<<"("<<i<<"/"<<j<<")"<<"*"<<"("<<x<<"/"<<y<<")"<<"=";
                      a[p][0]=i*x;
                      a[p][1]=j*y;
                      break;
                  case 3:
                      a[p][0]=i*y;
                      a[p][1]=j*x;
                      cout<<"("<<i<<"/"<<j<<")"<<"/"<<"("<<x<<"/"<<y<<")"<<"=";
                  }
      
                  if(p%5==4)
                  {
                      cout<<endl;
                  }
                  else
                  {
                      cout<<‘\t‘;
                  }
          }
      
      }
      void DisplayFenshu(int a[][2],int w,int m)
      {
          if(w==1)
          {
              for(int q=0;q<m;q++)
              {
                  if(a[q][0]==0)
                      cout<<"0"<<‘\t‘;
                  else
                      cout<<a[q][0]<<"/"<<a[q][1]<<‘\t‘;
                  if(q%5==4)
                  {
                      cout<<endl;
                  }
              }
          }
          else
          {};
      }
      void DealInt(int m,int a[])
      {
      
          for(int p=0;p<m;p++)
          {
          int i=(int)rand()%10;
          int j=(int)rand()%10;
          int k=(int)rand()%100/25;
          switch(k)
          {
          case 0:
              cout<<i<<"+"<<j<<"=";
                  a[p]=i+j;
              break;
          case 1:
              cout<<i<<"-"<<j<<"=";
              a[p]=i-j;
              break;
          case 2:
              cout<<i<<"*"<<j<<"=";
              a[p]=i*j;
              break;
          case 3:
              try
              {
              a[p]=i/j;
              cout<<i<<"/"<<j<<"=";
              }
              catch(...)
              {
                  p--;
              }
      
          }
      
              if(p%5==4)
              {
                  cout<<endl;
              }
              else
              {
                  cout<<‘\t‘;
              }
          }
      }
      void DisplayInt(int a[],int w,int m)
      {
          if(w==1)
          {
              for(int q=0;q<m;q++)
              {
                  cout<<a[q]<<‘\t‘;
                  if(q%5==4)
                  {
                      cout<<endl;
                  }
              }
          }
          else
          {};
      }
      int main()
      {
          int p;
          do
          {
              system("cls");
              int a[1000],b[1000][2];
              int m,n,w;
              cout<<"请输入生成的四则运算题个数:";
              cin>>m;
              cout<<endl;
              cout<<"请输入要生成的四则运算种类(输入1为整数,否则为真分数):";
              cin>>n;
              cout<<endl;
              if(n==1)
              {
                  DealInt(m,a);
                  cout<<endl;
              }
              else
              {
                  DealFenshu(m,b);
                  cout<<endl;
              }
              cout<<"是否输出答案(输入1则输出答案否则不输出答案)"<<endl;
              cin>>w;
              if(n==1)
              {
                  DisplayInt(a,w,m);
              }
              else
              {
                  DisplayFenshu(b,w,m);
              }
              cout<<endl;
              cout<<"是否继续生成运算题(输入1则生成否则不生成)"<<endl;
              cin>>p;
              cout<<endl;
          }while(1==p);
      
      }

      测试运行:



    11. 展示PSP
    12. PSP2.1 Personal Software Process Stages Time (m) Senior Student Time (m)
      Planning 计划 8 6
      · Estimate 估计这个任务需要多少时间 8 6
      Development 开发 82 88
      · Analysis 需求分析 (包括学习新技术) 6 10
      · Design Spec 生成设计文档 5 6
      · Design Review 设计复审 4 6
      · Coding Standard 代码规范 3 3
      · Design 具体设计 10 12
      · Coding 具体编码 36 21
      · Code Review 代码复审 7 9
      · Test 测试(自我测试,修改代码,提交修改) 13 21
      Reporting 报告 9 6
      · 测试报告 3 2
      · 计算工作量 2 1
      · 并提出过程改进计划 3 3

      小结:

    13. 个人感觉逻辑思想 算法可以想出来,但是在c语言使用上,不够好,在舍友大神的帮助下,竭力完成,谢谢舍友。
时间: 2024-10-12 07:41:38

小学生四则运算之的相关文章

小学生四则运算

package yun; import java.util.Random; import java.util.*; public class number { /** * 作者:范铭祥 * 功能:一个简单的小学生四则运算生成系统 */ public static void main(String[] args) { int max=4; int min=1; Random random = new Random(); //System.out.println(s); boolean pan=tr

自动生成小学生四则运算(C语言)

我写的这个自动生成小学生四则运算的代码是根据我在百度上看到的一篇博客改的,地址为http://www.cnblogs.com/ys1101/p/4368103.html.它的功能不够完整,只有整数的加.减.乘.除,我在此基础上增加了真分数的加.减.乘.除,及统计分数.我把我写的代码放在了GitHub上,地址为https://github.com/cygoodboy/helloworld.

自动生成小学生四则运算(皮!)

自动生成小学生四则运算(皮!) coding 地址 https://coding.net/u/smile12231/p/Demo/git a·需求分析 在这个家长希望自己的小孩能够赢在起跑线的社会,通常寻找很多的练习给小学生做,所以我们就来编写一个四则运算的软件,你懂我意思吧!这个软件能够 ①丶根据用户想要的出题量生成题目 ②丶生成的题目包括整数和分数的加减乘除 ③丶能够自动判断答案是否正确并给出此次的正确率 ④丶使用 -n 参数控制生成题目的个数,例如执行下面命令将生成10个题目 b丶功能设计

安卓小学生四则运算

安卓Activity: package com.example.count_number; import android.os.Bundle;import android.app.Activity;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText; public class MainActivit

【小学生四则运算】程序第3次冲刺(结项成果发布)

茅山光大大组员:林庆光.卢盛添.黄雄俊.陈梓仪.经过三个阶段的协作努力.通力合作,[小学生四则运算]APP程序已经实现了当初设想的全部功能:用户注册与登录(包括找回密码,记住密码功能),用户注册完成同时成为一个游戏账号(可以进行升级,增加金币功能),其中,程序的核心功能包括加法.减法.乘法.除法.以及混合运算的练习题. APP截图展示: 注册界面 登录界面 首页功能展示 答题界面 答题提示框 显示用户信息 商城金币系统 目前APP的功能已经基本定型,接下来就按照杜老师的要求,尝试对APP进行推广

结对子实验——小学生四则运算

实验开始时间:4月7日~4月9日 本次实验的组员分别是:郑泽成http://www.cnblogs.com/Oliver-zzc/,李天麟http://www.cnblogs.com/talent-demonic/: 1.代码是在Eclipse环境下开发的 2.在这次实验中我负责了写四则运算的算术代码和检查算法 同伴负责面板的设计和监听事件的实现 3.实现扩展方向有:用户在第一次答题时,需要用户输入用户名:程序可以设置答题时间,时间设置为整数,单位为秒:答题结束可以显示用户答错的题目个数和答对的

30道小学生四则运算题C/C++编程

软件工程科课上,老师通过实例讲解什么是程序,程序和软件的区别,要求我们通过短时间写一道编程题, 题目就是编写30道小学生四则运算题.以下就是源代码: #include<iostream.h>#include<stdlib.h>#include<time.h>void demo(void)  //随机产生四则运算{ int m,n,k;   //随机数m,n,计数  m=rand()%100;//生成随机数 n=rand()%100; k=rand()%5; switch

java小学生四则运算带面板版 但我不知道为什么同类变量却进不了动作监听中去

---恢复内容开始--- 1 package yun; 2 import java.util.*; 3 import java.awt.*; 4 import java.awt.event.ActionEvent; 5 import java.awt.event.ActionListener; 6 7 import javax.swing.*; 8 public class number extends JFrame{ 9 10 /** 11 * 作者:范铭祥 12 * 功能:一个简单的小学生四

两人结对完成升级版小学生四则运算

小学生四则运算程序之前是使用c语言编写的,如今根据界面要求,故切换到Java编程环境,借助Eclipse开发工具 主要的4个拓展方向: 1.程序可以设置皮肤功能,可以改变界面的颜色即可. 2.程序可以出单个整数阶乘的题目:如:4!=24 3.程序可以设置答题时间,时间设置为整数,单位为秒,最大不能超过120秒,若超过了答题时间未答题,则提示:时间已到,不能答题. 4.可以出表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括号,用户输入的结果不用带括号. 以下是代码展示: 1 i

201571030316/201571030314《小学生四则运算练习软件》结对项目报告

github代码地址:https://github.com/mqqgd/Experiment2 小伙伴儿的博客地址链接:http://www.cnblogs.com/mjuan/p/8715700.html 我的学号:201571030316                  小伴儿的学号:201571030314 一.需求分析    本次实验采用结对编程方式,设计开发一个小学生四则运算练习软件,使之具有以下功能: 由计算机从题库文件中随机选择20道加减乘除混合算式,用户输入算式答案,程序检查答