小学生四则运算程序系统

题目要求:
运算符为 +, −, ×, ÷
并且要求能处理用户的输入,并判断对错,打分统计正确率。
使用 -n 参数控制生成题目的个数

代码说明:

include <stdio.h>

#include <stdlib.h>

void main() {  

int n=0,count=0;  printf("\n欢迎使用小学生四则运算练习软件\n");  

int ch=0;
 printf("\n欢迎使用小学生四则运算练习软件\n\n");
 while(1)
 {
  if(count==100)
  {
   printf("恭喜你在100道练习里做对了%d题! \n",n);
   printf("\t1.继续练习\n\t2.退出");
   scanf("%d",&ch);
   if(ch==2)
   {
   break;
   }
  }

 n+=yusuan();  count++;  

}

}

int yusuan()

{  

int ranswer=0;   //正确答案  

int uanswer=0;   //用户输入的答案  

int t=0,n=0;    //临时变量  

char op;       //运算类别  

int num1=0;    //操作数1  

int num2=0;    //操作数2

 srand(time(NULL));  //初始化随机数  

num1=rand()%100;   //取0—99之间的随机数  

num2=rand()%100;  

n=rand()%4+1;  switch(n)  

{   case 1:    op='+';    break;

  case 2:    op='-';    break;

  case 3:    op='*';    break;

  case 4:    op='/';    break;

 }

//加入一条防止“不够减”的语句,当选择减法且num1小于num2时不够减

//不够减的时候,用临时变量交换两个操作数

 if((op=='-') && (num1<num2))

 {   t=num1;

  num1=num2;

  num2=t;  

}

//防止“除数为0”的程序漏洞

//当num2被随机取值到0时,就将num2强制置为1

//做除法时,将num1的值强制赋值给num1*num2,防止不能整除  

if(op=='/')  

{   

if(num2==0)

  {    num2=1;   }   

num1=num1*num2;   

//防止num1不能被num2整除的语句  }

//输出测试题本身、提示用户输入  

printf("   %d%c%d= ",num1,op,num2);  

scanf("%d",&uanswer);

//程序计算正确结果  

switch(op)

 {   case '+':   ranswer=num1+num2;   break;

  case '-':   ranswer=num1-num2;   break;

  case '*':   ranswer=num1*num2;   break;

  case '/':   ranswer=num1/num2;   break;  

}

//评判,做对返回1,做错返回0

 if(uanswer==ranswer)

 {   printf("\t做对了!\n");  

 return 1;  

}  else

 {   printf("\t做错了!\n");  

 return 0;  }

}

posted @ 2021-05-31 15:56  houlei6  阅读(131)  评论(0编辑  收藏  举报