#include <stdlib.h> #include <stdio.h> #include<time.h> int main(void) { int n=0,i,d=0,q,w,k,l,c=0,e,r,j; float cout=0; char *a[6]={"+","-","*","/","(",")"}; char b; printf("1.随机生成 2.退出 "); do{ do{ scanf("%d",&j);getchar(); if((j>2)||(j<1)) printf("输入错误,请重新输入:"); }while((j>2)||(j<1)); switch(j){ case 1: printf("开始生成 "); printf("产生题数:"); do{ scanf("%d",&n);getchar(); if(n==0) printf("输入错误,请重新输入:"); }while(n==0); printf("输入控制数字范围:"); do{ scanf("%d",&c);getchar(); if(c==0) printf("输入错误,请重新输入:"); }while(c==0); c++; cout=0.0; srand(time(NULL)); for(d=0;d<n;d++){ i=rand() % 8; q=rand() % c; w=rand() % c; switch(i) { case 1: printf("%d+%d=",q,w); scanf("%d",&k); if(k==(q+w)){ printf("恭喜回答正确! 得%d分! ",100/n); cout+=(100/n); } else printf("回答错误,继续加油! "); break; case 2: printf("%d-%d= ",q,w); scanf("%d",&k); if(k==(q-w)){ printf("恭喜回答正确! 得%d分! ",100/n); cout+=(100/n); } else printf("回答错误,继续加油! "); break; case 3: printf("%d*%d= ",q,w); scanf("%d",&k); if(k==(q*w)){ printf("恭喜回答正确! 得%d分! ",100/n); cout+=(100/n); } else printf("回答错误,继续加油! "); break; case 4: do{ if(w==0) w=rand() % c;}while(w==0); printf("%d/%d= ",q,w); printf("1.答案为整数 2.答案为分数 "); scanf("%d",&k); switch(k){ case 1: scanf("%d",&k); if(k==(q/w)){ printf("恭喜回答正确! 得%d分! ",100/n); cout+=(100/n); } else printf("回答错误,继续加油! "); break; case 2: scanf("%d",&k); scanf("%c",&b); getchar(); scanf("%d",&l); if((k/l)==(q/w)){ printf("恭喜回答正确! 得%d分! ",100/n); cout+=(100/n); } else printf("回答错误,继续加油! "); break; default: printf("默认整数 "); scanf("%d",&k); if(k==(q/w)){ printf("恭喜回答正确! 得%d分! ",100/n); cout+=(100/n); } else printf("回答错误,继续加油! "); break; } break; case 5: e=rand() % c; r=rand() % c; do{ if(w==0||r==0) w=rand() % c; r=rand() % c; }while(w==0||r==0); printf("(%d/%d)+(%d/%d)= ",q,w,e,r); printf("1.答案为整数 2.答案为分数 "); scanf("%d",&k); switch(k){ case 1: scanf("%d",&k); if(k==((q/w)+(e/r))){ printf("恭喜回答正确! 得%d分! ",100/n); cout+=(100/n); } else printf("回答错误,继续加油! "); break; case 2: scanf("%d",&k); scanf("%c",&b); getchar(); scanf("%d",&l); if((k/l)==((q/w)+(e/r))){ printf("恭喜回答正确! 得%d分! ",100/n); cout+=(100/n); } else printf("回答错误,继续加油! "); break; default: printf("默认整数 "); scanf("%d",&k); if(k==((q/w)+(e/r))){ printf("恭喜回答正确! 得%d分! ",100/n); cout+=(100/n); } else printf("回答错误,继续加油! "); break; } break; case 6: e=rand() % c; r=rand() % c; do{ if(w==0||r==0) w=rand() % c; r=rand() % c; }while(w==0||r==0); printf("(%d/%d)-(%d/%d)= ",q,w,e,r); printf("1.答案为整数 2.答案为分数 "); scanf("%d",&k); switch(k){ case 1: scanf("%d",&k); if(k==((q/w)-(e/r))){ printf("恭喜回答正确! 得%d分! ",100/n); cout+=(100/n); } else printf("回答错误,继续加油! "); break; case 2: scanf("%d",&k); scanf("%c",&b); getchar(); scanf("%d",&l); if((k/l)==((q/w)-(e/r))){ printf("恭喜回答正确! 得%d分! ",100/n); cout+=(100/n); } else printf("回答错误,继续加油! "); break; default: printf("默认整数 "); scanf("%d",&k); if(k==((q/w)-(e/r))){ printf("恭喜回答正确! 得%d分! ",100/n); cout+=(100/n); } else printf("回答错误,继续加油! "); break; } break; case 7: e=rand() % c; r=rand() % c; do{ if(w==0||r==0) w=rand() % c; r=rand() % c; }while(w==0||r==0); printf("(%d/%d)*(%d/%d)= ",q,w,e,r); printf("1.答案为整数 2.答案为分数 "); scanf("%d",&k); switch(k){ case 1: scanf("%d",&k); if(k==((q/w)*(e/r))){ printf("恭喜回答正确! 得%d分! ",100/n); cout+=(100/n); } else printf("回答错误,继续加油! "); break; case 2: scanf("%d",&k); scanf("%c",&b); getchar(); scanf("%d",&l); if((k/l)==((q/w)*(e/r))){ printf("恭喜回答正确! 得%d分! ",100/n); cout+=(100/n); } else printf("回答错误,继续加油! "); break; default: printf("默认整数 "); scanf("%d",&k); if(k==((q/w)*(e/r))){ printf("恭喜回答正确! 得%d分! ",100/n); cout+=(100/n); } else printf("回答错误,继续加油! "); break; } break; case 0: e=rand() % c; r=rand() % c; do{ if(w==0||r==0) w=rand() % c; r=rand() % c; }while(w==0||r==0); printf("(%d/%d)/(%d/%d)= ",q,w,e,r); printf("1.答案为整数 2.答案为分数 "); scanf("%d",&k); switch(k){ case 1: scanf("%d",&k); if(k==((q/w)/(e/r))){ printf("恭喜回答正确! 得%d分! ",100/n); cout+=(100/n); } else printf("回答错误,继续加油! "); break; case 2: scanf("%d",&k); scanf("%c",&b); getchar(); scanf("%d",&l); if((k/l)==((q/w)/(e/r))){ printf("恭喜回答正确! 得%d分! ",100/n); cout+=(100/n); } else printf("回答错误,继续加油! "); break; default: printf("默认整数 "); scanf("%d",&k); if(k==((q/w)/(e/r))){ printf("恭喜回答正确! 得%d分! ",100/n); cout+=(100/n); } else printf("回答错误,继续加油! "); break; } break; } } printf("总成绩%0.1f! ",cout); j=-1; printf(" 1.随机生成 2.退出 "); break; case 2: exit(0); break; default: printf("输入错误!请重新输入 "); break; }}while(j==-1); return 0; }