#include<stdio.h> #include<stdlib.h> #include<time.h> #include<string.h> main() { int i,j,k,e,d,d1,e1,l,f; int a,b,c,g,h,m,n,o; int q=0,w=0,q1=0,w1=0,q2=0,w2=0; float sum; srand((int)time(0)); printf("现在进入四则运算测试,输入-1退出测试!\n\n"); do{ a=rand()%100+1; b=rand()%100+1; g=rand()%100+1; h=rand()%100+1; k=rand()%5+1; f=rand()%4+1; c=max(a,b); a=min(a,b); g=max(g,h); m=min(g,h); 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; case 5: { printf("%d/%d",a,c); switch(f){ case 1: { printf(" * %d/%d=",m,g); n=a*m; o=c*g; break; } case 2: { printf(" / %d/%d=",m,g); n=a*g; o=c*m; break; } case 3: { printf(" + %d/%d=",m,g); n=a*g+c*m; o=c*g; break; } case 4: { printf(" - %d/%d=",m,g); n=a*g-c*m; o=c*g; 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&&k!=5) { scanf("%d",&e); if(e==d) { printf("回答正确!\n\n"); q1++; } else { printf("回答错误!\n\n"); w1++; } } if(k==5) { scanf("%d/%d",&e,&e1); if((float)(n/o)==(float)(e/e1)) { printf("回答正确!\n\n"); q2++; } else { printf("回答错误!\n\n"); w2++; } } }while(e!=-1); sum=((float)(q+q1+q2)/(float)(q+q1+q2+w+w1+w2-1))*100; printf("此次答题正确率为 %.2f%%\n",sum); }
此次修改的最要问题就是添加分数的运算部分,之前由于想得不是很够,
只能做到对于一个分数的约分,现在添加的部分能够在一定程度上实现分数的加减乘除。
程序还有一个问题还没有做到,在加法的那一部分,还存在加出来可能是大于1的结果。