寒假第三次作业
四则运算器
合作者学号及博客链接
编写思路与过程中遇到的问题:
- 首先:得问题是,如何做到随机出题目,这个随机确实有些让人头疼,尽管知道如何出随机数,但要随机出运算题确实有些难度。两位合作者语音洽谈了很久,想到了一个比较取巧的方法。首先确定了我们会什么,(不巧,两位都不怎么会。。)但是随机出一种模板类型的题目还是会的,所以剩下的问题是如何出很多种的题目,所以我们的思路就是编写很多个模板,通过随机函数来调用这些模板来做到随机出运算的题目,思路很简单,既然可以随机数,那就像给函数编码,随机到哪个数就出哪个模板的题目,这样一来,随机出题目的问题也得到解决了。
- 其次:是答案的问题如何在用户输入之后判断答案的对错呢,在商讨之后,我们决定在模板中加入答案,就在出题目时就判断好答案,这样这一问题就解决了。
- 再者:问题就是如何停止,计算正确与错误题目的个数。我们最后决定设置两个临时变量让其在做对或做错之后进行自增。这样就能统计正确与错误题目的个数。至于停止,我们通过输入一个字符e来停止运算器。
- 在编写过程中还遇到这样的问题:就是分数正确错误的判断,就是分数线的输入判断如何解决,我们想的就是规范输入格式,分数线由空格代替,更便于系统判断。而这些在界面提示中有说明。在之后可能更新的版本中,将加以完善。
- 分数答案的解决,对于分数计算,我们探讨了一下,最后想到的计算方法是先通分再约分。
实际效果展示图:
中英文切换界面
中文界面
英文界面
编码规范
- 为了方便在中英文版本上的配合,我们就默认了这样的正确错误判断格式。代码如下:
eg:
if(qq==result1)
{if(english==0)
{
printf("正确!\n");
}
else
{
printf("RIGHT!\n");
}
i++;
}
else
{
if(english==0)
{
printf("错误!\n");
}
else
{
printf("WRONG!\n");
}
j++;
}
}
在统一的判断对错的输出之后,更便于合作版本的编辑。
- 其次我们的分数输入也达成一致统一规范,用户输入除法保留两位小数,输入为float型。
主函数:
int main()
{
int e,k;
int nSelect=MessageBox(NULL,TEXT("您好,单击确定选择中文,click cancle switch to English"),TEXT("语言设置"),MB_OKCANCEL);
if(nSelect==IDOK)
{
printf("欢迎使用口算心算天天练!\n输入“e”来停止。\n说明:除法保留两位小数,分数运算依次输入分子分母中间用空格隔开。除号为'÷',分数线为'/'。\n");
printf("**********************************************\n");
for(k=0;1<4;k++)
{
srand(time(0));
e=rand()%12+1;
char o;
switch (e)
{
case 1:
jiafa();break;
case 2:
jianfa();break;
case 3:
chengfa();break;
case 4:
chufa();break;
case 5:
hunhe1();break;
case 6:
hunhe2();break;
case 7:
hunhe3();break;
case 8:
hunhe4();break;
case 9:
fenshujiafa();break;
case 10:
fenshujianfa();break;
case 11:
fenshuchengfa();break;
case 12:
fenshuchufa();break;
}
o=getchar();
if(o=='e'){
printf("**********************************************\n");
printf("本次测试做对%d道题目\n",i);
printf("本次测试做错%d道题目\n\n",j-1);
printf("有志者事竟成!\n");
break;
}
}
}
else
{
english=1;
printf("Welcome!\ninput“e”to stop.\n Notes:divison operation keep two places of decimal,fraction operation please input numerator than input denominator and space between them.The sign of divisor is '÷',the sign of fraction is'/'.\n");
printf("**********************************************\n");
for(k=0;1<4;k++)
{
srand(time(0));
e=rand()%12+1;
char o;
switch (e)
{
case 1:
jiafa();break;
case 2:
jianfa();break;
case 3:
chengfa();break;
case 4:
chufa();break;
case 5:
hunhe1();break;
case 6:
hunhe2();break;
case 7:
hunhe3();break;
case 8:
hunhe4();break;
case 9:
fenshujiafa();break;
case 10:
fenshujianfa();break;
case 11:
fenshuchengfa();break;
case 12:
fenshuchufa();break;
}
o=getchar();
if(o=='e'){
printf("**********************************************\n");
printf("the number of right answer is %d in this quiz\n",i);
printf("the number of wrong answer is %d in this quiz\n\n",j-1);
printf("where there is a will there is a way!\n");
break;
}
}
}
getch();
return 0;
}
github链接
合作分工截图:
查看本地分支
更新并查看远程分支
切换分支
与团队项目同步
同步修改
创建请求
发送请求
同意请求、合并成功
)
合作分工截图:
查看本地分支
更新并查看远程分支
切换分支
与团队项目同步
同步修改
创建请求
发送请求
同意请求、合并成功
合作的分工:
和开黑差不多,语音探讨,具体的分工是我负责加减乘除及和混合运算以及美化部分,宇航负责分数及主函数和中英文版本的问题。尽管中间遇到不少问题但还是及时解决了。
合作过程的体会:
合作的目的肯定是培养团队意识,还有提高了自己的代码能力,明白了一项比较大的工作量动用多人头脑一起完成使工作效率更高,而完成工作时也有一定成就感,可以试试能不能给小学生使用,有多余的时间也会完成更高版本,做出好一点的界面,但这些却也是c不易完成之处,所以会努力学习知识,不足自己的不足之处。