一、实验题目
这次我的程序,是对四则运算2的进一步扩展
我选的是第一个方向:程序能够接受用户输入的答案,并能判定对错,最后还可以给出总共对/错的数量。
二、实验扩展思想
1、因为我给每个题目都编了序号,所以再输入答案的时候只需按着题目的顺序输入就可以了。
2、判断对错,我是事先定义了一个数组,来存放正确答案,最后把用户输入的答案和正确答案做比较即可
3、给出对/错的数量,这个比较容易,只需要设计两个变量,一个用来计算正确的个数,一个用来计算错误的个数,最后给出答案即可。
三、实验代码
//作者: 信1201-2班 司新红
#include<iostream.h>
#include<stdlib.h>
#include<time.h>
void hycc()
{
int f;//定义要测试的是四则运算是几进制
cout<<"请输入要测试的四则运算是几进制?"<<endl;
cin>>f;
int x,y,z,t; //x,y分别表示所产生的两个数,z来控制做加减乘除
int e;//输入每行算数题的个数
srand(time(NULL));
int n;
int b;//表示有无负数
int a;//用来输入行间距
int d;//代表输入的答案
float daan[100];//代表正确答案
int zq=0;//用来表示正确答案的个数
int cw=0;//用来表示错误答案的个数
cout<<"需要列出多少到数学题?"<<endl;
cin>>n; //n代表出题的个数
cout<<"加减有无负数?(0代表有负数,1代表无负数)"<<endl;
cin>>b;
cout<<"每行需要打印几个算数题?"<<endl;
cin>>e;
cout<<"打印时行间距是多少?"<<endl;
cin>>a;
cout<<"********************************"<<endl;
for(int i=0;i<n;i++)
{
x=rand()%f;
y=rand()%f;
z=rand()%4;
switch(z)
{
case 0:
cout<<i+1<<"、 "<<x<<"+"<<y<<"="<<" ";
daan[i+1]=x+y;
break;
case 1:
if(b==1)
{
if(x<y)
{
t=x;
x=y;
y=t;
}
cout<<i+1<<"、 "<<x<<"-"<<y<<"="<<" ";
}
else if(b==0)
{
cout<<i+1<<"、 "<<x<<"-"<<y<<"="<<" ";
}
daan[i+1]=x-y;
break;
case 2:
cout<<i+1<<"、 "<<x<<"*"<<y<<"="<<" ";
daan[i+1]=x*y;
break;
case 3:
if(y!=0)
{
cout<<i+1<<"、 "<<x<<"÷"<<y<<"="<<" ";
}
else
{
i=i-1;
}
daan[i+1]=(float)x/y;
break;
default:
cout<<"超出测试范围"<<endl;
break;
}
if((i+1)%e==0)
{
for(int c=0;c<=a;c++)
{
cout<<endl;
}
}
if((i+1)==n)
{
cout<<endl;
}
}
for(i=1;i<=n;i++)
{
cout<<"请作答:"<<endl;
cout<<i<<"、";
cin>>d;
if(d==daan[i])
{
cout<<"恭喜您,回答正确!"<<endl;
cout<<endl;
zq=zq+1;
}
else
{
cout<<"回答错误,正确答案为:"<<" "<<daan[i]<<endl;
cout<<endl;
cw=cw+1;
}
}
cout<<"回答正确的数量为:"<<" "<<zq<<"个"<<endl;
cout<<"回答错误的数量为:"<<" "<<cw<<"个"<<endl;
}
void bhycc()
{
int f;
cout<<"请输入要测试的四则运算是几进制?"<<endl;
cin>>f;
int e;//输入每行算数题的个数
int x,y,z,t; //x,y分别表示所产生的两个数,z来控制做加减乘除
srand(time(NULL));
int n;//n代表出题个数
int b;//代表加减有无负数
int a;//用来输入行间距
int d;//代表输入的答案
int daan[100];//代表正确答案
int zq=0;//用来表示正确答案的个数
int cw=0;//用来表示错误答案的个数
cout<<"需要列出多少到数学题"<<endl;
cin>>n; //n代表出题的个
cout<<"加减有无负数?(0代表有负数,1代表无负数)"<<endl;
cin>>b;
cout<<"每行需要打印几个算数题?"<<endl;
cin>>e;
cout<<"打印时行间距是多少?"<<endl;
cin>>a;
cout<<"********************************"<<endl;
for(int i=0;i<n;i++)
{
x=rand()%f;
y=rand()%f;
z=rand()%2;
switch(z)
{
case 0:
cout<<i+1<<"、 "<<x<<"+"<<y<<"="<<" ";
daan[i+1]=x+y;
break;
case 1:
if(b==1)
{
if(x<y)
{
t=x;
x=y;
y=t;
}
cout<<i+1<<"、 "<<x<<"-"<<y<<"="<<" ";
}
else if(b==0)
{
cout<<i+1<<"、 "<<x<<"-"<<y<<"="<<" ";
}
daan[i+1]=x-y;
break;
default:
cout<<"超出测试范围"<<endl;
break;
}
if((i+1)%e==0)
{
for(int c=0;c<=a;c++)
{
cout<<endl;
}
}
if((i+1)==n)
{
cout<<endl;
}
}
for(i=1;i<=n;i++)
{
cout<<"请作答:"<<endl;
cout<<i<<"、";
cin>>d;
if(d==daan[i])
{
cout<<"恭喜您,回答正确!"<<endl;
cout<<endl;
zq=zq+1;
}
else
{
cout<<"回答错误,正确答案为:"<<" "<<daan[i]<<endl;
cout<<endl;
cw=cw+1;
}
}
cout<<"回答正确的数量为:"<<" "<<zq<<"个"<<endl;
cout<<"回答错误的数量为:"<<" "<<cw<<"个"<<endl;
}
int main()
{
int c;//c代表输入是否继续的数字
char ch;
cout<<"是否支持乘除?(Y/N)"<<endl;
cin>>ch;
if(ch==‘Y‘||ch==‘y‘)
{
hycc();
cout<<"********************************"<<endl;
}
else if(ch==‘N‘||ch==‘n‘)
{
bhycc();
cout<<"********************************"<<endl;
}
else
{
cout<<"输入错误,无法为您出题!"<<endl;
}
cout<<"要继续答题吗?(0:继续 1:退出)"<<endl;
cin>>c;
if(c==0)
{
cout<<endl;
main();
}
else
{
cout<<endl;
return 0;
}
return 0;
}
四运行结果


五、PSP
学生 司新红
日期 2014.3.17
教师 王建民
程序号_______________
项目计划总结
|
|
编程 |
阅读书籍 |
课后复习 |
日总计 |
|
周日 |
|
|
|
|
|
周一 |
|
|
|
|
|
周二 |
30 |
30 |
90 |
150 |
|
周三 |
90 |
30 |
|
120 |
|
周四 |
120 |
30 |
|
150 |
|
周五 |
|
|
|
|
|
周六 |
|
|
|
|
|
周总计 |
240 |
90 |
90 |
420 |
时间记录总结
|
日期 |
开始 |
结束 |
中断时间 |
净时间 |
活动 |
备注 |
C |
U |
|
3月17日 |
4:00 |
5:00 |
无 |
160 |
编程 |
|
|
|
|
|
8:00 |
9:30 |
30 |
60 |
复习 |
写作业 |
|
|
|
|
10:00 |
10:30 |
无 |
30 |
阅读书籍 |
|
|
|
|
3月18日 |
10:00 |
11:30 |
15 |
75 |
编程 |
休息 |
|
|
|
|
10:00 |
10:30 |
无 |
30 |
阅读书籍 |
|
|
|
|
3月19日 |
7:00 |
9:00 |
无 |
120 |
编程 |
|
|
|
缺陷记录日志
|
日期 |
编号 |
类型 |
引入阶段 |
排除阶段 |
修复时间 |
修复缺陷 |
|
3月17日 |
01 |
程序 |
编码 |
编译 |
20min |
求几个数中最大值时一直报错,最后我把所求的和放在了一个数组中 |
|
3月18日 |
02 |
程序 |
编码 |
编译 |
10min |
忘记给正确答案的个数和错误答案的个数赋值 |
|
|
03 |
程序 |
编码 |
编译 |
30min |
计算除法的正确答案时,不能是浮点型,然后我就把答案这个数组定义成了浮点型 |
|
3月19日 |
04 |
程序 |
编码 |
编译 |
10min |
在不含有乘除的函数中,忘了给正确答案赋值,导致结果报错 |
|
|
05 |
程序 |
编码 |
编译 |
10min |
变量用错,运行时运行无响应了。 |
原文:http://www.cnblogs.com/zgsxh/p/4355404.html