1.实验题目。
将程序随机产生的算式,将它们计算的答案存到数组中,并将用户输入的答案也放到数组中,比较两个数组,判断用户答对多少道题。
3.实验代码。
#include<iostream> #include<stdlib.h> #include<string.h> #include<stdio.h> using namespace std; #include <ctime> #include <cstdlib> #define MAX 100000 void panduanchongfu() { int d,e,k,m,n, p; int o=0,b=0; cout<<"请输入要显示的四则运算的个数"<<endl; cin>>k; cout<<endl; int shuzi[200][4]; char yunsuanfu[4]={'+','-','*','/'}; char fuhao[16][2]={{'+','+'},{'+','-'},{'+','*'},{'+','/'},{'-','+'},{'-','-'},{'-','*'},{'-','/'},{'*','+'},{'*','-'},{'*','*'},{'*','/'},{'/','+'},{'/','-'},{'/','*'},{'/','/'}}; int g[100]; srand(time(0));//根据系统时间设置随机数种子 int r,t,temp; cout<<"-------------------"<<endl; cout<<"请输入产生式数字的范围。(请输入两个数字:如 10 50:代表产生式的数字范围为(10-50)"<<endl; cout<<"-------------------"<<endl; cin>>r>>t; cout<<endl; if(r>t) { temp=r; r=t; t=temp; } int a; cout<<"-------------------"<<endl; cout<<"0.无乘除法。"<<endl; cout<<"1.有乘除法。"<<endl; cout<<"请输入选项(0或1)"<<endl; cout<<"-------------------"<<endl; cin>>a; cout<<endl; if(a!=0) { cout<<"-------------------"<<endl; cout<<"0.无余数。"<<endl; cout<<"1.有余数。"<<endl; cout<<"请输入选项(0或1)"<<endl; cout<<"-------------------"<<endl; cin>>p; cout<<endl; } cout<<"-------------------"<<endl; cout<<"0.无分数。"<<endl; cout<<"1.有分数。"<<endl; cout<<"请输入选项(0或1)"<<endl; cout<<"-------------------"<<endl; int s; cin>>s; cout<<endl; for(int i=0;i<k;i++) { shuzi[i][0]=rand()%(t-r)+r;//取得区间[0,100)的整数 shuzi[i][1]=rand()%(t-r)+r; shuzi[i][2]=rand()%(t-r)+r; shuzi[i][3]=rand()%(t-r-1)+r+1; d=rand()%100; e=rand()%100; if(a==1||a==0) { switch(a) { case 0: n=e%2;//判断运算符号的随机数 m=d%2; break; case 1: n=e%4;//判断运算符号的随机数 m=d%4; break; } } else { cout<<"输入选项有误,请正确输入。"<<endl; cout<<"-------------------"<<endl; cout<<"0.无乘除法。"<<endl; cout<<"1.有乘除法。"<<endl; cout<<"请输入选项(0或1)"<<endl; cout<<"-------------------"<<endl; cin>>a; i=i-1; continue; } if((m==3&&shuzi[i][0]%shuzi[i][1]!=0&&p==0)||(n==3&&shuzi[i][1]%shuzi[i][2]!=0&&p==0)) { i=i-1; } else { if((shuzi[i][1]==0&&m==3&&a==0)||(shuzi[i][2]==0&&n==3&&a==0)) { i=i-1; } else { for(int l=0;l<16;l++) { if(yunsuanfu[m]==fuhao[l][0]&&yunsuanfu[n]==fuhao[l][1]) { g[o]=l; o++; } } for(int j=i-1;j>=0;j--) { if(shuzi[i][0]==shuzi[j][0]&&shuzi[i][1]==shuzi[j][1]&&shuzi[i][2]==shuzi[j][2]&&g[i]==g[j]) { i=i-1; break; } } } } } if(s==0) { for(i=0;i<k;i++) { if(g[i]==12||g[i]==13||g[i]==14) { cout<<"第"<<i+1<<"题:"<<shuzi[i][0]<<"÷"<<shuzi[i][1]<<fuhao[g[i]][1]<<shuzi[i][2]<<"="<<endl; } else if(g[i]==3||g[i]==7||g[i]==11) { cout<<"第"<<i+1<<"题:"<<shuzi[i][0]<<fuhao[g[i]][0]<<shuzi[i][1]<<"÷"<<shuzi[i][2]<<"="<<endl; } else if(g[i]==15) { cout<<"第"<<i+1<<"题:"<<shuzi[i][0]<<"÷"<<shuzi[i][1]<<"÷"<<shuzi[i][2]<<"="<<endl; } else cout<<"第"<<i+1<<"题:"<<shuzi[i][0]<<fuhao[g[i]][0]<<shuzi[i][1]<<fuhao[g[i]][1]<<shuzi[i][2]<<"="<<endl; } } else { for(i=0;i<k;i++) { int q0,q1,q2; q0=rand()%3; q1=rand()%3; q2=rand()%3; if(q0==1) { cout<<"第"<<i+1<<"题:"<<"("<<shuzi[i][0]<<"/"<<shuzi[i][3]<<")"<<fuhao[g[i]][0]<<shuzi[i][1]<<"÷"<<shuzi[i][2]<<"="<<endl; } else if(q0==0) { cout<<"第"<<i+1<<"题:"<<shuzi[i][0]<<fuhao[g[i]][0]<<shuzi[i][1]<<"÷"<<shuzi[i][2]<<"="<<endl; } else if(q1==1) { cout<<"第"<<i+1<<"题:"<<shuzi[i][0]<<fuhao[g[i]][0]<<"("<<shuzi[i][1]<<"/"<<shuzi[i][3]<<")"<<"÷"<<shuzi[i][2]<<"="<<endl; } else if(q1==0) { cout<<"第"<<i+1<<"题:"<<shuzi[i][0]<<fuhao[g[i]][0]<<shuzi[i][1]<<"÷"<<shuzi[i][2]<<"="<<endl; } else if(q2==1) { cout<<"第"<<i+1<<"题:"<<shuzi[i][0]<<fuhao[g[i]][0]<<shuzi[i][1]<<"÷"<<"("<<shuzi[i][2]<<"/"<<shuzi[i][3]<<")"<<"="<<endl; } else { cout<<"第"<<i+1<<"题:"<<shuzi[i][0]<<fuhao[g[i]][0]<<shuzi[i][1]<<"÷"<<shuzi[i][2]<<"="<<endl; } } } int h[MAX][2]; for(i=0;i<k;i++) { if(g[i]==0) { h[i][0]=shuzi[i][0]+shuzi[i][1]+shuzi[i][2]; } if(g[i]==1) { h[i][0]=shuzi[i][0]+shuzi[i][1]-shuzi[i][2]; } if(g[i]==2) { h[i][0]=shuzi[i][0]+shuzi[i][1]*shuzi[i][2]; } if(g[i]==3) { h[i][0]=shuzi[i][0]+shuzi[i][1]/shuzi[i][2]; h[i][1]=shuzi[i][1]%shuzi[i][2]; } if(g[i]==4) { h[i][0]=shuzi[i][0]-shuzi[i][1]+shuzi[i][2]; } if(g[i]==5) { h[i][0]=shuzi[i][0]-shuzi[i][1]-shuzi[i][2]; } if(g[i]==6) { h[i][0]=shuzi[i][0]-shuzi[i][1]*shuzi[i][2]; } if(g[i]==7) { h[i][0]=shuzi[i][0]-shuzi[i][1]/shuzi[i][2]; h[i][1]=shuzi[i][1]%shuzi[i][2]; } if(g[i]==8) { h[i][0]=shuzi[i][0]*shuzi[i][1]+shuzi[i][2]; } if(g[i]==9) { h[i][0]=shuzi[i][0]*shuzi[i][1]-shuzi[i][2]; } if(g[i]==10) { h[i][0]=shuzi[i][0]*shuzi[i][1]*shuzi[i][2]; } if(g[i]==11) { h[i][0]=shuzi[i][0]*shuzi[i][1]/shuzi[i][2]; h[i][1]=(shuzi[i][0]*shuzi[i][1])%shuzi[i][2]; } if(g[i]==12) { h[i][0]=shuzi[i][0]/shuzi[i][1]+shuzi[i][2]; } if(g[i]==13) { h[i][0]=shuzi[i][0]/shuzi[i][1]-shuzi[i][2]; } if(g[i]==14) { h[i][0]=shuzi[i][0]/shuzi[i][1]*shuzi[i][2]; } if(g[i]==15) { h[i][0]=shuzi[i][0]/(shuzi[i][1]*shuzi[i][2]); if(shuzi[i][0]%shuzi[i][1]!=0) h[i][1]=shuzi[i][0]%(shuzi[i][1]*shuzi[i][2]); else h[i][1]=(shuzi[i][0]&(shuzi[i][1]*shuzi[i][2]))/shuzi[i][1]; } } int w[100][2]; cout<<"请输入以上题的答案(当有除法时,输入两个数第一个数为商,第二个数为余数)"<<endl; for(i=0;i<k;i++) { if(p==0) { cout<<"请输入第"<<i+1<<"道题的答案:"<<endl; cin>>w[i][0]; } else { if(g[i]==3||g[i]==7||g[i]>=11) { cout<<"请输入第"<<i+1<<"道题的答案(先输入商,在输入余数):"<<endl; cin>>w[i][0]>>w[i][1]; } else { cout<<"请输入第"<<i+1<<"道题的答案:"<<endl; cin>>w[i][0]; } } } int f=0; for(i=0;i<k;i++) { if(w[i][0]==h[i][0]&&w[i][1]==h[i][1]) f++; } if(f==k) cout<<"全答对了。"<<endl; if(f==0) cout<<"全答错了。"<<endl; else if(f!=k) { cout<<"对了"<<f<<"道题"<<endl; cout<<"错了"<<k-f<<"道题"<<endl; } } int main() { panduanchongfu(); return 0; }
4.运行结果。
5.总结。
在编写中,应该使用户使用更加方便,应该加入一些提示,要考虑一些尽可能发生的情况。
6.psp
一、项目计划总结:
周活动总结表
姓名: 李明 日期:2015/3/22
日期 任务 |
听课 |
编写程序 |
阅读课本 |
准备考试 |
日总计 |
||
周日 |
|||||||
周一 |
|||||||
周二 |
100 |
20 |
120 |
||||
周三 |
15 |
15 |
|||||
周四 |
20 |
20 |
|||||
周五 |
100 |
60 |
20 |
180 |
|||
周六 |
60 |
20 |
80 |
||||
周总结 |
200 |
60 |
95 |
355 |
阶段时间和效率 周数(上一次周活动表的周数+1):
不包括上一周在内的累计时间
总计 |
|||||||
平均 |
|||||||
最大 |
|||||||
最小 |
以前各周的累计时间
总计 |
|||||||
平均 |
|||||||
最大 |
|||||||
最小 |
二、时间记录表:
学生 李明 日期 2015/3/22
教师 王建民 课程 PSP
日期 |
开始时间 |
结束时间 |
中断时间 |
净时间 |
活动 |
备注 |
3.20 |
19:00 |
20:00 |
60 |
编程 |
||
3.21 |
14:00 |
15:00 |
60 |
编程 |
三、缺陷记录日志:
学生 李明
日期 2015/2/22
教员 王建民
程序号 四则运算
日期 |
编号 |
类型 |
引入阶段 |
排除阶段 |
修复时间 |
修复缺陷 |
3.20 |
||||||
定义整型时少了分号。 |
||||||
3.21 |
||||||
少了大括号。 |