四则运算-终结版
2016-03-19 14:44 LUXIN123 阅读(171) 评论(1) 编辑 收藏 举报---恢复内容开始---
一、题目
每个同学选一个方向,把程序扩展一下:
1、让程序能接受用户输入答案,并判定对错。并输出正确的错题数
2、把程序变成一个网页程序,用户通过设定参数,就可以得到各种题目。
3、把程序变成一个Windows 图形界面的程序。
4、把程序变成一个智能手机程序 (你正在用什么手机, 就写那个手机的程序)。(可以延期3周后)
5、选一个你从来没有学过的编程语言,试一试实现基本功能。
选择1
二、思路:1 用一个数组把结果存到里面去,用以计算结果
2 用户输入的结果与正确答案相比对,给出提示信息并输出正确答案。
3 有余数的情况是,先判断是否是除法,然后是的话就输入两个数,一个是商,一个是余数,判断答案是否正确。
#include<iostream.h> #include<stdlib.h> #include<time.h> void main( ) { srand(time(NULL));//避免题目重复 int i,j, x,y,t[100],b;//x,y表示两个数随机数,i表示题目的数量,t,b是在两个数相减中保证结果为正定义的变量 int a[7]; cout<<"请输入要打印的题目数:"<<endl; cin>>a[0]; while(a[0]<=0) //题目数必须为正数 { cout<<"请重新输入有效的题目数:"<<endl; cin>>a[0]; }; cout<<"请选择否有乘除法(是1;否0):"<<endl; cin>>a[1]; while((a[1]!=1)&&(a[1]!=0)) //只能选择1或0 { cout<<"请重新输入有效的数值:"<<endl; cin>>a[1]; }; cout<<"请输入运算数的范围:"<<endl; cin>>a[2]; while(a[2]<=0) //运算数必须为正数 { cout<<"请重新输入有效的范围:"<<endl; cin>>a[2]; }; cout<<"请选择结果有无负数(是1;否0):"<<endl; cin>>a[3]; while((a[3]!=1)&&(a[3]!=0)) //只能选择1或0 { cout<<"请重新输入有效的数值:"<<endl; cin>>a[3]; }; cout<<"请选择结果有无余数(是1;否0):"<<endl; cin>>a[4]; while((a[4]!=1)&&(a[4]!=0)) //只能选择1或0 { cout<<"请重新输入有效的数值:"<<endl; cin>>a[4]; }; cout<<"请输入要打印的列数: "<<endl; cin>>a[5]; while(a[5]<=0) { cout<<"请重新输入有效列数: "<<endl; cin>>a[5]; }; cout<<"请输入每行间隔数: "<<endl; cin>>a[6]; int result[100],resulty[100]={0},daan[100],yushu[100]={0}; for(i=0;i<a[0];i++) { if(a[1]==1)//有乘除法的运算 { t[i]=rand()%4; } else//无乘除法的运算 { t[i]=rand()%2; } x=rand()%a[2]+1; y=rand()%a[2]+1; if(t[i]==0)//加法 { if((i+1)%a[5]==0)//判断是否换行 { cout<<i+1<<"·"<<x<<"+"<<y<<"="; result[i]=x+y; if(a[6]!=0) { for(j=0;j<a[6];j++) { cout<<endl; } } } else { cout<<i+1<<"·"<<x<<"+"<<y<<"="<<'\t'; } } if(t[i]==1)//减法,考虑是否存在负数 { if(a[3]==0)//不存在结果负数 { b=x; x=y; y=b; } if(a[3]==1)//存在结果是负数 { } if((i+1)%a[5]==0)//判断是否换行 { cout<<i+1<<"·"<<x<<"-"<<y<<"="; result[i]=x-y; if(a[6]!=0)//如果间隔数不是零 { for(j=0;j<a[6];j++) { cout<<endl; } } } else { cout<<i+1<<"·"<<x<<"-"<<y<<"="<<'\t'; } } if(t[i]==2)//乘法 { if((i+1)%a[5]==0)//判断是否换行 { cout<<i+1<<"·"<<x<<"*"<<y<<"="; result[i]=x*y; if(a[6]!=0) { for(j=0;j<a[6];j++) { cout<<endl; } } } else { cout<<i+1<<"·"<<x<<"*"<<y<<"="<<'\t'; } } if(t[i]==3)//除法,考虑结果是否有余数 { if(a[4]==1)//结果有余数 {} else { while(x%y!=0)//不能整除,重新生成随机函数 { x=rand()%a[2]+1; y=rand()%a[2]+1; }; } if((i+1)%a[5]==0)//判断是否换行 { cout<<i+1<<"·"<<x<<"/"<<y<<"="; result[i]=x/y; resulty[i]=x%y; if(a[6]!=0) { for(j=0;j<a[6];j++) { cout<<endl; } } } else { cout<<i+1<<"·"<<x<<"/"<<y<<"="<<'\t'; } } } cout<<"请输入解题答案"<<endl; for(i=0;i<a[0];i++) { cout<<i+1<<"."; if(t[i]==3) { cout<<"请输入商:"; cin>>daan[i]; cout<<"请输入余数:"; cin>>yushu[i]; } else { cin>>daan[i]; } if(t[i]==3) { if(daan[i]==result[i]&&yushu[i]==resulty[i]) { cout<<"答案正确,请输入下一题答案"<<endl; } else { cout<<"答案错误,正确答案为:"<<result[i]<<" "<<resulty[i]<<endl; } } else { if(daan[i]==result[i]) { cout<<"答案正确"<<endl; } else { cout<<"答案错误,正确答案为:"<<result[i]<<endl; } } } cout<<"结束,欢迎使用"<<endl; }
四、结果
五、实验总结
通过此次实验我收获颇多。第一,首先考虑结果的存放,我把她放到一个整形数组里,但是结果可能是有余数的,所以我就定义了两个数组一起作为结果
第二,然后我又想,只有除法的时候需要用到两个结果,一个用来存商,一个用来存余数,所以还得判断题目是否为除法。
第三,我们定义的程序有些不完整,因为我定义的数组为100,所以超过边界值就会出现溢出状况,会出现乱码
还有 通过两人合组,我能和我的小伙伴能够互补合作,编程的效率更高。
五、日志
项目记录 日志:
听课 |
编写程序 |
阅读相关书籍 |
网上查找资料 |
日总计 |
|
周一 |
2 |
0 |
1 |
0 |
3 |
周二 |
0 |
1 |
0.5 |
1 |
2.5 |
周三 |
0 |
3 |
0.5 |
1 |
4.5 |
周四 |
2 |
0.5 |
0.5 |
0 |
3 |
周五 |
0 |
3 |
0.5 |
1 |
4.5 |
周六 |
0 |
6 |
0.5 |
1 |
7.5 |
周日 |
|
|
|
|
|
周总计 |
4 |
13.5 |
3.5 |
4.5 |
25 |
时间记录日志
日期 |
开始 时间 |
结束时间 |
中断时间 |
净时间 |
活动 |
备注 |
星期一 |
14:00 |
16:00 |
10 |
100 |
上课 |
软件工程 |
|
18:00 |
19:00 |
0 |
60 |
阅读书籍 |
梦断代码 |
星期二 |
16:00 |
17:00 |
0 |
60 |
编程 |
四则运算 |
|
19:00 |
20:00 |
0 |
120 |
阅读书籍 上网 |
查找相关函数 |
星期三 |
13:00 |
17:00 |
60 |
180 |
编程 |
四则运算 |
|
19:00 |
21:00 |
30 |
120 |
阅读书籍 |
构建之法 |
星期四 |
14:00 |
16:00 |
10 |
100 |
上课 |
软件工程 |
|
19:00 |
20:00 |
0 |
60 |
编程 查找资料 |
四则运算 |
星期五 |
13:00 |
17:00 |
60 |
180 |
编程 |
四则运算 |
|
17:00 |
18:00 |
0 |
60 |
上网 |
查资料 |
星期六 |
9:00 |
11:00 |
30 |
120 |
编程 |
四则运算 |
|
13:00 |
18:00 |
30 |
270 |
编程 |
四则运算 |
缺陷记录日志:
日期 |
编号 |
类型 |
引入阶段 |
排除阶段 |
修复阶段 |
修复缺陷 |
3/18 |
1 |
结果的存储 |
|
|
20min |
|
考虑到除法出现小数,不造怎么存,后来写成商和余数的形式,都是整数 |
||||||
1 |
依然是存数的问题 |
|
|
2min |
|
|
商和余数定义成两个数组 |
||||||
3/29 |
2 |
程序结果不稳定 |
|
|
未解决 |
|
有时候正确结果出现乱码,考虑是结果溢出 |
||||||
|
|
|
|
|
|
|
|
||||||
|
|
|||||
|
|
我的伙伴 张瑶:http://www.cnblogs.com/zhangyao999/