标签:
一 设计思想
1.因为要设定许多可控参数,可以把这些参数构成一个数组,也就是一个参数集,然后对每个参数分情况进行设定;
2.数组中包括题目数量、乘除控制、数值范围、分数控制、正负控制、打印列数共6个元素;
3.对于控制变量,可以设置为1和0 控制;
二 程序代码
#include "stdafx.h" #include "stdlib.h" //调用其中随机函数 #include "iostream.h" #include "time.h" int main(int argc, char* argv[]) { int a[6],ch; //定义一个数组,用来存放可控参数 int temp; srand((unsigned)time(NULL)); //使随机产生的式子每次不重复 int k1,k2; //k1,k2为两个随机数,产生n个式子 cout<<"请输入出题数目:"<<endl; cin>>a[0]; cout<<"请输入是否有乘除(有->1; 无->0):"<<endl; cin>>a[1]; cout<<"请输入出数值范围:"; cin>>a[2]; cout<<"请输入是否选择分数(有->1; 无->0):"<<endl; cin>>a[3]; cout<<"请输入结果是否有负数(有->1; 无->0):"<<endl; cin>>a[4]; cout<<"请输入几列:"<<endl; cin>>a[5]; for(int i=1;i<=a[0];i++) //由用户决定打印多少道题a[0] { if(a[3]==0){ k1=rand()%(a[2]); //随机产生a[2]以内的数,a[2]是由用户输入的数值范围 k2=rand()%(a[2]); if(a[4]==0) //控制结果没有负数,如果相减出现负数,则交换两个数 { if(k1<k2) { temp=k1; k1=k2; k2=temp; } } else k1=rand()%(a[2]); k2=rand()%(a[2]); if(a[1]==1){ //a[1]为控制乘除参数 ch=rand()%4; //ch有四种情况,加减乘除 } else ch=rand()%2; //ch有两种情况,加减,没有乘除 if((i+1)%a[5]==0) //a[5]为打印列数,式子个数除以列数的余数决定了它的位置 { cout<<endl; } switch(ch) { case 0: cout<<k1<<"+"<<k2<<"="<<"\t\t"; break; case 1: cout<<k1<<"-"<<k2<<"="<<"\t\t"; break; case 2: cout<<k1<<"*"<<k2<<"="<<"\t\t"; break; case 3: cout<<k1<<"/"<<k2<<"="<<"\t\t"; break; } } else{ int n1,n2,n3,n4; n1=rand()%20; //随机产生20以内的数 n2=rand()%20; n3=rand()%20; n4=rand()%20; if(a[1]==1){ ch=rand()%4; } else ch=rand()%2; //随机产生一个运算符号 if((i+1)%a[5]==0) { cout<<endl; } switch(ch) //输出分数 { case 0: cout<<"("<<n1<<"/"<<n2<<")+("<<n3<<"/"<<n4<<")="<<"\t\t"; break; case 1: cout<<"("<<n1<<"/"<<n2<<")-("<<n3<<"/"<<n4<<")="<<"\t\t"; break; case 2: cout<<"("<<n1<<"/"<<n2<<")*("<<n3<<"/"<<n4<<")="<<"\t\t"; break; case 3: cout<<"("<<n1<<"/"<<n2<<")/("<<n3<<"/"<<n4<<")="<<"\t\t"; break; } } } cout<<endl; return 0; }
三 运行结果截图
四 编程心得
1.编程前首先看到这一个又一个的要求,就不知道该如何下手了,后来按照上课老师帮我们分析的思路,这一个又一个可以控制的参数,可以放到一个数组中,同类参数可以考虑这样做,也避免了编程时思路混乱或者功能遗漏。
2.编程时对于是否有分数这个功能选择时,本来想生成一个函数,返回一个分数值,但是这个分数值的显示应该是个字符串,没有做出来,就在主函数里面用了选择语句,重新写了一个式子输出,比较笨的方法。
3。在打印方式的列数功能实现时,也是费了一番周折。
标签:
原文地址:http://www.cnblogs.com/luyu2783/p/4337290.html