c++自动出题20以内退位减法1. 基本要求:要求用C++语言编程,在Visual C++环境下调试完成.3. 创新要求:实现程序功能后,可进行创新设计(3项全部实现为创新):1) 可以自动出题进位加
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/20 13:05:49
![c++自动出题20以内退位减法1. 基本要求:要求用C++语言编程,在Visual C++环境下调试完成.3. 创新要求:实现程序功能后,可进行创新设计(3项全部实现为创新):1) 可以自动出题进位加](/uploads/image/z/3929738-50-8.jpg?t=c%2B%2B%E8%87%AA%E5%8A%A8%E5%87%BA%E9%A2%9820%E4%BB%A5%E5%86%85%E9%80%80%E4%BD%8D%E5%87%8F%E6%B3%951%EF%BC%8E++%E5%9F%BA%E6%9C%AC%E8%A6%81%E6%B1%82%EF%BC%9A%E8%A6%81%E6%B1%82%E7%94%A8C%2B%2B%E8%AF%AD%E8%A8%80%E7%BC%96%E7%A8%8B%2C%E5%9C%A8Visual+C%2B%2B%E7%8E%AF%E5%A2%83%E4%B8%8B%E8%B0%83%E8%AF%95%E5%AE%8C%E6%88%90.3.+++++%E5%88%9B%E6%96%B0%E8%A6%81%E6%B1%82%EF%BC%9A%E5%AE%9E%E7%8E%B0%E7%A8%8B%E5%BA%8F%E5%8A%9F%E8%83%BD%E5%90%8E%2C%E5%8F%AF%E8%BF%9B%E8%A1%8C%E5%88%9B%E6%96%B0%E8%AE%BE%E8%AE%A1%EF%BC%883%E9%A1%B9%E5%85%A8%E9%83%A8%E5%AE%9E%E7%8E%B0%E4%B8%BA%E5%88%9B%E6%96%B0%EF%BC%89%EF%BC%9A1%EF%BC%89++%E5%8F%AF%E4%BB%A5%E8%87%AA%E5%8A%A8%E5%87%BA%E9%A2%98%E8%BF%9B%E4%BD%8D%E5%8A%A0)
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;
}