关闭

四则运算程序 进一步改进代码并新增答题测试功能

发表于:2015-4-16 12:54

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:luyu2012    来源:51Testing软件测试网原创

  一、设计思想
  编写一个判断函数,由用户输入运算题后结果,并与正确结果对比,输出答题的对错数。
  二、程序代码
#include "stdafx.h"
#include "stdlib.h"      //调用其中随机函数
#include "iostream.h"
#include "time.h"
int wrong=0,right=0;
void Addjudge(int k1,int k2)
{
int k3;
cout<<"请回答"<<k1<<"+"<<k2<<"=";
cin>>k3;
if(k1+k2!=k3)
{
cout<<"回答错误"<<endl;
wrong++;
}
else
{
cout<<"回答正确"<<endl;
right++;
}
}//判断加法运算是否正确
void Subjudge(int k1,int k2)
{
int k3;
cout<<"请回答"<<k1<<"-"<<k2<<"=";
cin>>k3;
if(k1-k2!=k3)
{
cout<<"回答错误"<<endl;
wrong++;
}
else
{
cout<<"回答正确"<<endl;
right++;
}
}//判断减法运算是否正确
void Chengjudge(int k1,int k2)
{
int k3;
cout<<"请回答"<<k1<<"*"<<k2<<"=";
cin>>k3;
if(k1*k2!=k3)
{
cout<<"回答错误"<<endl;
wrong++;
}
else
{
cout<<"回答正确"<<endl;
right++;
}
}//判断乘法运算是否正确
void Chujudge(int k1,int k2)
{
int k3;
cout<<"请回答"<<k1<<"/"<<k2<<"=";
cin>>k3;
if(k1/k2!=k3)
{
cout<<"回答错误"<<endl;
wrong++;
}
else
{
cout<<"回答正确"<<endl;
right++;
}
}//判断除法运算是否正确
int main(int argc, char* argv[])
{
int a[6],ch;      //定义一个数组,用来存放可控参数
int temp;
srand((unsigned)time(NULL)); //使随机产生的式子每次不重复
int k1,k2;  //k1,k2为两个随机数,产生n个式子
cout<<"请输入出题数目:"<<endl;
cin>>a[0];
if(a[0]<0)
{
cout<<"出错!请重新输入!"<<endl;
cin>>a[0];
}
//输入出题数目a[0]
cout<<"请输入是否有乘除(有->1;   无->0):"<<endl;
cin>>a[1];
while(a[1]<0||a[1]>1)
{
cout<<"错误!请正确输入操作序号(0~1):";
cin>>a[1];
}
//输入是否乘除a[1]
cout<<"请输入出数值范围:";
cin>>a[2];
//输入数值范围a[2]
cout<<"请输入是否选择分数(有->1;   无->0):"<<endl;
cin>>a[3];
while(a[3]<0||a[3]>1)
{
cout<<"错误!请正确输入操作序号(0~1):";
cin>>a[3];
}
//输入是否有分数a[3]
cout<<"请输入结果是否有负数(有->1;   无->0):"<<endl;
cin>>a[4];
while(a[4]<0||a[4]>1)
{
cout<<"错误!请正确输入操作序号(0~1):";
cin>>a[4];
}
//输入结果是否为负数a[4]
cout<<"请输入几列:"<<endl;
cin>>a[5];
if(a[5]<0)
{
cout<<"出错!请重新输入!"<<endl;
cin>>a[5];
}
//输入几列a[5]
for(int i=1;i<=a[0];i++)      //由用户决定打印多少道题a[0]
{
if(a[3]==0){
k1=rand()%(a[2]);   //随机产生a[2]以内的数,a[2]是由用户输入的数值范围
k2=rand()%(a[2]);
if(a[4]==0)         //控制结果没有负数,如果相减出现负数,则交换两个数
{
if(k1<k2)
{
temp=k1;
k1=k2;
k2=temp;
}
}
else
{
k1=rand()%(a[2]);
k2=rand()%(a[2]);
}
if(a[1]==1){           //a[1]为控制乘除参数
ch=rand()%4;      //ch有四种情况,加减乘除
}
else
ch=rand()%2;      //ch有两种情况,加减,没有乘除
if((i+1)%a[5]==0)      //a[5]为打印列数,式子个数除以列数的余数决定了它的位置
{
cout<<endl;
}
switch(ch)
{
case 0:
Addjudge(k1,k2);
break;
case 1:
Subjudge(k1,k2);
break;
case 2:
Chengjudge(k1,k2);
break;
case 3:
Chujudge(k1,k2);
break;
}
}
else
{
int n1,n2,n3,n4;
n1=rand()%20;   //随机产生20以内的数
n2=rand()%20;
n3=rand()%20;
n4=rand()%20;
if(a[1]==1){
ch=rand()%4;
}
else
ch=rand()%2;       //随机产生一个运算符号
if((i+1)%a[5]==0)
{
cout<<endl;
}
switch(ch)        //输出分数
{
case 0:
cout<<"("<<n1<<"/"<<n2<<")+("<<n3<<"/"<<n4<<")="<<"\t\t";
break;
case 1:
cout<<"("<<n1<<"/"<<n2<<")-("<<n3<<"/"<<n4<<")="<<"\t\t";
break;
case 2:
cout<<"("<<n1<<"/"<<n2<<")*("<<n3<<"/"<<n4<<")="<<"\t\t";
break;
case 3:
cout<<"("<<n1<<"/"<<n2<<")/("<<n3<<"/"<<n4<<")="<<"\t\t";
break;
}
}
}
cout<<"您总做了"<<a[0]<<"个题,正确"<<right<<"的道,错误"<<wrong<<"道"<<endl;
cout<<endl;
return 0;
}
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号