#include<stdio.h> #include<stdlib.h> #include<time.h> #include<string.h> main() { int i,j,k,e,d,d1,e1,l; int a,b,c; int q=0,w=0,q1=0,w1=0; float sum; srand((int)time(0)); do{ a=rand()%100+1; b=rand()%100+1; k=rand()%4+1; c=max(a,b); a=min(a,b); switch(k){ case 1:printf("%d*%d=",c,a);d=c*a; break; case 2: { printf("%d/%d=",a,c); (float)d=(float)a/(float)c; for(i=1;i<=c;i++) for(j=1;j<=a;j++) { (float)l=(float)j/(float)i; if(l==d) { c=i; a=j; break; } } break; } case 3:printf("%d+%d=",c,a);d=c+a; break; case 4:printf("%d-%d=",c,a);d=c-a; break; } if(k==2) { scanf("%d/%d",&e,&e1); (float)d1=(float)e/(float)e1; if(e==a&&e1==c) { printf("回答正确!\n\n"); q++; } else { printf("回答错误!\n\n"); w++; } } if(k!=2) { scanf("%d",&e); if(e==d) { printf("回答正确!\n\n"); q1++; } else { printf("回答错误!\n\n"); w1++; } } }while(e!=-1); sum=((float)(q+q1)/(float)(q+q1+w+w1-1))*100; printf("此次答题正确率为 %.2f%%\n",sum); }
关于小数的与整数的没有什么大的出入,基本就是重复一遍,暂时没有想到更好的办法
这次的程序的时间最主要是消耗在产生不同在运行结果,导致程序在效率不是很高。
最后是在网上找到了关于随时间变化的类,解决了程序运行结果单一的问题,大大提高了程序的实用性。
对于真分数只做出了分数的最简约分。