码迷,mamicode.com
首页 > 其他好文 > 详细

计应193张春艳 四则运算系统

时间:2021-06-02 19:19:36      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:防止   漏洞   ++   答案   对比   需求分析   switch   软件   char   

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

需求分析
?通过-n参数控制题目个数,通过-s参数执行对错检验输出正确率
?生成max=10以内的随机的整数,随机的 +, ?, ×, ÷符号,组合成四则运算运算题目,输出到文本文件
?读入文本文件,解析表达式求值,对比用户的答案,统计正确率
?学习新技术

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()%10; //取0—9之间的随机数

num2=rand()%10;

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;
}

}

技术图片

 

技术图片

计应193张春艳 四则运算系统

标签:防止   漏洞   ++   答案   对比   需求分析   switch   软件   char   

原文地址:https://www.cnblogs.com/xiaolixiaojiao/p/14833529.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!