结对作业——程序编写

软件工程综合实践专题:第二次作业

内容:创建四则运算练习题

合作人:1759133 赵华龙 和 1759139 王越

正文:

首先我们两人对题目进行了分析,决定使用我们熟悉的C语言来进行编写。

第一步:

我们首先想的是,先将题目能够打印出来,先不管什么限制条件。

因为之前没有学过随机函数,只好去网上查询了一下,大致弄清楚了一点。

之后花费了大约二十分钟的时间,将代码完成。

运行……

结果出来之后,我们发现每道题目都是相同的。

很尴尬。

之后经过反反复复的仔细检查,发现是因为随机函数的应用出了一点问题,再之后调整了一下,

将这里的“srand((int)time(0));”

 

移到外面

这样,我们的第一步就完成了。可以将题目打印出来。

至此,我们耗费了半个小时,也松了一口气。

但是,我们突然发现我们的代码实在太短了,只有不到三十行,对比周边同学的两百行代码,显得很是短小无力。

于是我们觉得必须进行第二步。

第二步:

在原来的基础上,加入限制条件。

首先是数值范围和题目的数量,这个很好控制,我们在随机的时候加入了限制就将之满足。

接着我们又考虑了减法会出现负数的问题,和除法是否能够整除的问题。

这个对我们来说是一个不小的挑战,我们将近攻克了又一半小时,最终用数学上的方法将之解决。

使得每道题目在运算的时候,不会出现负数以及不能整除的情况,并且在其中加入了括号,使得前两个数字一定能够最先运算。

不过在这个过程中,出现了一些小小的问题,使得第一个数字的取值范围出现了变化,超出了一百的范围,不过无伤大雅哦!

代码:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include<windows.h>
void four()
{
int i, num, num_1, num_2, num_3, T_d = 0, op_1, op_2;//随机的三个数和题目数
char op[4] = { '+','-','*','/' };
printf_s("请输入1——300之间的题目数量\n");
scanf_s("%d", &T_d);
printf_s("你一共出了%d道题目\n", T_d);
srand((int)time(0));
for (i = 0; i < T_d; i++)
{
while (1) { num_1 = rand(); if (num_1 >= 1 && num_1 < 100)break; }
while (1) { num_2 = rand(); if (num_2 >= 1 && num_2 < 100)break; }
while (1) { num_3 = rand(); if (num_3 >= 1 && num_3 < 100)break; }
while (1) { op_1 = rand(); if (op_1 >= 0 && op_1 <= 3)break; }
while (1) { op_2 = rand(); if (op_2 >= 0 && op_2 <= 3)break; }
if (op[op_1] == '+')
{
num = num_1 + num_2;
if (op[op_2] == '-')
{
num_1 = num + num_3;
printf_s("(%d%c%d)%c%d=\n", num_1, op[op_1], num_2,op[op_2], num_3);
}
if (op[op_2] == '/')
{
num = num*num_3;
num_1 = num - num_2;
printf_s("(%d%c%d)%c%d=\n", num_1, op[op_1], num_2, op[op_2], num_3);
}
if (op[op_2] == '+' || op[op_2] == '*')
printf_s("(%d%c%d)%c%d=\n", num_1, op[op_1], num_2, op[op_2], num_3);
}
if (op[op_2] == '-')
{
num = num_1;
if (op[op_2] == '-')
{
num_1 = num_1 + num_3 + num_2;
printf_s("(%d%c%d)%c%d=\n", num_1, op[op_1], num_2, op[op_2], num_3);
}
if (op[op_2] == '/')
{
num = num*num_3;
num_1 = num + num_2;
printf_s("(%d%c%d)%c%d=\n", num_1, op[op_1], num_2, op[op_2], num_3);
}
if (op[op_2] == '+' || op[op_2] == '*')
printf_s("(%d%c%d)%c%d=\n", num_1, op[op_1], num_2, op[op_2], num_3);
}
if (op[op_1] == '*')
{
num = num_1 * num_2;
if (op[op_2] == '-')
{
num_1 = num_1 + num_3;
printf_s("(%d%c%d)%c%d=\n", num_1, op[op_1], num_2, op[op_2], num_3);
}
if (op[op_2] == '/')
{
num_1 = num*num_3 / num_2;
printf_s("(%d%c%d)%c%d=\n", num_1, op[op_1], num_2, op[op_2], num_3);
}
if (op[op_2] == '+' || op[op_2] == '*')
printf_s("(%d%c%d)%c%d=\n", num_1, op[op_1], num_2, op[op_2], num_3);
}
if (op[op_1] == '/')
{
num_1 = num_2*num_1;
num = num_1;
if (op[op_2] == '-')
{
printf_s("(%d%c%d)%c%d=\n", num_1, op[op_1], num_2, op[op_2], num_3);
}
if (op[op_2] == '/')
{
num_1 = num*num_3;
printf_s("(%d%c%d)%c%d=\n", num_1, op[op_1], num_2, op[op_2], num_3);
}
if (op[op_2] == '+' || op[op_2] == '*')
printf_s("(%d%c%d)%c%d=\n", num_1, op[op_1], num_2, op[op_2], num_3);
}
}
}
int main()
{
four();
Sleep(10000000000);
return 0;
}

猜你喜欢

转载自www.cnblogs.com/wddzess/p/10544905.html