编程实现小学生算术练习系统,要求主菜单包括五项(加法,减法,乘法,除法,退出),而前四项中每一项又包括子菜单(子菜单包括四项:一级练习,二级练习,三级练习,返回),其中一级实现10以内的整数运算,二级实现50以内的整数运算,三级实现100以内的整数运算。进入某一级后,反复练习(由机器产生两个随机数,用户输入运算结果,输出正确“RIGHT”或错误“WRONG”),等用户选择“返回”后,给出本级题目中机算正确的百分比。
#include <stdlib.h> #include <stdio.h> #include <time.h> #include <conio.h> #include <process.h>
/*产生随机数(整数),位于区间[a,b]或者[b,a]*/ int randInt(int a, int b) { if(a<b) return a + rand()%(b-a+1); else if(a>b) return b + rand()%(a-b+1); else // a==b return a; }
int main() { int a=1, b=1,i,j; int t; float c=1.0; int n,m,N; int temp; int CountRight=0,CountWrong=0; while(1) { srand(time(0)); /*保证每次运行产生的随机数都不一样*/ system("cls");/*清屏*/ CountRight=0; printf("\n"); for(j=0;j<25;j++) printf("*"); printf("欢迎使用小学生四则运算测试系统"); for(j=0;j<25;j++) printf("*"); printf("\n\t\t1:加法 2:减法 3:乘法 4:除法 5:退出\n\n"); for(j=0;j<55;j++) printf("*"); printf(" seeker 2005.06.09 ******"); printf("请选择运算法则: "); scanf("%d",&m); while(m<=0||m>=6) { printf("-------------------选择错误!重新选择!"); scanf("%d",&m); }
if(m==5) exit(1);/*退出系统*/
printf("\t\t (请选择级别) 1:一级 2:二级 3:三级 "); scanf("%d",&n); while(n<=0||n>=4) { printf("-------------------选择错误!重新选择!"); scanf("%d",&n); } /*************/ switch(m)/*判断运算规则*/ { case 1:printf(" 进入加法 %d 级练习====>(在后面输入结果)\n\n",n);break; case 2:printf(" 进入减法 %d 级练习====>(在后面输入结果)\n\n",n);break; case 3:printf(" 进入乘法 %d 级练习====>(在后面输入结果)\n\n",n);break; case 4:printf(" 进入除法 %d 级练习====>(在后面输入结果)\n\n",n);break; default: break; } switch(n)/*判断级别*/ { case 1:N=10;break; case 2:N=50;break; case 3:N=100;break; default: break; } for(i=1; i<=200;++i)/*最多做200道题,够了吧?不够自己加*/ { a=randInt(1,N); b=randInt(1,N); switch(m)/*判断运算规则*/ { case 1: printf(" 第%d%题:%d + %d =? ",i,a,b); c=a+b; scanf("%d",&t);break; case 2: printf(" 第%d%题:%d - %d =? ",i,a,b); c=a-b; scanf("%d",&t);break; case 3: printf(" 第%d%题:%d * %d =? ",i,a,b); c=a*b; scanf("%d",&t);break; case 4: printf(" 第%d%题:%d / %d =? ",i,a,b); c=(float)a/b; scanf("%f",&t);break; default: break; } if(t==c) { printf("-------------------------------Right!"); CountRight++; } else printf("-------------------------------Wrong!"); printf("\n\t0--返回,1--继续\n"); scanf("%d",&temp); //cin>>temp; if(temp==0) { printf("\t\t\t\t\t\t总共做题%d条。其中:对%d条,错%d条\n",i,CountRight,i-CountRight); printf("\t\t\t\t\t\t正确率为:%.2f%%",100*(float)CountRight/i); getch(); break; } } } return 0; }