【软件工程Ⅱ】作业四 |个人项目-小学四则运算 “软件”之初版(C语言)
本次作业的要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2186
本次作业代码的github地址:https://github.com/Molly134/lianxi.git
一、题目要求
像《构建之法》的人物阿超那样,写一个能自动生成小学四则运算题目的命令行 “软件”。
具体要求:
任何编程语言都可以,命令行程序接受一个数字输入,然后输出相应数目的四则运算题目和答案。例如输入数字是 30, 那就输出 30 道题目和答案。 运算式子必须至少有两个运算符,运算数字是在 100 之内的正整数,答案不能是负数。 如:23 - 3 * 4 = 11
二、小学四则运算 “软件”之初版
1.需求分析
1.1 四则运算需求分析
2.系统流程图
1.2 系统流程图
3.代码实现
本次作业是用C语言来实现的,其代码以及可运行程序已经上传至github的arithmetic(1)文件夹中。
代码实现:
#include<stdio.h>
#include<math.h>
#include<windows.h>
int right=;
int wrong=;
void add() { //加法运算
int a,b,c,d;
a=rand()%;
b=rand()%;
c=rand()%;
printf("请回答:\n\t\t %d + %d + %d = ",a,b,c);
scanf("%d",&d);
if(a+b+c==d) {
printf("回答正确!\n");
right++;
} else {
printf("回答错误!\n");
wrong++;
}
} void minus() { //减法运算
int a,b,c,d;
a=rand()%;
b=rand()%;
c=rand()%;
printf("请回答:\n\t\t %d - %d - %d = ",a,b,c);
scanf("%d",&d);
if(a-b-c==d) {
printf("回答正确!\n");
right++;
} else {
printf("回答错误!\n");
wrong++;
}
} void multiply() { //乘法运算
int a,b,c,d;
a=rand()%;
b=rand()%;
c=rand()%;
printf("请回答:\n\t\t %d * %d * %d = ",a,b,c);
scanf("%d",&d);
if(a*b*c==d) {
printf("回答正确!\n");
right++;
} else {
printf("回答错误!\n");
wrong++;
}
} void divide() { //除法运算
int a,b,c,d;
a=rand()%;
b=rand()%;
c=rand()%;
printf("请回答:\n\t\t %d / %d / %d = ",a,b,c);
scanf("%d",&d);
if(a/b/c==d) {
printf("回答正确!\n");
right++;
} else {
printf("回答错误!\n");
wrong++;
}
} void main() {
int choise;
int con=;
int i=,j=;
printf("\n\t\t\t欢迎进入简易四则运算\n\n");
while() {
printf("请选择:\n");
printf("\t\t\t 加法运算(请输入1)\n");
printf("\t\t\t 减法运算(请输入2)\n");
printf("\t\t\t 乘法运算(请输入3)\n");
printf("\t\t\t 除法运算(请输入4)\n");
printf("\t\t\t 退出运算(请输入5)\n");
if(con==)
scanf("%d",&choise);
switch(choise) { case ://加法
printf("请输入题目数目:");
scanf("%d",&i);
if(i>) {
for(j=; j<i; j++) {
add();
}
} else
printf("输入错误,请重新输入!");
break; case ://减法
printf("请输入题目数目:");
scanf("%d",&i);
if(i>) {
for(j=; j<i; j++) {
minus();
}
} else
printf("输入错误,请重新输入!");
break; case ://乘法
printf("请输入题目数目:");
scanf("%d",&i);
if(i>) {
for(j=; j<i; j++) {
multiply();
}
} else
printf("输入错误,请重新输入!");
break; case ://除法
printf("请输入题目数目:");
scanf("%d",&i);
if(i>) {
for(j=; j<i; j++) {
divide();
}
} else
printf("输入错误,请重新输入!");
break;
case :
return;
}
printf("\n\t\t\t继续运算?(请输入1)\n");
printf("\n\t\t\t重新选择?(请输入2)\n");
printf("\n\t\t\t退出运算?(请输入3)\n");
scanf("%d",&con);
if(con==)
con=;
else if(con==)
con=;
else if(con==)
break;
else
printf("抱歉!,你输入的指令有误!请重新输入!\n");
}
printf("您总共完成了 %d 道题\n正确 %d 道\n错误 %d 道\n",right+wrong,right,wrong);
}
4.运行结果
1.3 开始界面
1.4 加法运算
1.5 减法运算
1.6 乘法运算
1.7 除法运算
1.8 结束界面
三、个人软件过程耗时估计与统计表(注:因为此项目还未完成,所以此表暂空)
PSP2.1 | Personal Software Process Stages | Time |
Planning | 计划 | |
·Estimate | 估计这个任务需要多少时间 | |
Development | 开发 | |
·Analysis | 需求分析 (包括学习新技术) | |
·Design Spec | 生成设计文档 | |
· Design Review | 设计复审 | |
· Coding Standard | 代码规范 | |
· Design | 具体设计 | |
· Coding | 具体编码 | |
· Code Review | 代码复审 | |
· Test | 测试(自我测试,修改代码,提交修改) | |
·Reporting | 报告 | |
· | 测试报告 | |
· | 计算工作量 | |
· | 并提出过程改进计划 |
【软件工程Ⅱ】作业四 |个人项目-小学四则运算 “软件”之初版(C语言)的更多相关文章
- 作业四:个人项目-小学四则运算之JAVA版
作业的要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2186 代码所在的github远程仓库的地址:https://git ...
- 《软件工程》小组团队项目-小学生四则运算APP(First Sprint)
<软件工程>团队项目我们小组选择了小学生四则运算APP,在上学期原有的项目基础上进行更新升级.(自我感觉我们团队上学期的小学生四则运算APP是较为成功且实用的,不过这学期学习到了新的知识, ...
- 作业二:个人编程项目——编写一个能自动生成小学四则运算题目的程序
1. 编写一个能自动生成小学四则运算题目的程序.(10分) 基本要求: 除了整数以外,还能支持真分数的四则运算. 对实现的功能进行描述,并且对实现结果要求截图. 本题发一篇随笔,内容包括: 题 ...
- 小学四则运算结对项目报告(GUI)
小学四则运算结对项目报告(GUI) 一.Coding.Net项目地址: https://git.coding.net/wsshr/Calculation.git 二.PSP表格(完成前): PSP 任 ...
- 个人第四次作业:Alpha项目测试
个人第四次作业:Alpha项目测试 格式描述 详情 这个作业属于哪个课程 http://edu.cnblogs.com/campus/xnsy/GeographicInformationScience ...
- 小学四则运算APP 第二次冲刺 第四天
团队成员:陈淑筠.杨家安.陈曦 团队选题:小学四则运算APP 第二次冲刺阶段时间:11.29~12.09 本次发布的是合并后的选择题功能界面的设置: ChoiceSet.java: package c ...
- 小学四则运算APP 第一个冲刺阶段 第四天
团队成员:陈淑筠.杨家安.陈曦 团队选题:小学四则运算APP 第一次冲刺阶段时间:11.17~11.27 本次发布我们增加了CalculatorsActivity.java.YunsuanActivi ...
- 结对编程项目报告--四则运算CORE
<!doctype html> sw_lab2.mdhtml {overflow-x: initial !important;}#write, body { height: auto; } ...
- 【第二次个人作业】结对作业Core第一组:四则运算生成PB16061082+PB16120517
[整体概况] 1.描述最终的代码的实现思路以及关键代码. 2.结对作业两个人配合的过程和两个人分工. 3.API接口文档和两个组的对接. 4.效能分析,优化分析和心得体会. [代码实现] 一. 实现功 ...
随机推荐
- RBAC权限管理系统数据模型
懒得多写了,懂的看建表脚本就懂了... -- ---------------------------- -- Table structure for ucb_user -- ------------- ...
- Django view 视图
request.method 判断请求方式 8种 GET : 获取一个页面 POST: 提交数据 PUT : 上传 HEAD: 不用上传就获取数据 DELETE: 删除 Request-URL 标识的 ...
- APC | Memcache等缓存key冲突的解决的方法
版权声明:https://github.com/wusuopubupt https://blog.csdn.net/wusuopuBUPT/article/details/24397109 apc.m ...
- Qt 编程指南 3_1 按钮弹窗手动和自动关联示例
触发的两种模式 connect() 和 on_控件ID_控件函数(参数) 两者优缺点对比: 虽然 Qt 有比较好用的自动关联大法,但自动关联不是万能的,尤其是涉及到多个窗体的时候,比如 A 窗体私有按 ...
- oracle 查询非自增长分区的最大分区
select a.table_owner, a.table_name, a.max_partition from (select table_owner, table_name, max(parti ...
- Objective-C @executable_path、@loader_path和@rpath
工程配置中,有三个路径和库的加载息息相关: 1.@executable_path 可执行文件的路径,例如/Applications/WeChat.app/Contents/MacOS. 2.@load ...
- NDK toolchain对应ABI
有些时候,解决一些问题,我们需要多一些耐心. 从今天起,正式开始SkylineGlobe移动端Android版本的二次开发. Application.mk修改为NDK_TOOLCHAIN := arm ...
- TerraGate软件安装后,不能启动的解决办法
在服务端安装Skyline的TerraGate软件的时候,大家可能会遇到过这样的问题,“TerraGate软件安装后,不能启动”,很多时候,这个问题是因为TerraGate设 置的端口号已经被占用造成 ...
- 《MySQL必知必会》[06] 触发器
1.触发器 MySQL中的触发器概念,和Java中的事件监听器有点相似.当你想要某条语句在某个事件发生时自动执行,就要用到触发器了. 触发器能响应如下三类语句: DELETE INSERT UPDAT ...
- Python 爬取 11 万 Java 程序员信息竟有这些重大发现!
一提到程序猿,我们的脑子里就会出现这样的画面: 或者这样的画面: 心头萦绕的字眼是:秃头.猝死.眼镜.黑白 T 恤.钢铁直男-- 而真实的程序猿们,是每天要和无数数据,以及数十种编程语言打交道.上能手 ...