#include<stdio.h> #include<stdlib.h> #include<time.h> #include<string.h> int scan() { char s[100]; int i,t,z=0; do { z=0; gets(s); for(i=0;s[i]!='\0';i++) if(s[i]<'0' || s[i]>'9') break; if(i>=strlen(s)) for(t=0;s[t]!='\0';t++) z=z*10+((int)s[t]-48); else printf("您的输入有误,请重新输入"); } while(i<strlen(s)); return(z); } int x=1,y=1,choice=0,sum=0,right=0,z=0,answer; float precent; char fuhao; void suiji() { srand(time(NULL)); x=rand()%100+1; y=rand()%100+1; }void choose() { int yunsuan(int,int,int); if(sum==0) precent=0.0; else precent=(float)right/sum; printf("\n如需进行加减乘除运算测试,请分别输入1、2、3、4\n"); printf("如需退出请输入5\n"); choice=scan(); switch(choice) { case 1:printf("欢迎来到加法运算测试系统,如需退出请输入00\n"); fuhao='+';break; case 2:printf("欢迎来到减法运算测试系统,如需退出请输入00\n"); fuhao='-';break; case 3:printf("欢迎来到乘法运算测试系统,如需退出请输入00\n"); fuhao='*';break; case 4:printf("欢迎来到除法运算测试系统,如需退出请输入00\n"); fuhao='/';break; case 5:printf("本次测试结束,欢迎下次再来测试\n"); printf("本次共做%d道题,其中%d道正确,正确率为%f\n",sum,right,precent); break; default:printf("您的输入有误,请重新输入\n");choose(); } } int ans(int x,int y,int choice) { switch(choice) { case 1:z=x+y;break; case 2:z=x-y;break; case 3:z=x*y;break; case 4:z=x/y;break; } return(z); } void yunsuan() { suiji(); printf("%d%c%d=",x,fuhao,y); z=ans(x,y,choice); answer=scan(); if(z==answer) { printf("正确\n"); right++; sum++; yunsuan(); } else if(answer==00) choose(); else { printf("不正确, 正确答案为%5d\n",z); sum++; yunsuan(); } } void main() { printf("欢迎来到四则运算测试系统\n"); choose(); while(choice!=5) yunsuan(); }