寒假第三次作业

四则运算器

合作者学号及博客链接

蔡宇航031602501
刘宏岩031602523

编写思路与过程中遇到的问题:

  1. 首先:得问题是,如何做到随机出题目,这个随机确实有些让人头疼,尽管知道如何出随机数,但要随机出运算题确实有些难度。两位合作者语音洽谈了很久,想到了一个比较取巧的方法。首先确定了我们会什么,(不巧,两位都不怎么会。。)但是随机出一种模板类型的题目还是会的,所以剩下的问题是如何出很多种的题目,所以我们的思路就是编写很多个模板,通过随机函数来调用这些模板来做到随机出运算的题目,思路很简单,既然可以随机数,那就像给函数编码,随机到哪个数就出哪个模板的题目,这样一来,随机出题目的问题也得到解决了。
  2. 其次:是答案的问题如何在用户输入之后判断答案的对错呢,在商讨之后,我们决定在模板中加入答案,就在出题目时就判断好答案,这样这一问题就解决了。
  3. 再者:问题就是如何停止,计算正确与错误题目的个数。我们最后决定设置两个临时变量让其在做对或做错之后进行自增。这样就能统计正确与错误题目的个数。至于停止,我们通过输入一个字符e来停止运算器。
  4. 在编写过程中还遇到这样的问题:就是分数正确错误的判断,就是分数线的输入判断如何解决,我们想的就是规范输入格式,分数线由空格代替,更便于系统判断。而这些在界面提示中有说明。在之后可能更新的版本中,将加以完善。
  5. 分数答案的解决,对于分数计算,我们探讨了一下,最后想到的计算方法是先通分再约分。

实际效果展示图:

中英文切换界面

中文界面

英文界面

编码规范

  1. 为了方便在中英文版本上的配合,我们就默认了这样的正确错误判断格式。代码如下:

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++;
		}
	}

在统一的判断对错的输出之后,更便于合作版本的编辑。

  1. 其次我们的分数输入也达成一致统一规范,用户输入除法保留两位小数,输入为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不易完成之处,所以会努力学习知识,不足自己的不足之处。

在最后特别鸣谢畅畅学长的耐心帮助!

posted @ 2017-02-16 14:28  isLiuhy  阅读(281)  评论(2编辑  收藏  举报