#include<cstdlib>
#include<ctime>
#include<conio.h>
#include<iostream>
using namespace std;
const int N=10;
double add(int min,int max,int n);
double sub(int min,int max,int n);
double mul(int min,int max,int n);
double div(int min,int max,int n);
void main()
{
srand((unsigned)time(NULL));//初始化亂數發生器
int imin,imax,k;
double s;
char ch='1';
while(ch!='0');
{
cout<<"\t---------小學生四則運算練習器---------\n";
cout<<"\n請選擇運算型別";
cout<<"\n\n";
cout<<"\t\t0.結束\n" <<"\t\t1.加法運算\n"<<"\t\t2.減法運算\n"
<<"\t\t3.乘法運算\n" <<"\t\t4.除法運算\n";
cout<<"\t\t請選擇 (0-4):";
ch=getch();
while(ch=='0') break;
while(ch>'4') continue;
cout<<"\n\n";
cout<<"\n請選擇運算元范圍的型別:";
cout<<"\n\n";
cout<<"\n\t\t1 0---9\n" <<"\t\t2 0---99\n" <<"\t\t3 0---999\n" <<"\t\t4 0---9999\n";
cin>>k;
switch(k)
{
case 1:imin=0,imax=9;break;
case 2:imin=0,imax=99;break;
case 3:imin=0,imax=999;break;
case 4:imin=0,imax=9999;break;
}
switch(ch)
{
case'1'://加法運算
s=add(imin,imax,N); break;
case'2'://減法運算
s=sub(imin,imax,N); break;
case'3'://乘法運算
s=mul(imin,imax,N); break;
case'4'://除法運算
s=div(imin,imax,N); break;
}//
cout<<"本次測驗得分:"<<s<<endl;
system("pause");
}
while(ch!='0');
}
double add(int min,int max,int n)
{
int a,b,c,ans,ok=0;
for(int i=0;i<n;i++)
{
a=rand()%(max-min+1)+min;
b=rand()%(max-min+1)+min; //計算標準答案,顯示題目,用戶回答
c=a+b;
cout<<"第"<<i+1<<"題:"<<a<<"+"<<b<<"=";
cin>>ans;
for(int j=0;j<2;j++)
{
if(ans!=c)
{
cout<<"答案錯誤,請重新輸入!"<<"\t"<<"第"<<i+1<<"題:"<<a<<"+"<<b<<"=";
cin>>ans;
}
else
ok++;continue;
}
if(ans!=c)
cout<<"正確結果為"<<c<<endl;
}
return ok*10.0/2;
}
double sub(int min,int max,int n)
{
int a,b,c,ans,ok=0;
for(int i=0;i<n;i++){ //產生兩個運算元
a=rand()%(max-min+1)+min;
b=rand()%(max-min+1)+min;
if(a<b)
c=a,a=b,b=c; //計算標準答案,顯示題目,用戶回答
c=a-b;
cout<<"第"<<i+1<<"題:"<<a<<"-"<<b<<"=";
cin>>ans;
for(int j=0;j<2;j++)
{
if(ans!=c)
{
cout<<"答案錯誤,請重新輸入!"<<"\t"<<"第"<<i+1<<"題:"<<a<<"-"<<b<<"=";
cin>>ans;
}
else
ok++;continue;
}
if(ans!=c)
cout<<"正確結果為"<<c<<endl;
}
return 10.0*ok/2;
}
double mul(int min,int max,int n)
{
int a,b,c,ans,ok=0;
for(int i=0;i<n;i++)//產生兩個運算元
{
a=rand()%(max-min+1)+min;
b=rand()%(max-min+1)+min;//計算標準答案,顯示題目,用戶回答
c=a*b;
cout<<"第"<<i+1<<"題:"<<a<<"*"<<b<<"=";
cin>>ans;
for(int j=0;j<2;j++)
{
if(ans!=c)
{
cout<<"答案錯誤,請重新輸入!"<<"\t"<<"第"<<i+1<<"題:"<<a<<"*"<<b<<"=";
cin>>ans;
}
else
ok++;continue;
}
if(ans!=c)
cout<<"正確答案為"<<c<<endl;
}
return 10.0*ok/2;
}
double div(int min,int max,int n)
{
int a,b,c,ans,ok=0;
for(int i=0;i<n;i++)
{
//產生兩個運算元
do
{
a=rand()%(max-min+1)+min;
b=rand()%(max-min+1)+min;
if(a==0)a+=1;
if(b==0)b+=1;
if(a<b)
{
c=a;
a=b;
b=c;
}
}
while(a%b!=0);//計算標準答案,顯示題目,用戶回答。
c=a/b;
cout<<"第"<<i+1<<"題:"<<a<<"/"<<b<<"=";
cin>>ans;
for(int j=0;j<2;j++)
{
if(ans!=c)
{
cout<<"答案錯誤,請重新輸入!"<<"\t"<<"第"<<i+1<<"題:"
<<a<<"/"<<b<<"=";
cin>>ans;
}
else
ok++;continue;
}
if(ans!=c)
cout<<"正確結果為"<<c<<endl;
}
return 10.0*ok/2;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/14225.html
標籤:基礎類
上一篇:求大佬指點一下思路
