四则运算训练器软件C语言开发(软件代码+软件说明)

合集下载

四则运算器(C语言)

四则运算器(C语言)

#include<stdio.h>#include <stdlib.h> //需要用到的头文件#include <time.h> //包含日期时间处理头文件*/void main(){int x,y,all=0,r=0,e=0,result;char z;int m;printf("welcome caculator !\ninput q to end the caculator!\n");printf("1.addtest\n");printf("2.minustest\n");printf("3.multiplytest\n");printf("4.dividetest\n");printf("Please input the number from 1 to 4:\n"); //任意键进入scanf("%d",&m);srand( (unsigned)time( NULL ) ); /*随机数播种函数(产生一个以当前时间开始的随机种子)*/while ((z=getchar())!='q') //按q键(quit)退出{all++;x=rand()%50;y=rand()%50;if(m==1){printf("%d+%d=",x,y); //加法scanf("%d",&z);if (x+y==z) r++;else e++;}else if(m==2){ //减法printf("%d-%d=",x,y);scanf("%d",&z);if (x-y==z) r++;else e++;}else if(m==3){ //乘法printf("%d*%d=",x,y);scanf("%d",&z);if (x*y==z) r++;else e++;}else if(m==4){ //除法printf("%d/%d=",x,y);scanf("%d",&z);if (x/y==z) r++;else e++;}else//输入非法数字,输出错误printf("Errror!\n");result=100*r/all;//得分}printf("Y our grade is:%d\n",result);printf("all question number is %d,right is %d,error is %d\n",all,r,e); }#include<stdio.h>#include <stdlib.h>void main(){int a,b,x,y,all=0,r=0,e=0,g;char z;int m;printf("welcome !\ninput h to end the yunsuan!\n");printf("1.addtest\n");printf("2.minustest\n");printf("3.multiplytest\n");printf("4.dividetest\n");printf("请输入一个一到四的一个整数:\n"); //任意键进入scanf("%d",&m);while ((z=getchar())!='h') //按h键退出{all++;a=rand();b=rand();x=a%50;y=b%50;switch(m){case 1:{printf("%d+%d=",x,y); //加法scanf("%d",&z);if (x+y==z) r++;else e++;break;}case2:{ //减法printf("%d-%d=",x,y);scanf("%d",&z);if (x-y==z) r++;else e++;break;}case3:{ //乘法printf("%d*%d=",x,y);scanf("%d",&z);if (x*y==z) r++;else e++;break;}case4:{ //除法printf("%d/%d=",x,y);scanf("%d",&z);if (x/y==z) r++;else e++;break;}}g=100*r/all; //得分}printf("Y our grade is:%d\n",g);printf("all question number is %d,right is %d,error is %d\n",all,r,e);}。

C语言-四则运算

C语言-四则运算

四则运算姓名:学号:班级:1.功能结构图2.程序功能进行整数的加减乘除和求模运算。

程序采用随机产生1~100的两个数进行运算每种运算有10个题目用户输入对应的答案程序提示答案的对错最后统计正确率。

每次给出两次答题机会。

3.程序流程图4.函数列表及功能5.源程序代码#include<stdio.h>#include<stdlib.h>#include<time.h>#define N 10int f(int a,int b){ //自定义函数int result;result=a+b;return result;}int f1(int a,int b){int result;result=a-b;return result;}int f2(int a,int b){int result;result=a*b;return result;}int f3(int a,int b){int result;result=a*b/b;return result;}int mod(int a,int b){int result;result=a%b;return result;}int main(){int a,b,res,ans;int i,count;int op,c;srand((unsigned)time(NULL)); while(1){printf("\n---加减乘除运算练习系统---\n");printf("1.加法运算\n");printf("2.减法运算\n");printf("3.乘法运算\n");printf("4.除法运算\n");printf("5.求模运算\n");printf("6.混合运算\n");printf("0.退出练习\n");printf(" 请输入数字0~6:");scanf("%d",&op); //输入相应数字进行练习switch(op){case 1:printf("--请进行加法运算--\n");count=0;for(i=1;i<=N;i++){a=rand()%100+1;b=rand()%100+1;res=f(a,b); //调用加法函数printf("%d+%d=",a,b);scanf("%d",&ans); //输入数值if(ans==res){printf("Very Good!\n");count++;}else{printf("wrong! 请重新输入\n");scanf("%d",&ans);if(ans==res)printf("Very Good!\n");elseprintf("Wrong Answer!\n");}}printf("***正确率为%.0f%%***\n",100.0*count/N); break;case 2:printf("--请进行减法运算--\n");count=0;for(i=1;i<=N;i++){a=rand()%100+1;b=rand()%100+1;res=f1(a,b); //调用减法函数printf("%d-%d=",a,b);scanf("%d",&ans); //输入数值if(ans==res){printf("Very Good!\n");count++;}else{printf("wrong! 请重新输入\n");scanf("%d",&ans);if(ans==res)printf("Very Good!\n");elseprintf("Wrong Answer!\n");}}printf("***正确率为%.0f%%***\n",100.0*count/N); break;case 3:printf("--请进行乘法运算--\n");count=0;for(i=1;i<=N;i++){a=rand()%100+1;b=rand()%100+1;res=f2(a,b); //调用乘法函数printf("%d*%d=",a,b);scanf("%d",&ans); //输入数值if(ans==res){printf("Very Good!\n");count++;}else{printf("wrong! 请重新输入\n");scanf("%d",&ans);if(ans==res)printf("Very Good!\n");elseprintf("Wrong Answer!\n");}}printf("***正确率为%.0f%%***\n",100.0*count/N); break;case 4:printf("--请进行除法运算--\n");count=0;for(i=1;i<=N;i++){a=rand()%10+1;b=rand()%10+1;res=f3(a,b); //调用除法函数printf("%d/%d=",a*b,b);scanf("%d",&ans); //输入数值if(ans==res){printf("Very Good!\n");count++;}else{printf("wrong! 请重新输入\n");scanf("%d",&ans);if(ans==res)printf("Very Good!\n");elseprintf("Wrong Answer!\n");}}printf("***正确率为%.0f%%***\n",100.0*count/N); break;case 6:printf("--请进行混合运算--\n");count=0;for(i=1;i<=N;i++){a=rand()%100+1;b=rand()%100+1;c=rand()%5; //产生0~4的随机数{switch(c) //随机出现进行混合运算{case 0:printf("%d+%d=",a,b);res=f(a,b);break;case 1:printf("%d-%d=",a,b);res=f1(a,b);break;case 2:printf("%d*%d=",a,b);res=f2(a,b);break;case 3:a=a%10+1;b=b%10+1;printf("%d/%d=",a*b,b);res=f3(a,b);break;case 4:printf("%d%%%d=",a,b);res=mod(a,b);break;}}scanf("%d",&ans); //输入数值if(ans==res){printf("Very Good!\n");count++;}else{printf("wrong! 请重新输入\n");scanf("%d",&ans);if(ans==res)printf("Very Good!\n");elseprintf("Wrong Answer!\n");}}printf("***正确率为%.0f%%***\n",100.0*count/N); break;case 5:printf("--请进行求模运算--\n");count=0;for(i=1;i<=N;i++){a=rand()%100+1;b=rand()%100+1;res=mod(a,b); //调用求模函数printf("%d%%%d=",a,b);scanf("%d",&ans); //输入数值if(ans==res){printf("Very Good!\n");count++;}else{printf("wrong! 请重新输入\n");scanf("%d",&ans);if(ans==res)printf("Very Good!\n");elseprintf("Wrong Answer!\n");}}printf("***正确率为%.0f%%***\n",100.0*count/N); break;case 0:goto END; //转到结束}}END:printf("---练习结束---\n");return 0;}6程序运行图选取起始和加法混合运算程序开始显示6种练习方式输入0为退出。

四则运算c语言编程

四则运算c语言编程

四则运算c语言编程四则运算是数学中常见的基本运算,也是编程语言中必须掌握的基本知识。

在C语言中,四则运算包括加、减、乘、除四个基本运算。

本文将介绍C语言中四则运算的使用方法和注意事项。

加法运算加法运算是最基本的运算之一,C语言中使用“+”符号进行加法运算。

例如,计算两个整数a和b的和,可以使用以下代码:int a = 5;int b = 3;int sum = a + b;printf("sum = %d\n", sum);在这个例子中,首先定义了两个整数a和b,并将它们相加得到sum变量的值。

最后使用printf函数将sum的值输出到屏幕上。

减法运算减法运算也是常见的运算之一,C语言中使用“-”符号进行减法运算。

例如,计算两个整数a和b的差,可以使用以下代码:int a = 5;int b = 3;int diff = a - b;printf("diff = %d\n", diff);在这个例子中,首先定义了两个整数a和b,并将它们相减得到diff变量的值。

最后使用printf函数将diff的值输出到屏幕上。

乘法运算乘法运算也是常见的运算之一,C语言中使用“*”符号进行乘法运算。

例如,计算两个整数a和b的积,可以使用以下代码:int a = 5;int b = 3;int product = a * b;printf("product = %d\n", product);在这个例子中,首先定义了两个整数a和b,并将它们相乘得到product变量的值。

最后使用printf函数将product的值输出到屏幕上。

除法运算除法运算也是常见的运算之一,C语言中使用“/”符号进行除法运算。

例如,计算两个整数a和b的商,可以使用以下代码:int a = 5;int b = 3;int quotient = a / b;printf("quotient = %d\n", quotient);在这个例子中,首先定义了两个整数a和b,并将它们相除得到quotient变量的值。

C四则运算程序代码

C四则运算程序代码

四则表达式计算一、程序分析和设计把整个表达式存为字符数组,按照四则运算规则寻找其中的运算符号,然后提取左右两侧操作数计算,用计算结果替换掉计算的表达式,这样整体表达式会被简化,继续重复这个过程,直到找不到运算符为止。

1)运算表达式的存储定义字符数组来存储即可,注意由于运算过程中可能会出现小数,而小数会导致表达式长度增加,所以定义时字符数组长度应该足够(比如1000)并且计算结果应该减少精度,比如保留小数点后面三位。

2)数和字符数组之间的转化提取出来的操作数实际为字符序列,计算前我使用 atof(定义在stdlib.h)转化为浮点数运算,同样的,运算结果要替换表达式中的字符序列也需要先转化为字符串才行,我使用 sprintf 函数,该函数定义在 stdio.h 中字符串的连接使用了 strcat(string.h) 等函数。

3)计算逻辑设pstr 为计算表达式//先算乘除for(int i=1;i<strlen(pstr);i++){If(如果当前位置字符为*或者/){把运算符保存在ysf中从该位置左边找前边的操作符获取左边要计算的数据coml和该数据前的字符串strleft从该位置右边找后边的操作符获取右边要计算的数据comr和该数据后的字符串 strright将数据变换成浮点型运算再转换为字符型的结果连接 strleft + 结果 + stright 组成新字符串替换掉 pstr }}//再找加减//代码与找乘除的过程类似为了代码简单,中途设计了几个计算函数double jia(char x[],char y[]);//字符加法返回double的值double jian(char x[],char y[]);//字符减法返回double的值double cheng(char x[],char y[]);//字符乘法返回double的值double chu(char x[],char y[]);//字符除法返回double的值double xsd(char x[]);//字符检测是否有小数,返回double的值为了可以重复输入,开头使用了个do while ,为了可以输入-1+2这种表达式,我设计了个判断,如果第一字符是+或-我给整体表达式前加了个0字符这样就转化为一般的字符了!如果是* /则提示出错,别重新输入!二、程序主要代码#include<iostream.h>#include<stdlib.h>//atof函数的头文件#include<stdio.h>//sprintf函数的头文件#define MAX 255//宏定义常量#include<string.h>double cmjia(char x[],char y[]);//声明函数double cmjian(char x[],char y[]);double cmcheng(char x[],char y[]);double cmchu(char x[],char y[]);double compute(char pstr[]);double xsd(char x[]);//主函数void main(){do{double t;//存储运算结果char a[]="0";char linshi[MAX];//计算临时用的char biaodashi[MAX];//用来存放表达式for(;;)//输入表达式{cout<<"请输入一个正确的数学表达式,形如7+8*6,按回车结束"<<endl;//输入表达式cin>>biaodashi;if(biaodashi[0]=='*'||biaodashi[0]=='/')cout<<"您输入的表达式有误,请重新输入"<<endl;//判断首字符是否为*/,如果是提示错误别返回重新输入else break;}if(biaodashi[0]=='-'||biaodashi[0]=='+')//判断首字符是否为+-,如果是给字符前加字符0 {strcat(a,biaodashi);strcpy(biaodashi,a);}strcpy(linshi,biaodashi);t=compute(linshi);//计算cout<<"运算结果是:"<<biaodashi<<'='<<t<<endl;//输出结果}while(1);//计算完返回,接着输入}//自定义函数double xsd(char x[])//判断是否有小数点,并把字符型转化为浮点型{for(int i=0;i<strlen(x);i++)if(x[i]=='.'){double num = 0.0;sscanf(x, "%f", &num);//return num;}elsereturn atof(x);}double cmjia(char x[],char y[])//计算两字符加法,并返回double型值{double a,b;a=xsd(x);b=xsd(y);double c=a+b;return c;}double cmjian(char x[],char y[])//计算两字符减法,并返回double型值{double a,b;a=xsd(x);b=xsd(y);double c=a-b;return c;}double cmcheng(char x[],char y[])//计算两字符乘法,并返回double型值{double a,b;a=xsd(x);b=xsd(y);double c=a*b;return c;}double cmchu(char x[],char y[])//计算两字符除法,并返回double型值{double a,b;a=xsd(x);b=xsd(y);double c=a/b;return c;}double compute(char pstr[])//{char strleft[MAX],strright[MAX],coml[MAX],comr[MAX],com[MAX],ysf;//ysf代表运算符double comzhi,zhi;//comzhi代表中途计算的值,com代表comzhi所对应的字符型int n=0;//先算乘除for(int i=0;i<strlen(pstr);i++){if(pstr[i]=='*'||pstr[i]=='/'){ysf=pstr[i];//获取左边要计算的数据coml和该数据前的字符串strleftfor(int j=i-1;j>=0;j--){if(pstr[j]=='-'||pstr[j]=='+'){for(int k=0;k<=j;k++) strleft[k]=pstr[k];strleft[k]='\0';//获取左边要计算数据前的字符串strleftfor(k=j+1,n=0;k<i;k++,n++) coml[n]=pstr[k];coml[n]='\0';//获取左边要计算的数据comlbreak;}elsefor(int k=0;k<i;k++){coml[k]=pstr[k];strleft[0]='\0';}}//获取右边要计算的数据comr和该数据后的字符串strrightfor(j=i+1;j<=strlen(pstr);j++){if(pstr[j]=='-'||pstr[j]=='+'||pstr[j]=='*'||pstr[j]=='/'||pstr[j]=='\0'){for(int k=0,n=j;k<strlen(pstr)-i-1;k++,n++) strright[k]=pstr[n];strright[k]='\0';for(k=i+1,n=0;k<j;k++,n++) comr[n]=pstr[k];comr[n]='\0';break;}}if(ysf=='*')//如果是*{comzhi=cmcheng(coml,comr);sprintf(com,"%.3f",comzhi);}else//如果是/{comzhi=cmchu(coml,comr);sprintf(com,"%.3f",comzhi);}strcat(strleft,com);//把数据前的字符和运算后的字符连接strcat(strleft,strright);//把数据后的字符和运算后的字符连接strcpy(pstr,strleft);//替换pstr}//重新找操作符}//再找加减for(i=0;i<strlen(pstr);i++){if(pstr[i]=='+'||pstr[i]=='-'){ysf=pstr[i];//获取左边要计算的数据comlfor(int k=0;k<i;k++) coml[k]=pstr[k];coml[k]='\0';//获取右边要计算的数据和该数据后的字符串strrightfor(int j=i+1;j<=strlen(pstr);j++){if(pstr[j]=='-'||pstr[j]=='+'||pstr[j]=='\0'){for(int k=0,n=j;k<=strlen(pstr)-j;k++,n++) strright[k]=pstr[n];strright[k]='\0';for(k=i+1,n=0;k<j;k++,n++) comr[n]=pstr[k];comr[n]='\0';break;}}if(ysf=='+'){comzhi=cmjia(coml,comr);sprintf(com,"%.3f",comzhi);}else{comzhi=cmjian(coml,comr);sprintf(com,"%.3f",comzhi);}strcat(com,strright);strcpy(pstr,com);}}//没找到,说明全部+-都计算完了zhi=atof(pstr);return zhi;}三、运行效果四、总结还无法提醒形如3-45*+或输入sgfs-34等式的错误,别重新输入,无法计算带括号和函数的表达式等更复杂的四则表达式。

C语言编写的四则运算器

C语言编写的四则运算器
}
/* Source1、Source2加起来到Destination中*/
char *AddStrings_f(char *chpDestination, char *chpSource1, char *chpSource2)
{
char *chpTempdest=chpDestination;
while(*chpSource1!=0) /*先把chpSource1放入chpDestination */
/*关系运算*/
int Nexus(char strIn[]);
/* =============================================== */
/*全局变量声明*/
int Debug=1; /*调试信息显示开关0不显示,1显示*/
char *TF_Info[3]={"FALSE","TURE","Error"}; /*关系运算信息*/
}
sBuf[sPos]=sChar;
strcpy(chpString,sBuf);
}
else
return 0;
return 1;
}
/*替换字符串中的某个字符'#' to '-' */
void StrReplace(char *chpString,char strOld ,char strNew)
{
char sBuf[Max];
/*函数声明*/
/*计算字符串(不带括号的),计算的核心部分*/
char *Calculate_f(char *chpString);
/*主操作过程,输入式子串,返回double型结果*/

四则运算器代码

四则运算器代码

四则运算器代码简单的四则运算器可以执行加、减、乘、除四种基本运算。

使用python和C++编写实例:(一)使用python编写:# 定义函数实现加法def add(x, y):return x + y# 定义函数实现减法def subtract(x, y):return x - y# 定义函数实现乘法def multiply(x, y):return x * y# 定义函数实现除法def divide(x, y):if y == 0:raise ValueError('除数不能为0')return x / y# 主程序,输入两个数和运算符,输出运算结果或错误信息while True:try:num1 = float(input('请输入第一个数:'))num2 = float(input('请输入第二个数:'))op = input('请输入运算符(+、-、*、/):')if op == '+':result = add(num1, num2)elif op == '-':result = subtract(num1, num2)elif op == '*':result = multiply(num1, num2)elif op == '/':result = divide(num1, num2)else:print('无效的运算符')continueprint('运算结果:', result)except ValueError as e:print('输入错误:', e)except Exception as e:print('程序错误:', e)在上面的代码中,我们定义了四个函数分别实现加、减、乘、除四种基本运算。

c语言四则运算程序

c语言四则运算程序

c语言四则运算程序C语言是一种通用的计算机程序设计语言,用于开发软件和操作系统等工程项目。

C语言的语法简洁,可以编写出高效的代码,因此在编写四则运算程序中被广泛应用。

四则运算指的是加减乘除四种基本运算。

在C语言中,可以使用基本的算术运算符来进行四则运算,例如“+”表示加法,“-”表示减法,“*”表示乘法,“/”表示除法。

在程序中使用scanf函数获取用户输入的数字,然后通过计算输出运算结果。

下面展示一个简单的加法程序,用户输入两个数字,程序通过相加运算输出结果:#include<stdio.h>int main(){int a,b,c;printf("Please enter two numbers:");scanf("%d %d",&a,&b);c=a+b;printf("%d + %d = %d\n",a,b,c);return 0;}以上程序展示了如何使用scanf函数获取用户的输入。

scanf函数的第一个参数是格式化字符串,指定要读取的类型及其数量,例如“%d”表示整数,“%f”表示浮点数。

第二个参数是存储输入值的变量名或指针,它们必须与格式化字符串中要读取的类型相匹配。

当用户输入两个整数后,程序将它们相加并输出结果。

输出语句中使用了占位符“%d”,它们对应的是printf函数中的后三个参数,分别是a,b,c的值。

除了加法,减法、乘法、除法的处理也很相似。

下面展示一个利用switch语句实现四则运算的程序:#include<stdio.h>int main(){int a,b,c;char op;printf("Please enter two numbers:");scanf("%d %d",&a,&b);printf("Please enter the operator:");scanf(" %c",&op);switch(op){case '+': c=a+b;break;case '-': c=a-b;break;case '*': c=a*b;break;case '/': c=a/b;break;default: printf("Invalid operator!");return1;break;}printf("%d %c %d = %d\n",a,op,b,c);return 0;}这个程序通过switch语句根据输入的运算符选择相应的操作。

c语言编写四则运算运算器

c语言编写四则运算运算器

#include<stdio.h>#include<ctype.h>#include<stdlib.h>char token[61]; /*存放表达式字符串的数组*/int n=0;void error(void) /*报告错误函数*/{printf("ERROR!\n");exit(1);}void match(char expected) /*检查字符匹配的函数*/ {if(token[n]==expected)token[++n]=getchar();else error();}double term(void); /*计算乘除的函数*/double factor(void); /*处理括号和数字的函数*/ double exp(void) /*计算加减的函数*/{double temp=term();while((token[n]=='+')||(token[n]=='-'))switch(token[n]){case'+':match('+');temp+=term();break;case'-':match('-');temp-=term();break;}return temp;}double term(void){double div;double temp=factor();while((token[n]=='*')||(token[n]=='/'))switch(token[n]){case'*':match('*');temp*=factor();break;case'/':match('/');div=factor();if(div==0) /*处理除数为零的情况*/{printf("The divisor is zero!\n");exit(1);}temp/=div;break;}return temp;}double factor(void){double temp;char number[61];int i=0;if(token[n]=='('){match('(');temp=exp();match(')');}else if(isdigit(token[n])||token[n]=='.'){while(isdigit(token[n])||token[n]=='.') /*将字符串转换为浮点数*/ {number[i++]=token[n++];token[n]=getchar();}number[i]='\0';temp=atof(number);}else error();return temp;}main(){double result;FILE *data=fopen("61590_4.dat","at");if(data==NULL)data=fopen("61590_4.dat","wt");if(data==NULL)return 0;token[n]=getchar();result=exp();if(token[n]=='\n'){token[n]='\0';printf("%s=%g\n",token,result); fprintf(data,"%s=%g\n",token,result); }else error();fclose(data);return 0;getch();}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

软件名称:四则运算训练器
软件功能介绍:
该软件主要用于训练并测试使用者的四则运算能力。

进入软件主界面,界面上会显示3个选项,分别是:
1.10以内的四则运算训练。

2.20以内的四则运算训练。

0.退出。

使用者根据自己的需要选择不同的选项:
按“1”进入10以内的四则运算训练;
按“2”进入20以内的四则运算训练;
按“0”退出程序主界面。

10以内的四则运算和20以内的四则运算均为10题一组;在这10个题中,加减乘除均有,操作数均为整数,且加减乘除出现的顺序不定,除法给出的两个操作数能除尽。

对于给出的题目,当操作者计算正确时,操作界面上无特殊显示;当操作者计算错误时,操作界面上会显示“FAULT!”,提示操作者该题计算错误并同时进入下一题。

操作者每做完10道题,界面上会显示此轮计算的正确率,并询问操作者是否继续。

此时操作者可根据自己的需要,按“1”进入10以内的四则运算训练;
按“2”进入20以内的四则运算训练;
按“0”退出程序主界面。

程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void calculation1();
void calculation2();
void main()
{
int number;
char m;
redo:
printf("\t\t\t欢迎进入四则运算训练营!\n\n\n\n");
printf("<1>.10以内的四则运算系列.\n");
printf("<2>.20以内的四则运算训练.\n");
printf("<0>.退出.\n\n");
printf("请选择功能号( 1 / 2 / 0 ):");
scanf("%d",&number);
srand((unsigned)time(0));
loop: if(number==1) calculation1();
else if(number==2) calculation2();
else exit(0);
printf("\n\n");
printf("继续吗?(Y/N):");
getchar();
scanf("%c",&m);
if(m=='Y') goto loop;
if(m=='N') goto redo;
}
void calculation1()
{
int i,j,n=0;
int a1,a2,result;
float rate;
char c='%';
printf("您选择的是10以内的四则运算。

\n");
for(i=1;i<=10;i++)
{
j=rand()%4+1;
switch(j)
{
case 1:a1=rand()%10+1;a2=rand()%10+1;
printf("(%d) %d+%d=",i,a1,a2);
scanf("%d",&result);
if(result!=a1+a2)
printf("FAULT!\n");
n++;
}
break;
case 2: while((a1=rand()%10+1)&&(a2=rand()%10+1)) {
if(a1<a2) continue;
else break;
}
printf("(%d) %d-%d=",i,a1,a2);
scanf("%d",&result);
if(result!=a1-a2)
{
printf("FAULT!\n");
n++;
}
break;
case 3:a1=rand()%10+1;a2=rand()%10+1;
printf("(%d) %d*%d=",i,a1,a2);
scanf("%d",&result);
if(result!=a1*a2)
printf("FAULT!\n");
n++;
}
break;
case 4:while((a1=rand()%10+1)&&(a2=rand()%10+1)) {
if(a1%a2!=0) continue;
else break;
}
printf("(%d) %d/%d=",i,a1,a2);
scanf("%d",&result);
if(result!=a1/a2)
{
printf("FAULT!\n");
n++;
}
break;
}
}
rate=(10.0-n)/10.0*100;
printf("正确率为%.0f%c\n",rate,c);
}
void calculation2()
{
int i,j,n=0;
int a1,a2,result;
float rate;
char c='%';
printf("您选择的是20以内的四则运算。

\n");
for(i=1;i<=10;i++)
{
j=rand()%4+1;
switch(j)
{
case 1:a1=rand()%20+1;a2=rand()%20+1;
printf("(%d) %d+%d=",i,a1,a2);
scanf("%d",&result);
if(result!=a1+a2)
{
printf("FAULT!\n");
n++;
}
case 2:while((a1=rand()%20+1)&&(a2=rand()%20+1)) {
if(a1<a2) continue;
else break;
}
printf("(%d) %d-%d=",i,a1,a2);
scanf("%d",&result);
if(result!=a1-a2)
{
printf("FAULT!\n");
n++;
}
break;
case 3:a1=rand()%20+1;a2=rand()%20+1;
printf("(%d) %d*%d=",i,a1,a2);
scanf("%d",&result);
if(result!=a1*a2)
{
printf("FAULT!\n");
n++;
}
case 4:while((a1=rand()%20+1)&&(a2=rand()%20+1)) {
if(a1%a2!=0) continue;
else break;
}
printf("(%d) %d/%d=",i,a1,a2);
scanf("%d",&result);
if(result!=a1/a2)
{
printf("FAULT!\n");
n++;
}
break;
}
}
rate=(10.0-n)/10.0*100;
printf("正确率为%.0f%c\n",rate,c);
}
运行界面:。

相关文档
最新文档