#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
void Comment(int i); //声明
/*生成一个随机数*/
int Number_gen(int i)
{
switch(i){
case 1:return rand()%10;break;
case 2:return (rand()%90)+10;break;
case 3:return (rand()%900)+100;break;
case 4:return (rand()%9000)+1000;break;
case 5:return (rand()%90000)+10000;break;
default:break;
};
}
/*加法*/
void Add(int n)
{
printf("现在行的是%d位数加法运算\n",n);
int count=0;
for(int i=1;i<=10;i++){
int a = Number_gen(n);
int b = Number_gen(n);
printf("%d + %d = ",a,b);
int result;scanf("%d",&result);
if(result==a+b){
count++;
Comment(1);
}
else Comment(0);
}
double rate = count / 10;
if(rate<0.75) printf("很遗憾,你没有过关,快去找老师补课哦!\n");
else printf("祝贺!你已经通过了本级测试!\n");
}
/*减法*/
void Subtr(int n)
{
printf("现在行的是%d位数减法运算\n",n);
int count=0;
for(int i=1;i<=10;i++){
int a = Number_gen(n);
int b = Number_gen(n);
printf("%d - %d = ",a,b);
int result;scanf("%d",&result);
if(result==a-b){
count++;
Comment(1);
}
else Comment(0);
}
double rate = count / 10;
if(rate<0.75) printf("很遗憾,你没有过关,快去找老师补课哦!");
else printf("祝贺!你已经通过了本级测试!");
}
/*乘法*/
void Mult(int n)
{
printf("现在行的是%d位数乘法运算\n",n);
int count=0;
for(int i=1;i<=10;i++){
int a = Number_gen(n);
int b = Number_gen(n);
printf("%d * %d = ",a,b);
int result;scanf("%d",&result);
if(result==a*b){
count++;
Comment(1);
}
else Comment(0);
}
double rate = count / 10;
if(rate<0.75) printf("很遗憾,你没有过关,快去找老师补课哦!\n");
else printf("祝贺!你已经通过了本级测试!\n");
}
/*除*/
void Divi(int n)
{
printf("现在行的是%d位数除法运算(注意保留6位有效小数点)\n",n);
int count=0;
for(int i=1;i<=10;i++){
int a = Number_gen(n);
int b = Number_gen(n);
if(n==1) //两位除法特殊,除数不能为0
{
int b = (rand()%9)+1; //除数不能为0
}
printf("%d / %d = ",a,b);
float result;scanf("%f",&result); //生成数字的时候,应该循环一系列数字
if(result==1.0*a/b){
count++;
Comment(1);
}
else Comment(0);
}
float rate = count / 10;
if(rate<0.75) printf("很遗憾,你没有过关,快去找老师补课哦!\n");
else printf("祝贺!你已经通过了本级测试!\n");
}
/*混合*/
void Mix(int n)
{
int count;
for(int i=0;i<10;i++){
float result;
int c = rand()%4; //随机生成加减乘除
int a = Number_gen(n);
int b = Number_gen(n);
switch(c){
case 0: //加法
printf("%d + %d = ",a,b);
scanf("%f",&result);
if(result==a+b){
count++;
Comment(1);
}
else Comment(0);break;
case 1: //减法
printf("%d - %d = ",a,b);
scanf("%f",&result);
if(result==a-b){
count++;
Comment(1);
}
else Comment(0);break;
break;
case 2:
printf("%d * %d = ",a,b);
scanf("%f",&result);
if(result==a*b){
count++;
Comment(1);
}
else Comment(0);break;
break; //乘法
case 3:
if(n==1) //两位除法特殊,除数不能为0
{
int b = (rand()%9)+1;
}
printf("%d / %d = ",a,b);
scanf("%f",&result);
if(result==1.0*a/b){
count++;
Comment(1);
}
else Comment(0);break;
break; //除法
default:break;
};
}
float rate = count / 10;
if(rate<0.75) printf("很遗憾,你没有过关,快去找老师补课哦!\n");
else printf("祝贺!你已经通过了本级测试!\n");
}
/*评语随机生成函数*/
void Comment(int i)
{
if(i==1){
int j = rand()%3;
switch(j){
case 0:printf("棒极了!\n");break;
case 1:printf("太好了!\n");break;
case 2:printf("你好棒哦!\n");break;
default:break;
}
}
else if(i==0){
int k = rand()%4;
switch(k){
case 0:printf("请再试一次!\n");break;
case 1:printf("别灰心!\n");break;
case 2:printf("失败是成功之母!\n");break;
case 3:printf("继续加油哦\n");break;
default:break;
}
}
}
int main()
{
srand((unsigned)time(NULL));
while(true){
/*交互界面*/
int choice1,choice2;
printf("运算选择:\n1 加法\t 2 减法\t 3 乘法\t 4 除法\t 5 四种运算类型的随机混合\n\n");
printf("难度选择:\n1 一位数字运算\n2 两位数字运算\n3 三位数字运算\n4 四位数字运算\n5 五位数字运算\n\n");
printf("键入运算难度和难度选择:");scanf("%d%d",&choice1,&choice2);
/*难度选择*/
switch(choice1){
case 1:Add(choice2);break;
case 2:Subtr(choice2);break;
case 3:Mult(choice2);break;
case 4:Divi(choice2);break;
case 5:Mix(choice2);break;
}
}
return 0;
}
-
- 允许用户选择一种类型的算术运算来学习。选择1表示只有加法运算,2表示只有减法运算,3表示只有乘法运算,4表示只有除法运算,5表示上面四种运算类型的随机混合。
- 允许用户输入难度等级。在难度等级为1时,程序只使用一位数字完成算术运算;在难度等级为2时,程序最多使用两位数;依此类推。
- 对于相应的运算类型和难度等级,利用rand函数产生两个正整数,接着程序应显示诸如“6×7=”之类的问题,然后学生输入答案。接下来程序会检查学生的答案,如果回答正确,打印出诸如“棒极了!”、“太好了!”、“你好棒哦!”之类的评语,随后问另一个问题。如果回答错误,打印出诸如“请再试一次!”、“别灰心!”、“失败是成功之母!”、“继续加油哦!”之类的评语,然后让学生继续尝试回答同样的问题,直到最后回答正确。
- 统计学生回答正确和回答错误的次数。学生回答10次以后,程序应该计算回答正确的百分比。如果百分比低于75%,那么程序应打印“很遗憾,你没有过关,快去找老师补课哦!”,然后重置程序,这样另一学生可以使用它。如果百分比大于等于75%,则显示“祝贺!你已经通过了本级测试!”,然后重置程序,这样另一学生可以使用它。