c++自动出题20以内退位减法1. 基本要求:要求用C++语言编程,在Visual C++环境下调试完成.3. 创新要求:实现程序功能后,可进行创新设计(3项全部实现为创新):1) 可以自动出题进位加

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/06 10:32:39

c++自动出题20以内退位减法1. 基本要求:要求用C++语言编程,在Visual C++环境下调试完成.3. 创新要求:实现程序功能后,可进行创新设计(3项全部实现为创新):1) 可以自动出题进位加
c++自动出题20以内退位减法
1. 基本要求:
要求用C++语言编程,在Visual C++环境下调试完成.
3. 创新要求:
实现程序功能后,可进行创新设计(3项全部实现为创新):
1) 可以自动出题进位加法题目,如:3+8=?,或?+8=16 或7+?=12.
2) 可以自动出乘法 如: 2*5=?或?*5=35或8*?=32.
3) 随机决定当前题目是进位加法、乘法和退位减法题目.
三、设计方法和基本原理:
1. 问题功能描述:
计算机随机生成100道退位减法题目,其中1~50题为诸如15-6=?形式的退位减法;51~75题为1?-4=7形式的退位减法;76~100题为:16-?=7形式的退位减法.
2. 问题的解决方案:
如果随机生成减数和被减数,会造成某些题目出现频度过高的现象.例如等概率生成10~18的减数,一旦生成18,则被减数只能是9,才能构成退位减法.较好的解决办法是:“10-1”
到“18-9”共有45种不同的退位减法,将这45种不同的退位减法设定为一个数字,如果设定“10-1=”为0,如果随机生成了0,则输出“10-1=”这道题.
四、主要技术问题的描述:
使用rand()函数(无参)可产生随机整数,每调用1次rand()就产生1个随机数.
为使每次运行程序,rand()函数产生不同的随机数,要调用一次srand函数:
srand(time(NULL));
这些函数涉及到的头文件有
#include
#include
例如产生10个随机整数的程序:
#include
#include
#include
void main()
{
srand(time(NULL));
int a[10],i;
for (i=0;i

c++自动出题20以内退位减法1. 基本要求:要求用C++语言编程,在Visual C++环境下调试完成.3. 创新要求:实现程序功能后,可进行创新设计(3项全部实现为创新):1) 可以自动出题进位加
typedef enum
{
jia,
jian,
cheng
}timu;


void output(timu a)
{
  int d = 0;
  int p1 = 0,p2 = 0;
  int s = 0;
  char op;
  if (a != cheng)
  {
      while (1)
      {
        d = rand()%10+10;
        p1 =rand()%9+1;
        if (a != jian || (d%10)<p1){break;}
      }
      p2 = d-p1;
      if (a == jian){s=d;d=p1;p1=s;}
  }
  else
  {
    p1 =rand()%9+1;
    p2 =rand()%9+1;
    d  = p1*p2;
  }
  s=rand()%3;
  switch(a)
  {
  case jia: op = '+';break;
  case jian:op = '-';break;
  case cheng:op = '*';break;
  default:break;
  }
  switch (s)
  {
  case 0:printf("%d%c%d=?\n",p1,op,p2);break;
  case 1:printf("%d%c?=%d\n",p1,op,d);break;
  case 2:printf("?%c%d=%d\n",op,p2,d);break;
  default:break;
  }
}
int main()
{
  timu t;
  int i;
  srand(time(0));
  for (i=0; i<100; i++)
  {
  t= (timu)rand()%3;
  output(t);
  }
  return 0;


}