【软件工程Ⅱ】作业四 |个人项目-小学四则运算 “软件”之初版(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.效能分析,优化分析和心得体会. [代码实现] 一. 实现功 ...
随机推荐
- 设计 MySQL 数据表的时候一般都有一列为自增 ID,这样设计原因是什么,有什么好处?
知乎采集: MyISAM/InnoDB默认用B-Tree索引(可理解为"排好序的快速查找结构"). InnoDB中,主索引文件上直接存放该行数据,称为聚簇索引.次索引指向对主键的引 ...
- indexOf() 使用方法(数组去重)
对于indexOf()的用法一直停留在查找第几个字符串,却不知道它能用到数组去重中,首先还是温顾下indexOf()的语法: <!DOCTYPE html> <html lang=& ...
- File类_常见的方法(获取目录中指定规则的内容)
首先定义过滤器 import java.io.File; import java.io.FilenameFilter; public class FileByJava implements Filen ...
- 5分钟入门Tornado
Tornado 是 FriendFeed 使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本.这个 Web 框架看起来有些像web.py 或者 Google 的 webapp,不过为了能有效 ...
- Android平台调用Web Service:线程返回值
接上文 前文中的遗留问题 对于Java多线程的理解,我曾经只局限于实现Runnable接口或者继承Thread类.然后重写run()方法.最后start()调用就算完事,可是一旦涉及死锁以及对共享资源 ...
- ethereum/EIPs-160 EXP cost increase
eip title author type category status created 160 EXP cost increase Vitalik Buterin Standards Track ...
- VsCode插件开发之插件初步通信
参考了Egret Wing,想像Egret Wing那样在上方titlebar最右边上面增加一个menu(这个menu相对于一个按钮,当点击这个按钮时会出现一个window弹框,这个window弹框里 ...
- dijkstra P4779 【模板】单源最短路径(标准版) 洛谷luogu
题目背景 2018 年 7 月 19 日,某位同学在 NOI Day 1 T1 归程 一题里非常熟练地使用了一个广为人知的算法求最短路. 然后呢? 100→60 Ag→Cu 最终,他因此没能与理想的大 ...
- Luogu4139 上帝与集合的正确用法 拓展欧拉定理
传送门 题意:求$2^{2^{2^{2^{...}}}} \mod p$的值.$p \leq 10^7$ 最开始想到的是$x \equiv x^2 \mod p$,然后发现不会做... 我们可以想到拓 ...
- React-使用styled-components
1.安装 npm install --save styled-components 2.简单使用 style.js: import styled from 'styled-components'; i ...