初步实现出题软件

本文介绍了一种使用C++实现的随机生成混合运算题目及答案的方法,并通过后序表达式计算验证用户输入的答案是否正确。同时,文章还分享了作者在实现过程中的思考与难点解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

相同部分

1)

2)
设计思路
首先看到题目嘛最初写了一个类似1+1= 或者1-1= 的随机生成算式的代码:


int a,b,c,s,s1;
srand(time(NULL));
a=rand()%9+1;
b=rand()%9+1;
c=rand()%4+1;
switch(c)
{
case 1:s=a+b;printf("%d+%d=",a,b);break;
case 2:s=a-b;printf("%d-%d=",a,b);break;
case 3:s=a * b;printf("%d%d=",a,b);break;
case 4:s=a;printf("%d/%d=",a
b,b);break;
}
scanf("%d",&s1);
if(s==s1)printf("回答正确!\n");
else printf("回答错误!答案是: %d\n",s);

要求是要混合运算,最初的设想肯定是行不通的。
但是,原理是一样的,都是利用rand() 来生成随机数。给符号编号1~4,然后随机生成1~4,用switch语句选择出一个符号,
由于是混合运算,我的做法是定义一个数组,然后把符号数字排好存进去。这个时候就有 难点了,看之前的简单运算,好像计算结果跟着随机出来的算式一起。
然而混合运算,排列组合有好多种情况,计算如果跟着随机一起出来貌似很麻烦(我是没什么好想法,如果有好的意见可以评论区)。
所以,我这里就有个想法,把生成的算式用计算器算出结果,然后对比答案是否正确。因为我之前写过计算器的代码所以比较方便。
原理是用 后序表达式来计算生成的算式。因此,我也顺带在里面加了一个计算器的功能。不过,我这里有几个解决难点的做法有点不好。
第一,真分数我做不到直接用排列组合的方式弄出,我的思路是重新定义一个真分数的生成函数,然后调用。但是最好的方法应该是函数重载吧。
第二,除号块是一大难点,毕竟随机出来的,无法确定结果,题目却要求整数结果,我的解决方案就是每次结果都要进行一次判断是否为整数,然后不是整数进行重新随机,这样导致的结果就是除号出现的几率不会很大。

思路也就这些了吧,具体可以看我的代码。

3)
代码规范:

函数含义
check()计算结果
judge()判断结果是否为整数
Fraction()随机生成真分数
Rand()随机生成混合算式
randNum()随机数字
randSym()随机数字(1~4)
symbol()找出对应符号

4)
程序实现和结果测试的截图:

1092374-20170213230003004-1018765652.png
1092374-20170213230019019-1239083687.png
1092374-20170213230032019-277069325.png
1092374-20170213230038550-1591366270.png
1092374-20170213230053566-1329553049.png
1092374-20170213230057941-1198141437.png
1092374-20170213230105269-510194389.png

5)
github的提交链接:https://github.com/NSDie/Operations

提交日志截图:
1092374-20170213230140894-1964556694.png
1092374-20170213230154316-609071570.png
1092374-20170213230200675-1373534621.png

6)
分工

  • 031602438 负责 随机生成题目 以及计算;
  • 031602317 负责 统计、翻译、界面美化。

协作证据截图
1092374-20170213230229644-1705233834.png




差异部分

1. 合作过程

由于各自都要满自己的事情,所以做这个作业也是有点烦,每次都是在半夜用qq催来催去,然后第二天不是我出去有事就是队友出去有事,不过还好题目不是很难。
然后每次写完自己的事,上传,跟队友说一声有新任务了,大概就是这样的吧。在合作过程中,除了代码还有就是github的协作功能弄了半天才弄好。

2. 合作体会

由于语言的差异,队友不擅长c++嘛,但是题目又要要求c++最好,所以只能把代码写的c和c++混合,能让队友看懂,必要时还要给他解释一下什么意思。但是在合作过程也感觉非常开心,偶尔会发生一些很有趣的事情。不过我最大的体会就是活到老,学到老。在和搭档合作的过程中一起思考,一起讨论,一起学习git的协作功能。
虽然感觉有点累,但是这些足以抚慰我了。

转载于:https://www.cnblogs.com/yyf031602438/p/6395829.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值