#include #include #include #include typedef struct node { int jiajian; int num1; int num2; int trytimes; }specific; specific informat[10]; void changesi(int p) { if(p==0) printf("+"); if(p==1) printf("-"); } int getgrade(int m) { if(m==0) return 10; if(m==1) return 7; if(m==2) return 5; if(m==3) return 0; } int suijishu(int a,int b,int c,int t) { int a1,b1; do { a1=rand()%50; b1=rand()%50; }while(!(a1+b1>=0&&a1+b1<+50&&a1-b1>=0&&a1-b1<=50)); informat[t].num1=a=a1; informat[t].num2=b=b1; informat[t].jiajian=c=rand()%2; return 0; } void show_rank(int sum) { printf("\n\n"); printf("总分:%d\n",sum); if(sum>=90) printf("SMART\n"); else if(sum<90&&sum>=80) printf("GOOD\n"); else if(sum<80&&sum>=70) printf("OK\n"); else if(sum<70&&sum>=60) printf("PASS\n"); else printf("TRE AGAIN\n"); } int main() { srand(time(NULL)); printf("----------pupil exercise system----------\n"); printf("\t\t\t*******************************************************\n"); printf("\t\t\t* 此次测试的题目有10道 *\n"); printf("\t\t\t* 题目类型为两位数的加减 *\n"); printf("\t\t\t* 每题10分,总分为100分。 *\n"); printf("\t\t\t*******************************************************\n"); int t=1,cnt=0,sum=0,a,b,c,ans; while(t<=10) { printf("this is the %d question\n",t); suijishu(a,b,c,t); while(cnt<=3) { if(c==0) { printf("%d+%d=",a,b); scanf("%d",&ans); if(a+b==ans) { printf("Right\n"); break; } else { cnt++; printf("Wrong!!\n"); if(cnt==3) { printf("anwser is:%d\n",a+b); break; } } } else if(c==1) { printf("%d-%d=",a,b); scanf("%d",&ans); if(a-b==ans) { printf("Right\n"); break; } else { cnt++; printf("Wrong!!\n"); if(cnt==3) { printf("anwser is:%d\n",a-b); break; } } } } informat[t].trytimes=cnt; if(cnt==0) sum+=10; if(cnt==1) sum+=7; if(cnt==2) sum+=5; t++; cnt=0; printf("\n\n"); printf("--------------------\n"); } show_rank(sum); printf("\n\n"); int i; for(i=1;i<=10;i++) { printf("第%d题:%d",i,informat[i].num1); changesi(informat[i].jiajian); printf("%d=",informat[i].num2); if(informat[i].jiajian==0) printf("%d\n",informat[i].num1+informat[i].num2); else if(informat[i].jiajian==1) printf("%d\n",informat[i].num1-informat[i].num2); printf("你错了%d次,得了%d分\n",informat[i].trytimes,getgrade(informat[i].trytimes)); } float p; p=sum/10.0; printf("你的正确率是:%.2f%%\n",p*10); return 0; }