#include<stdio.h> #include<time.h> #include<stdlib.h> void main() { int c,d,e,f; int x,right=0,wrong=0; float a,a1,a2,a3; int flag=0; char cc; srand((unsigned int)time(NULL)); do{ flag=0; x=rand()%4; c=rand()%10+1; d=rand()%10+1; e=rand()%10+1; f=rand()%10+1; if(c<=d&&e<=f&&d!=0&&f!=0) { a1=(float)c/d; a2=(float)e/f; switch(x) { case 0: printf("(%d/%d) + (%d/%d) = ",c,d,e,f); break; case 1: printf("(%d/%d) - (%d/%d) = ",c,d,e,f); break; case 2: printf("(%d/%d) * (%d/%d) = ",c,d,e,f); break; case 3: printf("(%d/%d) ÷ (%d/%d) = ",c,d,e,f); break; } scanf("%f",&a); switch(x) { case 0: if(a1+a2==a) { printf("计算正确! ");right++; } else { a3=a1+a2; printf("计算错误!答案应为:%f ",a3);wrong++; } break; case 1: if(a==a1-a2) { printf("计算正确! ");right++; } else { a3=a1-a2; printf("计算错误!答案应为:%f ",a3);wrong++; } break; case 2: if(a==a1*a2) { printf("计算正确! ");right++; } else { a3=a1*a2; printf("计算错误!答案应为:%f ",a3);wrong++; } break; case 3: if(a==a1/a2) { printf("计算正确! ");right++; } else { a3=a1/a2; printf("计算错误!答案应为:%f ",a3);wrong++; } break; } printf("按任意键继续,q则退出! "); // scanf("%d",&quit); // if(quit==0) cc=getchar(); printf(" "); } }while(cc!='q'); printf("共答对%d道题,共答错%d道题 ",right,wrong); }
在练习1的基础上,添加真分数,判断是否为真分数,前提是分子不大于分母切分母不为0。
一开始运行的时候,输入正确答案,可是判断的答案是显示错误的。找到输入答案的那一行代码,发现输入格式是错的,应为%f。
在原基础上修改花了半个小时。
一开始运行的时候,输入正确答案,可是判断的答案是显示错误的。找到输入答案的那一行代码,发现输入格式是错的,应为%f。
在原基础上修改花了半个小时。