C++算术四则运算,随机数种子,除法整除,减法第一位大,统计所答题目各个运算正确率,输入一个非int字符退出随机答题并统计当前正确率,没有详细写注释,应该还有未知bug未解,能跑起来就可以了,哈哈!
运行结果测试如下
代码如下
#include <iostream>
#include <ctime>
#include <windows.h>
using namespace std;
//加减乘除累计题目次数
int m=0, n=0, j=0, k=0;
int g=0;
int M=0,N=0,J=0,K=0;
//生成1-100随机数
int ttran(){
clockid_t a = 0;
struct timespec p = {0, 0};
clock_gettime(a, &p);
srand((unsigned)p.tv_nsec);
//srand(100);
int b;
b = rand()%100+1;
//cout<<b<<endl;
return b;
}
//随机生成一个算式,返回算式计算结果
int ttmath(){
int a ,b ,c;
a = ttran();
Sleep(100);
b = ttran();
c = ttran()%4+1;
if(c ==1){
g=c;
cout<<a<<" + "<<b<<" = ";
m++;
return a+b;
}else if(c == 2){
g=c;
if(a>b){
cout<<a<<" - "<<b<<" = ";
n++;
return a-b;
}
while(1){
a = ttran();
Sleep(100);
b = ttran();
if(a>b){
cout<<a<<" - "<<b<<" = ";
n++;
return a-b;
}
}
}else if(c == 3){
g=c;
cout<<a<<" * "<<b<<" = ";
j++;
return a*b;
}else{
g=c;
if(a%b == 0){
cout<<a<<" / "<<b<<" = ";
k++;
return a/b;
}
while(1){
a = ttran();
Sleep(100);
b = ttran();
if(a%b == 0){
cout<<a<<" / "<<b<<" = ";
k++;
return a/b;
}
}
//return a/b;
}
//return c;
}
int main(){
int b = 1;
int c;
int d = 0;
int list[100];
cout<<"start-------------"<<endl;
while (1){
//累计100道结束
if((m+n+j+k) == 100){
cout<<"finish 100"<<endl;
goto ffg;
}
cout<<"the "<<b++<<" ";
int a ;
a = ttmath();
cin>>c;
//输入非int型提前统计结束
if(cin.fail()){
switch (g){
case 1:
m--;
break;
case 2:
n--;
break;
case 3:
j--;
break;
case 4:
k--;
break;
}
goto ffg;
}
if(c == a){
continue;
}else{
list[d] = b-1;
d++;
switch (g){
case 1:
M++;
break;
case 2:
N++;
break;
case 3:
J++;
break;
case 4:
K++;
break;
}
}
}
ffg:
cout<<"in all: "<<m+n+j+k<<" ; Total Error: "<<d<<" ;please check: ";
for(int l = 0; l<d; l++){
cout<<list[l]<<", ";
}
cout<<endl<<"Accuracy:"<<((m+n+j+k-d)*100)/(m+n+j+k)<<"%"<<endl;
if(m!=0){
cout<<"+ "<<"in all:"<<m<<" error:"<<M<<" Accuracy:"<<(m-M)*100/m<<"%"<<endl;
}
if(n!=0){
cout<<"- "<<"in all:"<<n<<" error:"<<N<<" Accuracy:"<<(n-N)*100/n<<"%"<<endl;
}
if(j!=0){
cout<<"* "<<"in all:"<<j<<" error:"<<J<<" Accuracy:"<<(j-J)*100/j<<"%"<<endl;
}
if(k!=0){
cout<<"/ "<<"in all:"<<k<<" error:"<<K<<" Accuracy:"<<(k-K)*100/k<<"%"<<endl;
}
char q;
cout<<"input q ---exit"<<endl;
while ((q = getchar()) != 'q');
}