小学二年级题目的改进

以下程序满足的条件:

1.避免重复

随机算取一组随机数,将第二道题和第一道题操作数进行对比,如果发现两个操作数都完全一样话,就删除此组随机数,重新进行对边,直至最后没有重复的数组。

2.可定制

可控制每行打印题目的个数,以及所有算术题的个数从而控制打印格式

3.是否有乘除法

题目随机出现后,将所有运算符号送入一个数组,然后进行检索,查询是否有乘除号

4.数值范围

随机数的取值范围在0-99之间,这样结果就不会超过200。

5.有无括号

当有乘除法的时候有括号,无乘除法的话,就没有括号

6.打印中的每行建间隔可以调整

可以根据需要调整。

源代码:

#include<iostream.h>

#include<stdlib.h>

#include<time.h>

void main()

{

int a,i,k,m,q,j,h,v; //定义几个变量

int *o1,*o2,*o3;     //3个数组指针

char *oc1,*oc2;      //两个运算符指针

char n1,n2;          //n1有无乘除  n2有无括号

int a1,a2;

char g[4]={‘+‘,‘-‘,‘*‘,‘/‘};

srand((unsigned)time(NULL)); //本地时间

b:   cout<<"请问您想输出多少道题目?"<<endl;

cin>>q;

cout<<"请输入操作数值的最大范围:"<<endl;

cin>>j;

cout<<"请问是否有无乘除法?(Y/N)"<<endl;

cin>>n1;

cout<<"请问是否有无括号?(Y/N)"<<endl;

cin>>n2;

cout<<"请输入每行运算式的个数:"<<endl;

cin>>v;

cout<<"请输入每行运算式之间的间隔:"<<endl;

cin>>a2;

o1=new int[q];           //动态生成数组

o2=new int[q];

o3=new int[q];

oc1=new char[q];

oc2=new char[q];

cout<<"以下为随机选取的题目:"<<endl;

for(i=1;i<=q;i++)          //定义一个可以改变题目数量的q

{

if(n1==‘Y‘)

{

oc1[i]=g[rand()%4];     //获取运算符

oc2[i]=g[rand()%4];

o1[i]=rand()%j;         //获取随机数

o2[i]=rand()%j;

o3[i]=rand()%j;

if(i==1)

{

if(n2==‘N‘)

{

cout<<o1[i]<<oc1[i]<<o2[i]<<oc2[i]<<o3[i]<<"=    ";

}

else

{

if(rand()%2==0)                //判断括号的位置

{

if(oc1[i]==‘+‘||oc1[i]==‘-‘)  //括号在前

{

if(oc2[i]==‘*‘||oc2[i]==‘/‘)

{

cout<<‘(‘<<o1[i]<<oc1[i]<<o2[i]<<‘)‘<<oc2[i]<<o3[i]<<"=    ";

}

else

{

cout<<o1[i]<<oc1[i]<<o2[i]<<oc2[i]<<o3[i]<<"=    ";

}

}

if(oc1[i]==‘*‘||oc1[i]==‘/‘)

{

cout<<o1[i]<<oc1[i]<<o2[i]<<oc2[i]<<o3[i]<<"=    ";

}

}

else

{

if(oc1[i]==‘+‘||oc1[i]==‘-‘)  //括号在后

{

cout<<o1[i]<<oc1[i]<<o2[i]<<oc2[i]<<o3[i]<<"=    ";

}

if(oc1[i]==‘*‘||oc1[i]==‘/‘)

{

if(oc2[i]==‘+‘||oc2[i]==‘-‘)

{

cout<<o1[i]<<oc1[i]<<‘(‘<<o2[i]<<oc2[i]<<o3[i]<<‘)‘<<"=    ";

}

else

{

cout<<o1[i]<<oc1[i]<<o2[i]<<oc2[i]<<o3[i]<<"=    ";

}

}

}

}

}

else

{

for (k = 0; k < i; k++)                        //避免重复start

{

if (o1[k] == o1[i] && o2[k] == o2[i] && o3[k] == o3[i] && oc1[k] == oc1[i] && oc2[k] == oc2[i])

{

i--;

break;

}

else

{

if (k == i - 1)  //比较到最后一个数时

{

//循环输出/*q*/道运算题

if(n2==‘N‘)

{

cout<<o1[i]<<oc1[i]<<o2[i]<<oc2[i]<<o3[i]<<"=    ";

}

else

{

if(rand()%2==0)                //判断括号的位置

{

if(oc1[i]==‘+‘||oc1[i]==‘-‘)  //括号在前

{

cout<<‘(‘<<o1[i]<<oc1[i]<<o2[i]<<‘)‘<<oc2[i]<<o3[i]<<"=    ";

}

if(oc1[i]==‘*‘||oc1[i]==‘/‘)

{

cout<<o1[i]<<oc1[i]<<o2[i]<<oc2[i]<<o3[i]<<"=    ";

}

}

else

{

if(oc1[i]==‘+‘||oc1[i]==‘-‘)  //括号在后

{

cout<<o1[i]<<oc1[i]<<o2[i]<<oc2[i]<<o3[i]<<"=    ";

}

if(oc1[i]==‘*‘||oc1[i]==‘/‘)

{

if(oc2[i]==‘+‘||oc2[i]==‘-‘)

{

cout<<o1[i]<<oc1[i]<<‘(‘<<o2[i]<<oc2[i]<<o3[i]<<‘)‘<<"=    ";

}

else

{

cout<<o1[i]<<oc1[i]<<o2[i]<<oc2[i]<<o3[i]<<"=    ";

}

}

}

}

}

}

}                                              //避免重复end

}

}

else if(n1==‘N‘)

{

oc1[i]=g[rand()%2];

oc2[i]=g[rand()%2];

o1[i]=rand()%j;

o2[i]=rand()%j;

o3[i]=rand()%j;

if(i==1)

{

cout<<o1[i]<<oc1[i]<<o2[i]<<oc2[i]<<o3[i]<<"=    ";

}

else

{

for (k = 0; k < i; k++)                                  //避免重复start

{

if (o1[k] == o1[i] && o2[k] == o2[i] && o3[k] == o3[i] && oc1[k] == oc1[i] && oc2[k] == oc2[i])

{

i--;

break;

}

else

{

if (k == i - 1)  //比较到最后一个数时

{

//循环输出/*q*/道运算题

cout<<o1[i]<<oc1[i]<<o2[i]<<oc2[i]<<o3[i]<<"=    ";

}

}

}                                                         //避免  重复end

}

}

if (i%v==0)

{

cout<<endl ;

for(a1=1;a1<=a2;a1++)

{

cout<<endl;

}

}

}

cout<<endl;

cout<<endl;

cout<<"请重新测试:"<<endl ;

goto b  ;

}

截图:

程序感悟:大的程序不好写但是可以按照需求一步一步来,积少成多也许就会更容易一点,同时还因为以前的基础不牢靠,导致很多小的问题还是需要请教别人,以后一定会多努力!!

时间: 2024-07-30 13:02:00

小学二年级题目的改进的相关文章

二年级题目的改进

1.避免重复 随机算取一组随机数,将第二道题和第一道题操作数进行对比,如果发现两个操作数都完全一样话,就删除此组随机数,重新进行对边,直至最后没有重复的数组. 2.可定制 可控制每行打印题目的个数,以及所有算术题的个数从而控制打印格式 3.是否有乘除法 题目随机出现后,将所有运算符号送入一个数组,然后进行检索,查询是否有乘除号 4.数值范围 随机数的取值范围在0-99之间,这样结果就不会超过200. ....

小学二年级四则运算题

一.题目要求 产生300道小学二年级的四则运算的数学题,减法不能出现负数,除法要整除. 二.编写过程 编写产生30道小学二年级的四则运算的数学题,用rand()产生随机数,和随机的符号,在除法运算中在被除数不为零的情况下利用一组随机数来产生被除数和除数是被除数的整数倍,这样保证了除法的整除,减法要先判断两个随机数的大小,输出的结果为大数减去小数.然后利用for循环30次输出30道题目. 三.程序运行 四.程序代码 #include<stdio.h>#include<stdlib.h>

悲催的二柱子们做小学二年级四则运算题(Javaweb)

1 <%@ page language="java" contentType="text/html; charset=utf-8" 2 pageEncoding="utf-8"%> 3 <!DOCTYPE html> 4 <html> 5 <head> 6 <body background="C:\Users\26624\Desktop/beijing.jpg"> 7

30道小学二年级四则运算题

思路与体会:用rand函数产生随机数32767/327约等于100.2.排除了除数是0的错误, 但是仍有缺陷:减法会出现不够减结果是负数的情况! 运行结果总出现闪退情况,查阅资料后加了system("pause") 运行环境:vs2013 源代码: #include<iostream> using namespace std; #include<stdio.h> #include<stdlib.h>int rak(){ return rand() /

小学二年级三十道四则运算题目。

代码: #include <stdio.h>#include <string.h>#include <stdlib.h>#include <time.h> int main(int argc, char **argv){    int a[30],b[30];     int i,c,d;        srand((unsigned int)time(NULL));    for (i = 0; i < 30; i++)    {          

小学二年级三十道四则运算题目-扩展运算,添加指定题目数量和支持真分数运算

代码: #include<stdio.h>  #include<Windows.h>  #include<time.h>  void main()  {      int a, b, c, d,i,m,n;      float p, q;      srand(unsigned( time(NULL)));      for (i = 0; i < 30; i++)      {         a = rand() % 100;         b = ran

用Python开发小学二年级口算自动出题程序

版权声明:本文为博主原创文章,欢迎转载,并请注明出处.联系方式:[email protected] 武汉光谷一小二年级要求家长每天要给小孩出口算题目,让孩子练习. 根据老师出题要求编写了Python程序自动出题,结果保存为txt文件,打印出来作为练习用,这样就不用每天繁琐地人工出题了,其中的数字用randint随机产生. 程序如下: # -*- coding:utf-8 -*- __author__ = 'zhengbiqing [email protected]' __doc__ = "&qu

四则运算2之小学二年级

一.解题思路1.定义一个加法运算函数“add()”和加减乘除运算函数“mul”:利用选择语句用户可以 根据需求选择四则运算的类型和实现参数控制.2.使用随机函数Random()产生运算数及运算符,在while()循环里用户可以定义生成算术题 的个数,将产生的运算数及运算符放入定义好的二维数组内,利用if...else...和循环 语句将生成的新的算式与数组中存入的逐一比较,避免算术题重复.3.通过switch语句和if((i+1%m2)==0)语句实现控制打印方式的选择. 二.源代码 1 pac

关于运用C语言自动生成三十道小学二年级四则运算

#include <stdio.h>#include <stdlib.h>#include <time.h> int main(){ int i = 0; srand((unsigned)time(NULL)); while(i<30) { int a = rand()%100; int b = rand()%100; int j; j = rand()%4; printf("%d", a); switch(j) { case 0: print