30道四则运算题的第四次补充
一、题目要求
让程序能接受用户输入答案,并判定对错。最后给出总共对/错 的数量。
二、设计思想
1.用一个数组存取正确的结果,用另一个数组存储用户输入的答案,把两个数组进行比较,输出正确和错误的结果数目。
三、源代码
/** 作者:程鹏远 题目:30道2年纪四则运算题目 */ #include <iostream.h> #include <stdlib.h> #include <conio.h> int main() { //初始化 int zong=0; int zong0=0; int a,b,c; int num1,num2; int num; int chufa; int k,jiange; int zhengchu; int j=0; int chengfa; int con; int q[1000],w[1000],e[1000],r[1000]; //请输入数的范围,中间用空格隔开: cout<<"请输入数的范围,中间用空格隔开:"; cin>>num1>>num2; if(num1>num2) { cout<<"第一个数应该小于第二个数,请重输:"; cin>>num1>>num2; } //控制题目的个数,num cout<<"其输入要出多少道题目:"; cin>>num; if(num>(4*(num2-num1)^2)) { cout<<"您输入的题目数量太多,会造成重复,请重新输入数目:"; cin>>num; } //打印格式 cout<<"一行几道题,行间距是几,中间空格:"; cin>>k>>jiange; if(jiange>=5||jiange<0) { cout<<"您输入的间距太大或为负数,请重输:"; cin>>jiange; } //是否要除法 cout<<"是否要除法?是输入1,否输入0:"; cin>>chufa; if(chufa==1) { cout<<"是否要有余数,是输入1,否输0:"; cin>>zhengchu; } //是否要乘法 cout<<"是否要乘法,是输入1,否输入0:"; cin>>chengfa; cout<<endl; for(int i=0;i<num;i++) { cout<<i+1<<"、"; q[i]=(rand()%(num2-num1+1))+num1; w[i]=(rand()%(num2-num1+1))+num1; if(chufa==1) { if(chengfa==1) { c=rand()%4;//0-3 } else { c=rand()%3;//0-2 } } else { if(chengfa==1) { c=rand()%3+1;//1-3 } else { c=rand()%2+1;//1-2 } } switch (c) { case 1: cout<<q[i]<<"+"<<w[i]<<"="<<"\t"; e[i]=q[i]+w[i]; break; case 2: if(q[i]>w[i]) { cout<<q[i]<<"-"<<w[i]<<"="<<"\t"; e[i]=q[i]-w[i]; } else { cout<<w[i]<<"-"<<q[i]<<"="<<"\t"; e[i]=w[i]-q[i]; } break; case 3: cout<<q[i]<<"*"<<w[i]<<"="<<"\t"; e[i]=q[i]*w[i]; break; case 0://除法 if(zhengchu==1)//有余数 { if(w[i]==0) { cout<<w[i]<<"/"<<q[i]<<"="<<"\t"; e[i]=w[i]/q[i]; } else { cout<<q[i]<<"/"<<w[i]<<"="<<"\t"; e[i]=q[i]/w[i]; } } else { while((j<100000)&&(q[i]!=0)&&(w[i]!=0)&&(q[i]%w[i]==0)) { cout<<q[i]<<"/"<<w[i]<<"="<<"\t"; e[i]=q[i]/w[i]; j++; } if((q[i]!=0)&&(w[i]!=0)&&(q[i]%w[i]==0)) { cout<<q[i]<<"/"<<w[i]<<"="<<"\t"; e[i]=q[i]/w[i]; //i++; } else { int j=0; while(j<100000) { q[i]=(rand()%(num2-num1+1))+num1; w[i]=(rand()%(num2-num1+1))+num1; if((q[i]!=0)&&(w[i]!=0)&&(q[i]%w[i]==0)) { cout<<q[i]<<"/"<<w[i]<<"="<<"\t"; e[i]=q[i]/w[i]; //i++; j=100000; j++; } else { j++; } } } } break; } if((i+1)%k==0) { cout<<endl; for(int m=0;m<jiange;m++) { cout<<endl; } } } cout<<"请答题:"<<endl; for(i=0;i<num;i++) { cout<<"题目"<<i+1<<"."; cin>>r[i]; if(e[i]==r[i]) { cout<<"正确!"<<endl; zong++; } else { cout<<"错误!"<<endl; zong0++; } } cout<<endl<<"正确结果有"<<zong<<"个"; cout<<endl<<"错误结果有"<<zong0<<"个"<<endl; //继续吗? cout<<"继续吗?是输入1,否输入0:"<<endl; cin>>con; if(con==1) { cout<<endl; main(); } else { return 0; } getch(); return 0; }
四、结果截图
五、心得体会
程序中我一直没有用到指针及相关的知识。用数组的知识实现了内容,我认为指针跟数组有某种关系,指针可能就是不连续的数组。
六、PSP0级日志
一、项目计划总结:
周活动总结表
姓名:程鹏远 日期:3月22日
日期 任务 |
听课 |
编写程序 |
阅读课本 |
准备考试 |
日总计 |
周日 |
|
105 |
|
|
105 |
周一 |
|
|
|
|
|
周二 |
|
|
|
|
|
周三 |
|
|
|
|
|
周四 |
|
|
|
|
|
周五 |
|
|
|
|
|
周六 |
|
|
|
|
|
周总结 |
|
|
|
|
|
阶段时间和效率 第2 周数(上一次周活动表的周数+1):
不包括上一周在内的累计时间
总计 |
|
|
|
|
|
|
|
平均 |
|
|
|
|
|
|
|
最大 |
|
|
|
|
|
|
|
最小 |
|
|
|
|
|
|
|
以前各周的累计时间
总计 |
105 |
|
|
|
|
|
|
平均 |
105 |
|
|
|
|
|
|
最大 |
105 |
|
|
|
|
|
|
最小 |
105 |
|
|
|
|
|
|
二、时间记录表:
学生 程鹏远 日期 3月22日
教师 王建民 课程 软件工程
日期 |
开始时间 |
结束时间 |
中断时间 |
净时间 |
活动 |
备注 |
3/22 |
1:05 |
2:55 |
10min |
1小时40分钟 |
编写30道四则运算题目 |
|
三、缺陷记录日志:
学生 程鹏远
日期 3月22日
教员 王建民
程序号
日期 |
编号 |
类型 |
引入阶段 |
排除阶段 |
修复时间 |
修复缺陷 |
3/22 |
01 |
20 |
编码 |
编码 |
3分钟 |
|
Ctrl+H整个文档的一个替换 |