基于控制台的四则运算
2018-06-17 23:11:50来源:未知 阅读 ()
基于控制台的四则运算
coding地址:https://coding.net/u/lizhiqiang0x01/p/c-sizeyunsuan/git
一、简述题目要求:
1、除了整数之外,还要支持真分数的四则运算,真分数的运算,例如:1/6 + 1/8 = 7/24
2、运算符为 +, ?, ×, ÷
3、并且要求能处理用户的输入,并判断错误,打分统计正确率
4、要求能处理用户输入的真分数,如 1/2, 5/12 等
5、使用-n参数控制生成题目的个数,例如执行下面命令将生成10个题目
sizeyuansuan.exe -n 10
二、实现步骤:
a、需求分析
写一段程序可以在控制台输入参数,根据参数生成题目,题目要满足分式是真分数,并且要判断学生输入的答案是否正确,最终也要给出成绩。
b、功能设计
基本功能
从控制台获取参数功能,兼容获取分式和整数参数功能,生成真分式题目以及最简分式功能,运算功能,校验答案功能。
c、设计实现
为满足功能需求,下面主要写了六个函数:
int add(); //加法运算 int sub(); //减法运算 int mul(); //乘法运算 int div(); //除法运算 int ran(); //生成题目 int check(); //校验答案
d、代码说明[source file]
- 从控制台获取参数功能
#include<cstdlib> int main(int argc,char* argv[]){ n=atoi(*(argv+2)); //将控制台获取参数将其转化成整型变量 }
- 兼容获取分式和整数参数功能
cin>>a;b=cin.get(); if(b!='\n') { //若b获取的为enter则不进行第二个参数的获取,否则相反 cin>>c; }
- 生成真分式题目及最简分式功能
int ran(){ int m=1,n=1; srand(time(NULL)); //产生不同的随机数 while(1){ //防止生成假分式 q1=rand()%10; q2=rand()%9+1; if(q1<=q2) break; } while(1){ //防止生成假分式 q3=rand()%10; q4=rand()%9+1; if(q3<=q4) break; } for(int i=2;i<100;i++){ if(q1%i==0&&q2%i==0){ m=i; } if(q3%i==0&&q4%i==0){ n=i; } } q1=q1/m;q2=q2/m;q3=q3/n;q4=q4/n; return 0; }
- 校验答案功能
int check(){ cin>>a;b=cin.get(); if(b!='\n') { cin>>c; } int w=1; for(int i=2;i<100;i++){ if(r1%i==0&&r2%i==0){ w=i; } } r1=r1/w;r2=r2/w; if(r2==1){ if(r1==a&&b!='/') { n1++; cout<<"回答正确!"<<endl; } else { n2++; cout<<"回答错误,再接再厉!"<<"正确答案:"<<r1<<endl; } cout<<"正确率:"<<setprecision(4)<<100*n1/n<<"%"<<endl; } else { if(r1==a&&b=='/'&&r2==c) { //判断输入的是整数or分式 n1++; cout<<"回答正确!"<<endl; } else { n2++; cout<<"回答错误,再接再厉!"<<"正确答案:"<<r1<<"/"<<r2<<endl; } cout<<"正确率:"<<setprecision(4)<<100*n1/n<<"%"<<endl; } return 0; }
e、测试运行
三、PSP
PSP2.1 | Personal Software Process Stages | Estimated time(min) |
actual time(min) |
Planning | 计划 | 12 | 10 |
· Estimate | 估计这个任务需要多少时间 | 120 | 115 |
Development | 开发 | 80 | 90 |
· Analysis | 需求分析 (包括学习新技术) | 10 | 10 |
· Design Spec | 生成设计文档 | 7 | 10 |
· Design Review | 设计复审 | 6 | 5 |
· Coding Standard | 代码规范 | 4 | 5 |
· Design | 具体设计 | 30 | 40 |
· Coding | 具体编码 | 35 | 40 |
· Code Review | 代码复审 | 10 | 15 |
· Test | 测试(自我测试,修改代码,提交修改) | 15 | 15 |
Reporting | 报告 | 20 | 25 |
· | 测试报告 | 5 | 5 |
· | 计算工作量 | 4 | 7 |
· | 并提出过程改进计划 | 4 | 4 |
四、总结
在写程序的构成中主要遇到了两个问题,在此上面花费了较多时间。
问题一:如何从控制台获取参数
之前一直是通过cin获取参数,没有测试过基于控制平台获取参数,后来经过阅读百度上笔记掌握了该方法,具体方法在上面已经做了陈述。
问题二:判断学生输入的参数是整数or分式
在校验答案要加以判断是输入的整数还是分式,这个判断有较强的逻辑性,主要是通过b=cin.get()加以判断,在上面代码有详细说明。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:02:不吉利日期
- C++冒泡排序 (基于函数模板实现) 2020-05-31
- C++抓图服务 2020-03-31
- #《Essential C++》读书笔记# 第四章 基于对象的编程风格 2020-02-08
- 开源项目SMSS开发指南(二)——基于libevent的线程池 2020-01-11
- 第四章 复合类型 2019-12-16
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash