1、题目要求:
完成一个程序,自动出30道题,范围在100以内,包括加减乘除,整数和真分数
2、实现思路:
程序自动出30道题,运算数和运算符号都是随机。
(1)先自动出一道题,重复过程30次即可;
(2)出一道题,要分为三个部分:第一个数、运算符号、第二个数;
(3)两个数可以直接用随机数产生,四个运算符可以用产生的随机数(1~4)来一一对应;
(4)如果是真分数,可以用随机产生的两个整数来组成一个分数,将较小的数作为分子即可成为真分数;
(5)用随机产生的1、2 来决定产生的数是真分数或是整数。
3、思路整理(实现步骤):
用随机产生的1、2 来决定第一个数是真分数或是整数,随机产生一个整数或是两个整数组成真分数作为第一个运算数,用产生的随机数(1~4)来决定产生的运算符号用随机产生的1、2 来决定第一个数是真分数或是整数,随机产生一个整数或是两个整数组成真分数作为第二个运算数,对运行界面进行整理。
4、源代码:
//此程序用来实现四则运算自动出题,范围包括整数、真分数
//王永维,2016、3、5
#include<iostream>
using namespace std;
void main()
{
int fenshuRand;//真分数或整数
int numRand1,numRand2; //运算数
int fuhaoRand; //运算符号
int count; //产生的式子个数
for(count=0;count<30;count++)
{
//输出题号
cout<<" ("<<count+1<<") ";
//选择运算数是真分数或者整数
fenshuRand=rand()%2+1;
//产生第一个数
if(fenshuRand==1)// fenshuRand 为1 为整数
{
numRand1=rand()%100+1;
cout<<numRand1;
}
if(fenshuRand==2)// fenshuRand 为2 为真分数
{
numRand1=rand()%100+1;
numRand2=rand()%100+1;
if(numRand1<numRand2)
cout<<"("<<numRand1<<"/"<<numRand2<<")";
else
cout<<"("<<numRand2<<"/"<<numRand1<<")";
}
//产生运算符号
fuhaoRand=rand()%4+1;
if(fuhaoRand==1)
cout<<" + ";
else if(fuhaoRand==2)
cout<<" - ";
else if(fuhaoRand==3)
cout<<" × ";
else
cout<<" ÷ ";
//产生第二个数
fenshuRand=rand()%2+1;
if(fenshuRand==1)// fenshuRand 为1 为整数
{
numRand1=rand()%100+1;
cout<<numRand1;
}
if(fenshuRand==2)// fenshuRand 为2 为真分数
{
numRand1=rand()%100+1;
numRand2=rand()%100+1;
if(numRand1<numRand2)
cout<<"("<<numRand1<<"/"<<numRand2<<")";
else
cout<<"("<<numRand2<<"/"<<numRand1<<")";
}
cout<<"="<<endl;
}
}
5、结果截图: