标签:测试 时间 作业 学习 输入数据 方法 fprintf 相同 开始
题目要求
我们在刚开始上课的时候介绍过一个小学四则运算自动生成程序的例子,请实现它,要求:
队伍
本次作业要求两个人合作完成,驾驶员和导航员角色自定,鼓励大家在工作期间角色随时互换。
驾驶员(我)
1.能够完成全部代码工作,程序基本实现全部要求功能,并将代码上传至coding.net或者GitHub代码托管系统中。
2.能够对导航员在本次编程工作中起到的作用给出客观评价,并完成500字以上的总结。
领航员(霍超然)
1.能够辅助驾驶员完成全部代码工作,并且为关键函数选用合适的覆盖标准设计测试用例,并编写代码进行单元自动测试。
2.能够根据上次作业的代码检查表对驾驶员的本次工作进行评价。
3.能够对本次工作完成500字以上的总结。
程序实现
1.重要变量
int m;//数值范围[0,m]
int sl;//生成算式的数量
int zl; //算式种类
int xs;//是否有小数
int kh;//是否有括号
int gs;//输出形式
用户通过提示,输入这些变量的值,用来选择要输出什么形式的算式
2.无括号情况
在无括号情况下,我默认为算式为二元式,通过主函数提示用户输入数据来实现选择要进行什么操作。代码如下:
void scwukuohao()//无括号的二元式
{
double a, b, t = 0;
a = rand() % (m);
b = rand() % (m);
if (xs==0)//用户不需要小数时调用
{
while (sl)//生成的个数控制
{
a = rand() % (m);
b = rand() % (m);
if (zl == 4)//用于实现随机生成四种算式
{
t = 1;
zl = rand() % 4;//zl将在0123中随机取值
}
switch (zl)//通过zl的值输出不同的算式
{
case 0://输出加法
{
if (gs == 1) { printf("%.0lf+%.0lf\n", a, b); break; }
else { fprintf(f3, "%.0lf+%.0lf\n", a, b); break; }
}
case 1://输出减法
{
if (a > b)
{
if (gs == 1) { printf("%.0lf-%.0lf\n", a, b); break; }
else { fprintf(f3,"%.0lf-%.0lf\n", a, b); break; }
}
else
{
if (gs == 1) { printf("%.0lf-%.0lf\n", b, a); break; }
else { fprintf(f3, "%.0lf-%.0lf\n", b, a); break; }
}
}
case 2:if (gs == 1) { printf("%.0lf*%.0lf\n", a, b); break; }//输出乘法
else{ fprintf(f3,"%.0lf*%.0lf\n", a, b); break; }
case 3:if (gs == 1) { printf("%.0lf/%.0lf\n", a, b); break; }//输出除法
else{ fprintf(f3,"%.0lf/%.0lf\n", a, b); break; }
}
if (t == 1)
{
zl = 4;
}
sl--;
}
}
return;
}
在用户需要小数时,代码基本相同,只需要将随机出的数变成小数即可。代码如下:
a = rand() % (m*10)/10.0+1;
b = rand() % (m * 10) / 10.0 + 1;
2.有括号情况
在有括号时,我预设了8种算式格式,通过随机变量来随机输出这八种算式,代码如下:
void scyoukuohao()//有括号的多元式
{
double a, b, c, d;
int tt;
if (xs == 0)//没有小数时调用
{
while (sl)
{
a = rand() % (m);
b = rand() % (m);
c = rand() % (m);
d = rand() % (m);
tt = rand() % 8;//用于随机生成预设的8种算式格式
switch (tt)
{
case 0:if (gs == 1) { printf("(%.0lf+%.0lf)*%.0lf/%.0lf\n", a, b, c, d); break; }
else{ fprintf(f3,"(%.0lf+%.0lf)*%.0lf/%.0lf\n", a, b, c, d); break; }
case 1:
{
if (a > b)
{
if (gs == 1) { printf("(%.0lf-%.0lf)*%.0lf/%.0lf\n", a, b, c, d); break; }
else{ fprintf(f3,"(%.0lf-%.0lf)*%.0lf/%.0lf\n", a, b, c, d); break; }
}
else
{
if (gs == 1) { printf("(%.0lf-%.0lf)*%.0lf/%.0lf\n", b, a, c, d); break; }
else { fprintf(f3,"(%.0lf-%.0lf)*%.0lf/%.0lf\n", b, a, c, d); break; }
}
}
case 2:if (gs == 1) { printf("%.0lf*(%.0lf+%.0lf)/%.0lf\n", a, b, c, d); break; }
else { fprintf(f3,"%.0lf*(%.0lf+%.0lf)/%.0lf\n", a, b, c, d); break; }
case 3:if (gs == 1) { printf("%.0lf/(%.0lf+%.0lf)*%.0lf\n", a, b, c, d); break; }
else{ fprintf(f3,"%.0lf/(%.0lf+%.0lf)*%.0lf\n", a, b, c, d); break; }
case 4:
{
if (c > d)
{
if (gs == 1) { printf("(%.0lf+%.0lf)*(%.0lf-%.0lf)\n", a, b, c, d); break; }
else{ fprintf(f3,"(%.0lf+%.0lf)*(%.0lf-%.0lf)\n", a, b, c, d); break; }
}
else
{
if (gs == 1) { printf("(%.0lf+%.0lf)*(%.0lf-%.0lf)\n", a, b, d, c); break; }
else { fprintf(f3,"(%.0lf+%.0lf)*(%.0lf-%.0lf)\n", a, b, d, c); break; }
}
}
case 5:
{
if (a > b)
{
if (gs == 1) { printf("(%.0lf-%.0lf)/(%.0lf+%.0lf)\n", a, b, c, d); break; }
else{ fprintf(f3,"(%.0lf-%.0lf)/(%.0lf+%.0lf)\n", a, b, c, d); break; }
}
else
{
if (gs == 1) { printf("(%.0lf-%.0lf)/(%.0lf+%.0lf)\n", b, a, d, c); break; }
else { printf("(%.0lf-%.0lf)/(%.0lf+%.0lf)\n", b, a, d, c); break; }
}
}
case 6:if (gs == 1) { printf("(%.0lf+%.0lf)*(%.0lf+%.0lf)\n", a, b, c, d); break; }
else { fprintf(f3,"(%.0lf+%.0lf)*(%.0lf+%.0lf)\n", a, b, c, d); break; }
case 7:
{
if (a > b&&c>d)
{
if (gs == 1) { printf("(%.0lf-%.0lf)/(%.0lf-%.0lf)\n", a, b, c, d); break; }
else { fprintf(f3,"(%.0lf-%.0lf)/(%.0lf-%.0lf)\n", a, b, c, d); break; }
}
if(a<b&&c>d)
{
if (gs == 1) { printf("(%.0lf-%.0lf)/(%.0lf-%.0lf)\n", b, a, c, d); break; }
else { fprintf(f3,"(%.0lf-%.0lf)/(%.0lf-%.0lf)\n", b, a, c, d); break; }
}
if (a>b&&c < d)
{
if (gs == 1) { printf("(%.0lf-%.0lf)/(%.0lf-%.0lf)\n", a, b, d, c); break; }
else { fprintf(f3,"(%.0lf-%.0lf)/(%.0lf-%.0lf)\n", a, b, d, c); break; }
}
if(a<b&&c<d)
{
if (gs == 1) { printf("(%.0lf-%.0lf)/(%.0lf-%.0lf)\n", b, a, d, c); break; }
else{ fprintf(f3,"(%.0lf-%.0lf)/(%.0lf-%.0lf)\n", b, a, d, c); break; }
}
}
}
sl--;
}
}
在用户需要小数时,代码基本相同,只需要将随机出的数变成小数即可。代码如下:
a = rand() % (m*10)/10.0+1;
b = rand() % (m * 10) / 10.0 + 1;
c = rand() % (m * 10) / 10.0 + 1;
d = rand() % (m * 10) / 10.0 + 1;
样例测试
1.测试一
输出全是加法的有小数的20以内的10个算式,直接输出:
输出到文件:
2.测试二
输出随机法则的有小数的20以内的10个算式,直接输出:
输出到文件:
3.测试三
输出有括号的无小数的20以内的10个算式。直接输出:
输出到文件:
总结
标签:测试 时间 作业 学习 输入数据 方法 fprintf 相同 开始
原文地址:https://www.cnblogs.com/mayingjiu123/p/8848942.html