标签:
一、设计思想
编写一个判断函数,由用户输入运算题后结果,并与正确结果对比,输出答题的对错数。
二、程序代码
#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; }
三、实验截图
四、实验心得
1.首先,程序中增加了用户在决定所出题目做出选择时,如果输入超出正确范围,报错重输。
2.以前编程不愿意用函数实现程序部分功能,导致程序写起来所有代码都在主函数中,功能模块不清晰。以后编程要注意经常使用函数调用。
3.分数的实现过于复杂,这个程序只实现了整数运算的结果判断。进行用户运算结果测试对于打印题目中的列数没有意义了,测试是与出题同步进行的,一边出题一边做题。
标签:
原文地址:http://www.cnblogs.com/luyu2783/p/4347924.html