一、 特别正经的四则运算结对作业简介!——驾驶司机一枚 ~~
1.题目要求:
本次作业要求两个人合作完成,驾驶员和导航员角色自定,鼓励大家在工作期间角色随时互换
我们在刚开始上课的时候介绍过一个小学四则运算自动生成程序的例子,请实现它,要求:
(1)能够自动生成四则运算练习题
(2)可以定制题目数量
(3)用户可以选择运算符
(4)用户设置最大数(如十以内、百以内等)
(5)用户选择是否有括号、是否有小数
(6)用户选择输出方式(如输出到文件、打印机等)
(7)最好能提供图形用户界面(根据自己能力选做,以完成上述功能为主)
因为我们俩的编程能力都不是很强,而且现学的话时间比较短,就直接忽视图形用户界面什么的了
什么都不说了 先给自己立一个flag!如果可以的话,以后可能会补一下的
2.驾驶员和领航员的职责:
♂“滴滴滴”——驾驶员:
能够完成全部代码工作,程序基本实现全部要求功能,并将代码上传至coding.net或者GitHub代码托管系统中(15分)
能够对导航员在本次编程工作中起到的作用给出客观评价,并完成500字以上的总结(5分)
♂“让一让啊让一让”——领航员:
能够辅助驾驶员完成全部代码工作,并且为关键函数选用合适的覆盖标准设计测试用例,并编写代码进行单元自动测试(10分)
能够根据上次作业的代码检查表对驾驶员的本次工作进行评价(5分)
能够对本次工作完成500字以上的总结(5分)
二、 特别正经的四则运算代码详解!——略略略 ~~
1.放在前面的所谓main函数
main()
{
int x=30,y=6;
char choice;
srand( (unsigned)time( NULL ) );
while(1)
{
system("cls");
printf("****************************************************************************************************************************************************************");
gotoxy(x,y);
puts("1.加法练习.");
gotoxy(x,y+1);
puts("2.减法练习.");
gotoxy(x,y+2);
puts("3.乘法练习.");
gotoxy(x,y+3);
puts("4.除法练习.");
gotoxy(x,y+4);
puts("5.混合运算.");
gotoxy(x,y+5);
puts("6.退出.");
gotoxy(x,y+7);
puts("请选择想要的运算方式...");
choice=getch();
printf("****************************************************************************************************************************************************************");
puts("请设置练习的最大数:");
scanf("%d",&Max);
printf("****************************************************************************************************************************************************************");
puts("请输入题目数量:");
scanf("%d",&Number);
switch(choice)
{
void add();
void subt();
void mult();
void divid();
void huenhe();
case '1':add();break;
case '2':subt();break;
case '3':mult();break;
case '4':divid();break;
case '5':huenhe();break;
case '6':exit(0);
default:printf("选择有误!按任意键重新输入...");
getch();
}
}
}
以上就是一个简单的用户选择界面,emmm
2.加法运算部分
void add()
{
int i,t,num1,num2,answer;
t=0;
system("cls");
while(t!=Number)
{
num1=rand()%Max;
num2=rand()%Max;
question(num1,num2,'+');
scanf("%d",&answer);
if(answer==num1+num2)
puts("正确!");
else
printf("错误!正确答案是:%d
",num1+num2);
t++;
}
if(t==Number)
{
printf("
你已经完成练习,按任意键返回菜单...");
getch();
}
}
其实总体思路很简单,随机取数然后判断用户输入答案和正确答案是否一致,减法和加法是一样的这里就不过多解释了QAQ
3.除法运算部分
void divid()
{
int i,t,num1,num2,answer;
t=0;
while(t!=Number)
{
num1=rand()%Max;
num2=rand()%Max;
if (num2==0)num2++;
question(num1,num2,'/');
scanf("%d",&answer);
if(answer==num1/num2)
{
puts("正确!");
}
else
{
printf("错误!正确答案是:%d
",num1/num2);
}
t++;
}
if(t==Number)
{
printf("
你已经完成练习,按任意键返回菜单...");
getch();
}
}
感谢我的领航员孟柳老可爱的提醒,原来随机输出被除数是有零的...哭唧唧...然后我就特别简单粗暴地随机到零加1了,哈哈哈
4.混合运算
void huenhe()
{
int t,a,b;
long s,m,j,answer,num1,num2,num3;
char opt1,opt2;
t=0;
s=answer=t=m=0;
system("cls");
while(t!=Number)
{
num1=rand()%Max;
num2=rand()%Max;
num3=rand()%Max;
a=rand()%4;
b=rand()%4;
opt1=fuhao(a);
opt2=fuhao(b);
printf("%ld %c %ld %c %ld=",num1,opt1,num2,opt2,num3);
scanf("%ld",&answer);
if(opt1=='*'||opt1=='/')
{
switch(opt1)
{ case '*':m=num1*num2;break;
case '/':m=num1/num2;break;
}
switch(opt2)
{
case '+':s=m+num3;break;
case '-':s=m-num3;break;
case '*':s=m*num3;break;
case '/':s=m/num3;break;
}
}
else if(opt2=='*'||opt2=='/')
{
switch(opt2)
{
case '*':m=num2*num3;break;
case '/':m=num2/num3;break;
}
switch(opt1)
{
case '+':s=num1+m;break;
case '-':s=num1-m;break;
case '*':s=num1*m;break;
case '/':s=num1/m;break;
}
}
if(opt1==opt2||opt1=='+'&&opt2=='-'||opt1=='-'&&opt2=='+')
{
switch(opt1)
{
case '+':j=num1+num2;break;
case '-':j=num1-num2;break;
}
switch(opt2)
{
case '+':s=j+num3;break;
case '-':s=j-num3;break;
}
}
if(answer==s)
{
puts("正确!");
}
else
{
printf("错误!正确答案是:%ld
",s);
}
t++;
}
if(t==Number)
{printf("
你已经完成练习,按任意键返回菜单.....");
getch();
}
}
混合运算啊...就是一个判断判断再判断的过程!简单粗暴= =
三、 特别正经的结对作业小结—— 特别严肃
首先,要特别感谢我家小老可爱,和我一起结对也是有点辛苦的,哈哈哈,毕竟我还是萌新啊(←凑不要脸),咳咳咳,怎么说,这次结对作业虽然完成的不是很完美,但是的确是我们俩认认真真研究做出来的,有瑕疵也没关系,其实做到这样子感觉就很开心了,在这个过程中就是自我提升自我学习的过程,老可爱给我提出了很多很有建设性的问题,对一开始的用户界面也进行了一定的改良(一开始,有点点糟心了哈哈哈),时间其实还是有些仓促的,我们还没有学会UI什么的,对于文件传送也是一脸茫然,试了好几次也不对,就放弃了,哎,有时间是一定要好好研究研究的,在我提交作业之前,看了好几位大神的提交作业,dalao果然都能做出来界面啊~~甚至于,做出来可下载安装的软件,哎,差距,虽然感到了差距的如此之大,更加激励了我要好好学习,补上缺失的部分,最后的最后,撒浪嘿呦~
此处贴上结对伙伴孟柳老可爱的博客园
本次程序代码
四、 特别正经的结对作业照片—— 咳咳咳
(↑↑↑↑↑寝室日常的两个长发小可爱哈哈哈)
—————The End——————