作业要求
像《构建之法》的人物阿超那样,写一个能自动生成小学四则运算题目的命令行 “软件”。 可以使用C,C++,或者C#等语言实现。
分别能够实现小学一、二、三、四、五年级的四则运算要求, 逐步实现各个年级的难度
要求能够通过输入来选择不同年级,每个年级还得区分难,中,易三个等级
对于三、四、五年级需要支持括号与多个运算符
程序支持判断对错及累计得分与时间
一次可以出100道题目,而且不能重复(比如2+3 与 3+2 算重复的)
充分发挥想象增加满足小学生数学检测需要的功能
主要代码
char getSignal(); //获取随机运算符函数 int random(double,double); //获取随机数函数 int getResult(int,int,char); //结果计算函数 int takeTest(); //题目生成函数 (``` void main() { int n,a,right=0; double percent; printf("Please enter the number of the test:"); scanf("%d",&n); for(int i=0;i<n;i++) { a=takeTest(); right=right+a; } printf("Powerful!\n"); printf("The number of right:%d\n",right); percent=((double)right*100.00)/(double)n; printf("The percent of right:%0.2f %%\n",percent); } char getSignal() { char signal[4]={'+','-','*','/'}; srand((unsigned)time(NULL)); return signal[rand()%4]; } int random(double start, double end) { return (int)(start+(end-start)*rand()/(RAND_MAX+ 1.0)); } int getResult(int num1,int num2,char signal) { int res; switch(signal) { case '+': res=num1+num2;break; case '-': res=num1-num2;break; case '*': res=num1*num2;break; case '/': res=num1/num2;break; default: printf("运算符错误!\n"); } return res; } int takeTest() { int get; int num1,num2,a; char signal; srand((unsigned)time(NULL)); signal=getSignal(); num1=random(0,1000); num2=random(1,1000); if(signal=='-') { if(num1<num2) { int temp; temp=num1; num1=num2; num2=temp; } } if(signal=='/') { if(num2==0) { int temp; temp=num1; num1=num2; num2=temp; } } printf("%d%c%d=",num1,signal,num2); scanf("%d",&get); fflush(stdin); //清空输入缓冲区 if(getResult(num1,num2,signal)==get) { printf("You're right!\n"); a=1; } else { printf("It's wrong!\n"); printf("The right answer is: %d\n",getResult(num1,num2,signal)); a=0; } return a; }
托管于gitee上的链接
https://gitee.com/yuanaj/codes/cz9fyxbq3p4g0ntvuaseo19
运行截图
来源:https://www.cnblogs.com/yaj1116/p/12367950.html