第一次课上作业——编写程序,输出30道四则运算题

一、设计思路

1、首先完成一个四则运算的出题程序,其次运用循环的方式完成30道题
2、首先使用随机函数生成四则运算中的第一个数的随机数,随机数要求是整数和真分数,其他的数不支持

2.1、首先生成一个随机数,取值为1或2,以此来确定四则运算中第一个随机数应该是整数还是真分数。若随机数为1则为整数,若随机数为2则为真分数。。

2.2、若为四则运算中的数为真分数,则随机生成两个数,作为分子和分母,并使得分母大于分子。

3、使用随机函数生成四则运算中的第二个数的随机数,此随机数的要求以及操作同第二步

4、运用一定的方法完成运算符的选择:使用四个数字来代表不同的运算符,生成一个随机数,然后用这个随机数整除4取余数,通过case语句选择不同的运算符进行运算,并将四则运算中的所有元素(被加数、运算符、加数)组合起来构成四则运算并打印输出。

二、源代码展示

#include<iostream>
#include<stdlib.h>            //调用随机函数void rand(void)时需要调用此库
#include<time.h>              //调用随机函数void time()时需调用此库
#define MIN 1
#define MAX 99
using namespace std;

int main()
{
 srand((int)time(0));
 int num1=1, num2=1;               //存储生成的随机变量
 int num1_1, num1_2;
 int num2_1, num2_2;
 int i = 0;                    //设置循环
 for (i = 0; i < 30; i++)
 {
  int true_false_num;      //生成随机数,用来判断是真分数还是假分数
  true_false_num = 1 + rand() % (2);       //为1则为整数,为2则为真分数
  if (1 == true_false_num)        //判断第一个数是什么类型的数
  {
   num1 = MIN + rand() % (MAX + 1);
  }
  else
  {
   
   num1_1 = MIN + rand() % (MAX-1);    //若为真分数,则分子必须小于99,所以应该%(MAX-1)
   num1_2 = num1_1 + rand() % (MAX - num1_1) + 1;        //此处应当注意分母不能为0,注意(MAX-num1_1)不能为0
   num1 = 0;
  }
  
  true_false_num = 1 + rand() % (2);
  if (1 == true_false_num)        //判断第一个数是什么类型的数
  {
   num2 = MIN + rand() % (MAX);
  }
  else
  {
   num2_1 = MIN + rand() % (MAX-1);
   num2_2 = num2_1 + rand() % (MAX - num2_1) + 1;
   num2 = 0;
  }

int sign;        //设置四则运算符号的代号
  sign = 1 + rand() % (4);      //1,2,3,4分别代表不同的四则运算符号

switch (sign)
  {
  case 1:
  {
      if (0 == num1)
       cout << "(" << num1_1 << "/" << num1_2 << ")";
      else
       cout << num1;
      cout << "+";
      if (0 == num2)
       cout << "(" << num2_1 << "/" << num2_2 << ")";
      else
       cout << num2;
      cout << "=" << endl;
      break;

}
  case 2:
  {
      if (0 == num1)
       cout << "(" << num1_1 << "/" << num1_2 << ")";
      else
       cout << num1;
      cout << "-";
      if (0 == num2)
       cout << "(" << num2_1 << "/" << num2_2 << ")";
      else
       cout << num2;
      cout << "=" << endl;
      break;

}
  case 3:
  {
      if (0 == num1)
       cout << "(" << num1_1 << "/" << num1_2 << ")";
      else
       cout << num1;
      cout << "*";
      if (0 == num2)
       cout << "(" << num2_1 << "/" << num2_2 << ")";
      else
       cout << num2;
      cout << "=" << endl;
      break;

}
  case 4:
  {
      if (0 == num1)
       cout << "(" << num1_1 << "/" << num1_2 << ")";
      else
       cout << num1;
      cout << "/";
      if (0 == num2)
       cout << "(" << num2_1 << "/" << num2_2 << ")";
      else
       cout << num2;
      cout << "=" << endl;
      break;

}
  }
 }

//cout << "产生小数:" << 0+rand()/double(RAND_MAX);

return 0;
}

以上程序中需要注意除数不能为零,否则运算式不能成立。

时间: 2024-11-10 00:14:14

第一次课上作业——编写程序,输出30道四则运算题的相关文章

随机输出30道四则运算题

题目要求:随机输出30道小学二年级四则运算题. 思路:用for循环实现数量30道,rand函数产生随机数,switch语句加0到3的随机数实现四种运算的随机输出,if语句添加限制条件,用取余方式限制运算数.结果不超过100,除法不出现分数等,以符合小学二年级的实际水平. 编写过程中,在写if语句添加限制条件时,不符合条件的不知道如何实现跳转,出现了数量不足30道的情况,后通过程序中定义的整型 i 自减实现. 代码如下: #include<iostream.h>#include <stdl

随机生成30道四则运算题

思路:首先随机生成两个操作数.将运算符存到数组c中,随机生成0-3的整数作为数组下标.即相当于随机产生运算符. 利用for循环输出30道四则运算题 #include<iostream.h>#include<stdlib.h>int main(){     int a,b,d,i;     char c[4]={'+','-','*','/'};     for(i=0;i<30;i++)     {           a=int(rand()%11);           

30道四则运算题的第三次补充

30道四则运算题目 一.题目: 用C++编写程序,打印30道四则运算题目: 要求:1.题目避免重复:   2.可定制(数量/打印方式):   3.可以控制下列参数: 是否有乘除法.是否有括号. 数值范围.加减有无负数.除    法有无余数.否支持分数 (真分数, 假分数, …).是否支持小数 (精确到多少位).打印中每行的间隔可调整: 二.设计思路: 要求1:题目避免重复 C++中用函数srand()能够避免生成重复的随机数,一定的数值范围只能生成一定数量的随机运算题目:满足一个关系:num>(

30道四则运算题的第一次升级

/**作者:程鹏远题目:30道2年纪四则运算题目 要求:减法结果不为负数,除法能整除,除数不为0:*/ #include <iostream.h> #include <stdlib.h>int main(){ int a,b,c; for(int i=0;i<30;i++) { cout<<"第"<<i+1<<"题: "; a=rand()%100;//x+rand()%(y-x+1)随机生成[x,y

30道四则运算题

设计思想: 首先是解决能有30道题目,需要一个for循环,但是所产生的随机数又不能为0:所以把出现0的数排除掉,然后列出一个算式统计数i加1:还有就是随机数rand()的运用. 源代码: #include<iostream>using namespace std; void main(){ int a,b,c; for(int i=0;i<30;) { a=rand()%99; b=rand()%99; c=rand()%5; if(a!=0&&b!=0&&

随机生成30道四则运算题程序设计

编程思路: 因为是低年级四则运算题,我考虑出一些100以内的加减乘除,又是随机生成,所以用上了rand函数,又有选择性的用到了switch  case结构,达到30道题的无序性.而且针对减法和除法的特殊情况做了些细节考虑. 源代码: #include<iostream.h>#include<stdlib.h>int main(){ int a,b,c; for(int i=1;i<31;i++){ a=rand()%100; b=rand()%100; c=rand()%4;

30道四则运算题的第二次补充

要求1:题目避免重复.? 对结果进行检查:把每个题存取,新生成的题目要匹配,剔除重复的. 乐乐:IO流:对=进行分割: 要求2:可定制(数量/打印方式): For()循环中的30这个数字,变成一个从键盘输入的参数dingzhi: 要求3: a是否有乘除法 把参数c进行控制:除法c=0:加法c=1:减法c=2:乘法c=3: 用if控制用户输入的是否要乘除法 B是否有括号 程序要改进成混合运算:if 0 cout<<;else cout<< C数值范围 提示语句:新参数 参数a.b进行

随机的30道四则运算题(简单的c)

#include <stdio.h>#include <stdlib.h>#include <time.h> int main(void){ int i = 0; srand((unsigned)time(NULL)); //本地时间为种子 while(i<30) { int a = rand()%100; //产生随机数 int b = rand()%100; int j;   j = rand()%4; //产生随机符号0到3分别代表四则运算 printf(&

复杂点的30道四则运算题构思1

对与避免题目重复我的构思:首先分配3个空间,将随机出的结果分别存入其中(三个数,运算符号用数来代替)新得到的第一个数与第一个空间的数比较,相同就比较第二个数与第二个空间相对应的位置上的数是否相同,在相同就比较第三个数,若相同本次执行不使循环变量加一,若上述步骤有不同的地方就将三个数存入.感觉可以用数组来实现用下标来完成相对印的数字的检索. 对数目的控制可以构件一个函数来对while的循环参数赋值. 对每行的题目数量可以使用一个变量来控制,使用if用循环参数对变量取余,使余数等与0,便能控制. 在