设计思路:
1.随机函数生成两个随机数作为两个操作数。运算符按照加减乘除的顺序依次计算。
2.将操作数额运算符按照算式的顺序顺出。
3.将每一个式子的结果保存在一个数组中。
4.再讲每道题的结果依次输出。
一些细节:
1.二年级学生的题目,没学过负数,减法须大数减去小数
2.除法,被除数不能是0,并且大数除以小数的居多。
3.这是出题,题目和答案须分开写。
4.调试的时候,发现每次调用rand的时候产生的数都一样,后来用srand(time(NULL))来解决。
课上没有写出来的原因:
好长时间没有写程序了,有点生;还有忘记随机函数rand的头文件了;看到题目之后,就想把程序写的跟题目所要求的理想化的程序,比较完善的程序,以至于在一定时间内没有写完。
源程序代码:
#include "stdafx.h"
#include<iostream.h>
#include<time.h>
#include<stdlib.h>
void main()
{
int fst=0,sed=0;//两个操作数
char sf;//运算符
int js[30],jy[30];//存放运算结果,js是结果(商),jy是余数
char ysf[4]={'+','-','*','/'};//运算符
int i=0,y=0,temp;
cout<<"30道四则运算的题目是:"<<endl;
srand(time(NULL));
while(i<30)
{
fst=1+rand()%99;//随机生成两个0到100之间的整数
sed=1+rand()%99;
if(y==4)//运算符顺序按照+-*/的顺序
y=0; sf=ysf[y];
if(((y==1)||(y==3))&&(fst<sed))//若是减法运算,则调整操作数,是较大的数减去较小的数;
{ temp=fst;
fst=sed;
sed=temp;
}
cout<<i+1<<". "<<fst<<sf<<sed<<"=\t";//输出算式
if((i+1)%4==0)
cout<<endl;
switch(sf)
{
case '+':js[i]=fst+sed,jy[i]=-1;break;
case '-':js[i]=fst-sed,jy[i]=-1;break;
case '*':js[i]=fst*sed,jy[i]=-1;break;
case '/':js[i]=fst/sed,jy[i]=fst%sed;break;
default:cout<<"出错"<<endl;
}
i++; y++;
}
cout<<endl<<"以上题目的结果是:"<<endl;
for(i=0;i<30;i++)
{ if(jy[i]==-1)
cout<<i+1<<". "<<js[i]<<"\t\t";
else
cout<<i+1<<". "<<js[i]<<"…"<<jy[i]<<"\t";//输出除法运算的结果
if((i+1)%4==0)
cout<<endl;
}
}
结果截图: