四则运算编程题第二版
编写一个四则运算代码,要求在实现加减乘除以及真分数四则运算的基础上,实现以下功能:
1、实现在线答题;
2、答题结束后,可以判断对错;
3、并将错题的结果保存起来。
具体代码:
#include "stdafx.h" #include <stdio.h> #include <stdlib.h> #include <time.h> int yuefen(int a, int b) { int temp; while(a%b != 0) { temp = a%b; a = b; b = temp; } return b; } int _tmain(int argc, _TCHAR* argv[]) { int i,j,n,o,a[1000],b[1000],c[1000],d[1000],e[1000],f[1000],g[1000],h[1000],k[1000],l[1000]; int x[1000],y[1000],z[1000],answer1[1000],answer2[1000]; char m[1000]; float answer3[1000],answer4[1000],answer5[1000],answer6[1000]; srand(time(NULL)); FILE *fp; fp=fopen("错题集.txt","ab"); printf("请输入题目的个数: "); scanf("%d",&j); for(i=0;i<j;i++) { a[i]=rand()%8+2; b[i]=rand()%8+2; c[i]=rand()%18+2; d[i]=rand()%18+2; e[i]=rand()%18+2; f[i]=rand()%18+2; } for(i=0;i<j;i++) { while((a[i]==b[i])||(a[i]>b[i])) { a[i]=rand()%8+2; b[i]=rand()%8+2; } k[i]=yuefen(a[i],b[i]); a[i]/=k[i]; b[i]/=k[i]; while(c[i]==d[i]) { c[i]=rand()%18+2; } while(e[i]==f[i]) { e[i]=rand()%18+2; } } printf("计算下列各题: "); for(n=0;n<j;n++) { printf("%d/%d+(%d-%d)×%d÷%d ",a[n],b[n],c[n],d[n],e[n],f[n]); } printf("请输入题目答案,以分数形式输入,分号用“/”代替: "); for(i=0;i<j;i++) { scanf("%d%c%d",&answer1[i],&m[i],&answer2[i]); } printf("正确答案: "); for(i=0;i<j;i++) { g[i]=(c[i]-d[i])*e[i]; h[i]=g[i]*b[i]; l[i]=a[i]*f[i]; x[i]=h[i]+l[i]; y[i]=b[i]*f[i]; z[i]=yuefen(x[i],y[i]); x[i]/=z[i]; y[i]/=z[i]; if(y[i]<0) { y[i]=0-y[i]; x[i]=(-x[i]); } printf("%d/%d ",x[i],y[i]); } o=0; for(i=0;i<j;i++) { answer3[i]=(float)answer1[i]; answer4[i]=(float)answer2[i]; answer5[i]=(float)x[i]; answer6[i]=(float)y[i]; if((answer3[i]/answer4[i])==(answer5[i]/answer6[i])) { o++; } } printf("你一共做对了%d道 ",o); for(i=0;i<j;i++) { if((answer1[i]/answer2[i])!=(x[i]/y[i])) { fprintf(fp,"%d/%d+(%d-%d)×%d÷%d=",a[i],b[i],c[i],d[i],e[i],f[i]); fprintf(fp,"%d/%d ",x[i],y[i]); } } fclose(fp); return 0; }
运行界面:
错题集界面: