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整个文档的一个替换 |
||||||

浙公网安备 33010602011771号