before:写一个能自动生成三十道小学四则运算题目的“软件”,要求:除了整数以外,还要支持真分数的四则运算
一,程序的设计思想
利用时间做种,分别随机产生运算的两个数字,运算符号,其中运算符号可以存在一个字符数组里,对数组下标随机。然后可以有一个判定机制,防止出现零做被除数的情况出现。最后就是为了以后好扩展一些,我把主要的功能放到另外的函数里了,主函数里写了一个时间种子,这样每次产生的题目都不一样。
二,源程序代码
#include<iostream> using namespace std; #include<time.h> #include<string> void intCal()//产生整数计算 { int shu1=0,shu2=0; //随机数产生0-100 //shu1=srand(1000) shu1=0+rand()%100; shu2=0+rand()%100; int sum=0; int fushu=0; string fuhao[4]={"+","-","*","/"}; fushu=((0+rand()%4)+4)%4; //cout<<fushu<<endl; //判断shu2是否为0和是否为除法 若为则重新生成 while(shu2==0&fushu==3) { shu2=0+rand()%100; } //随机产生的符号 switch(fushu) { case 0:cout<<shu1<<fuhao[fushu]<<shu2<<"="<<endl;break; case 1:cout<<shu1<<fuhao[fushu]<<shu2<<"="<<endl;break; case 2:cout<<shu1<<fuhao[fushu]<<shu2<<"="<<endl;break; case 3:cout<<shu1<<fuhao[fushu]<<shu2<<"="<<endl;break; } } void fract()//产生分数运算 { int zhenfens1_m=0,zhenfens1_z=0,zhenfens2_m=0,zhenfens2_z=0; zhenfens1_m=0+rand()%100; zhenfens1_z=0+rand()%100; //判断产生的真分数正确性 while(zhenfens1_m<zhenfens1_z) { zhenfens1_m=0+rand()%100; zhenfens1_z=0+rand()%100; } zhenfens2_m=0+rand()%100; zhenfens2_z=0+rand()%100; //判断产生的真分数正确性 while(zhenfens2_m<zhenfens2_z) { zhenfens2_m=0+rand()%100; zhenfens2_z=0+rand()%100; } string fuhao[4]={"+","-","*","/"}; int fushu=((0+rand()%4)+4)%4; //cout<<fushu<<endl; //判断shu2是否为0和是否为除法 若为则重新生成 //随机产生的符号 switch(fushu) { case 0:cout<<"("<<zhenfens1_z<<"/"<<zhenfens1_m<<")"<<fuhao[fushu]<<"("<<zhenfens2_z<<"/"<<zhenfens2_m<<")"<<"="<<endl;break; case 1:cout<<"("<<zhenfens1_z<<"/"<<zhenfens1_m<<")"<<fuhao[fushu]<<"("<<zhenfens2_z<<"/"<<zhenfens2_m<<")"<<"="<<endl;break; case 2:cout<<"("<<zhenfens1_z<<"/"<<zhenfens1_m<<")"<<fuhao[fushu]<<"("<<zhenfens2_z<<"/"<<zhenfens2_m<<")"<<"="<<endl;break; case 3:cout<<"("<<zhenfens1_z<<"/"<<zhenfens1_m<<")"<<fuhao[fushu]<<"("<<zhenfens2_z<<"/"<<zhenfens2_m<<")"<<"="<<endl;break; } } void main() { srand(time(NULL));//用系统当前时间设置rand()随机序列种子,保证每次运行随机序列不一样 char ch='a';//选择运算种类 int i;//选择产生题目的个数 int c=1; while(c) { cout<<"请选择运算种类:(输入a或A将打印整数运算,输入b或B将打印假分数运算:)"<<endl; cin>>ch; cout<<"请选择要打印题目的数量:"<<endl; cin>>i; if(ch=='a'||ch=='A') { int j;//计数器 for(j=0;j<i;j++) { intCal(); } } else if(ch=='b'||ch=='B') { int j;//计数器 for(j=0;j<i;j++) { fract(); } } cout<<"继续请输入1,否则请输入0"<<endl; cin>>c; } cout<<"OVER!"<<endl; }
三、运行结果截图
四、个人上课未按时完成的原因
时间短,人比较笨。