【软件工程Ⅱ】作业四 |个人项目-小学四则运算 “软件”之初版(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.效能分析,优化分析和心得体会. [代码实现] 一. 实现功 ...
随机推荐
- 五、git创建及合并分支
1. 创建并切换到dev分支 git checkout -b dev // git checkout命令加上-b参数表示创建并切换,相当于以下两条命令 git branch dev git check ...
- c++11の多线程应用
std::thread 应用十分方便,通过#include<thread>引入 std::thread t(subFunction); t.join(); 主线程将等待子线程完成后,继续调 ...
- 0 vs工程添加sdk
配置64位 库目录:(VC++目录) 可选配置 VS SDK(如果报错缺少kernel32.lib) C:\Program Files (x86)\Microsoft SDKs\Windows\v7. ...
- Python高级网络编程系列之第二篇
在上一篇中,我们深入探讨了TCP/IP协议的11种状态,理解这些状态对我们编写服务器的时候有很大的帮助,但一般写服务器都是使用C/Java语言,因为这些语言对高并发的支持特别好.我们写的这些简单的服务 ...
- rsyslog和logrotate服务
参考: http://www.lampbo.org/others/opensource/rsyslog-config-file-detail.html http://bangerlee.blog.ch ...
- mysql 中sql的执行顺序
文章转自 https://www.cnblogs.com/annsshadow/p/5037667.html https://www.cnblogs.com/yyjie/p/7788428.html ...
- 查看linux服务器的配置
https://zhidao.baidu.com/question/489376921.html 1.查看逻辑CPU个数: #cat /proc/cpuinfo |grep "process ...
- Qt+QGIS二次开发:读取矢量元素及其属性
1 概述矢量图层内矢量元素组成,矢量图层的加载由驱动实现,驱动必须实现对矢量图层内元素的读写操作功能. 2 原理矢量元素包含几何和属性两部分组成.几何部分用于提供图形相关内容.属性部分提供与几何相关 ...
- MongoDB可视化工具--Robo 3T 使用教程
MongoDB可视化工具--Robo 3T 使用教程 1. 到官网下载Robo 3T,网址如: https://robomongo.org/download. 2. 下载安装成功后,打开后点击左上角的 ...
- VS2017 安装visualSVN 6.1.1 for visual studio 2017
1.官网下载地址:https://www.visualsvn.com/visualsvn/download/ 2.安装