1,设计思路和实际偏差总结。
设计思路如上一个博客,实际偏差有很多,首先,没能处理题目重复,打印方式和有括号的算法,其次是未能实行将这几个部分很好的融合在一起,而是单独实行各个方面的题目,主要是因为我认为这样比较方便而且各函数独立,清楚清晰。
2,具体程序中出现的错误,出现错误最常见的地方。
程序出现错误一般都在标识符定义没有定义好,大括号{}不匹配,尤其是实现除法有余数的函数里,总是出现错误,语句顺序没有调整好,循环之类的,导致没法出结果。
具体程序如下:
math.h #pragma once #include<cmath> #include<iostream> using namespace std; class math { public: math(void); void chengchu(); void kuohao(); void fushu(); void yushu(); void xiaoshu(); void jiajian(); ~math(void); }; math.cpp #include "math.h" math::math(void) { } void math::chengchu() { cout<<"有乘除的运算:"<<endl; int num,q;//定义题目数量num,数值范围q,打印方式的列数l。 cout<<"请输入自定义题目数量:"<<endl; cin>>num; cout<<"请输入自定义数值范围:"<<endl; cin>>q; int a,b,i,y; for(i=0;i<num;i++) { a=rand()%q; b=rand()%q; y=rand()%2; switch(y){ case 0: cout<<" "<<a<<"*"<<b<<"="<<endl; break; case 1: cout<<" "<<a<<"/"<<b<<"="<<endl; break; } } } void math::kuohao() { cout<<"有括号的运算:"<<endl; cout<<"暂不支持该运算"<<endl; } void math::fushu() { cout<<"有负数的运算:"<<endl; int num,q;//定义题目数量num,数值范围q,打印方式的列数l。 cout<<"请输入自定义题目数量:"<<endl; cin>>num; cout<<"请输入自定义数值范围:"<<endl; cin>>q; int a,b,i,y; for(i=0;i<num;i++) { a=-rand()%q; b=-rand()%q; y=rand()%2; switch(y){ case 0: cout<<" "<<a<<"+"<<"("<<b<<")"<<"="<<endl; break; case 1: cout<<" "<<a<<"-"<<"("<<b<<")"<<"="<<endl; break; } } } void math::yushu() { cout<<"有余数的运算:"<<endl; int num,q;//定义题目数量num,数值范围q,打印方式的列数l。 cout<<"请输入自定义题目数量:"<<endl; cin>>num; cout<<"请输入自定义数值范围:"<<endl; cin>>q; int a,b,i; for(i=0;i<num;i++) { a=rand()%q; b=rand()%q; if(b!=0&&a%b!=0) cout<<a<<"/"<<b<<"="<<endl; } } void math::xiaoshu() { cout<<"有分数的运算:"<<endl; int num,q;//定义题目数量num,数值范围q,打印方式的列数l。 cout<<"请输入自定义题目数量:"<<endl; cin>>num; cout<<"请输入自定义数值范围:"<<endl; cin>>q; int a,b,c,d,i,y; for(i=0;i<num;i++) { a=rand()%q; b=rand()%q; c=rand()%q; d=rand()%q; y=rand()%2; switch(y){ case 0: if(b!=0&&d!=0) cout<<" "<<a<<"/"<<b<<"+"<<c<<"/"<<d<<"="<<endl; break; case 1: if(b!=0&&d!=0) cout<<" "<<a<<"/"<<b<<"+"<<c<<"/"<<d<<"="<<endl; break; } } } void math::jiajian() { cout<<"仅加减的运算:"<<endl; int num,q;//定义题目数量num,数值范围q,打印方式的列数l。 cout<<"请输入自定义题目数量:"<<endl; cin>>num; cout<<"请输入自定义数值范围:"<<endl; cin>>q; int a,b,i,r,y; for(i=0;i<num;i++) { a=rand()%q; b=rand()%q; y=rand()%2; switch(y){ case 0: cout<<" "<<a<<"+"<<b<<"="<<endl; break; case 1: if(a<b) { r=a; a=b; b=r; }//避免负数 cout<<" "<<a<<"-"<<b<<"="<<endl; break; } } } math::~math(void) { } main.cpp #include"math.h" #include<iostream> using namespace std; void main() { int n; math k; do { cout<<"*******************************************"<<endl; cout<<"请选择下面的一个项目:"<<endl; cout<<"1 有乘除法 2 有括号"<<endl; cout<<"3 加减有负数 4 除法有余数"<<endl; cout<<"5 支持分数 6 仅加减法"<<endl; cout<<"*******************************************"<<endl; cin>>n; switch(n) { case 1:k.chengchu();break; case 2:k.kuohao();break; case 3:k.fushu();break; case 4:k.yushu();break; case 5:k.xiaoshu();break; case 6:k.jiajian();break; } }while(n); }
3,感悟。
一直觉得自己编程不好,看见四则运算2题目就发怵,于是就决定先简化,看自己能做到哪一步,实际上来讲,我的程序还是结构简单,语句冗长,不是一个很好的程序,我也会继续在它的基础上继续改进。只是根据四则运算1来写的这个程序,有的地方虽然不尽如人意。我觉得自己有在编程的路上还是进步了那么一小小点。
4,时间记录表。