作业:1759137谢汉森 1759121蔡旭洋
下面是作业情况:
首先先是确定代码需求,确定用C的环境编译完成。
我先写了不需要写出答案的四则运算的测试,一开始就遇到了问题。
发现所有运算都是一样的,我一开始认为是循环出错了,后来在和我的搭档的讨论中发现,
srand((int)time(0));这一串代码不能放在循环里面,否则就会出现上面的情况。
成功。
然后开始写出答案的四则运算。
在过程中我们发现,有的时候随机数会出现0,这在除法运算中是非法的,一开始的处理方法是使用if语句,来避免0的出现,后来经过查阅资料以后发现,只需要x = rand() % 100+1,就跨越避免0的出现,因为x = rand() % 100是0到99,而x = rand() % 100+1是1到100.
下一个问题是关于除法的问题,我们发现除法得出的答案也会有零的出现,这是因为“/”是整除符号,于是我们选择将除数乘以1.0,这样就避免了这个问题。
对于四则运算的符号随机,我们采用了枚举法,将16种符号的组合全部用switch来选择,同时在case语句中使用判断语句来确保其答案在1-100之间,本想是说用栈,但是无从下手,最后选择了枚举法来进行编写。
对于我来说可能组队编程带来的最大的好处时出错了可以有一个人一直在旁边商量着来,两个人的脑子一定比一个人的脑子要好,同时两人也可以互相发现代码中的细节错误。
下面是代码和运算结果截图
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(){
int x, y, z, n, sum, num,shuru=0;
srand(time(NULL));
printf("输入需要多少道题目:");
scanf_s("%d", &num);
while (shuru < num) {
x = rand() % 100 + 1;
y = rand() % 100 + 1;
z = rand() % 100 + 1;
n = rand() % 16;
switch (n)
{
case 0:
sum = x + y + z;
if (sum > 100 || sum < 0) break;
else
{
printf("%d + %d + %d = %d \n", x, y, z, sum);
shuru++;
break;
}
case 1:
sum = x + y - z;
if (sum > 100 || sum < 0) break;
else
{
printf("%d + %d - %d = %d \n", x, y, z, sum);
shuru++;
break;
}
case 2:
sum = x + y * z;
if (sum > 100 || sum < 0) break;
else
{
printf("%d + %d * %d = %d \n", x, y, z, sum);
shuru++;
break;
}
case 3:
sum = x + 1.0 * y / z;
if (sum > 100 || sum < 0) break;
else
{
printf("%d + %d / %d = %d \n", x, y, z, sum);
shuru++;
break;
}
case 4:
sum = x - y + z;
if (sum > 100 || sum < 0) break;
else
{
printf("%d - %d + %d = %d \n", x, y, z, sum);
shuru++;
break;
}
case 5:
sum = x - y - z;
if (sum > 100 || sum < 0) break;
else
{
printf("%d - %d - %d = %d \n", x, y, z, sum);
shuru++;
break;
}
case 6:
sum = x - y * z;
if (sum > 100 || sum < 0) break;
else
{
printf("%d - %d * %d = %d \n", x, y, z, sum);
shuru++;
break;
}
case 7:
sum = x - 1.0 * y / z;
if (sum > 100 || sum < 0) break;
else
{
printf("%d - %d / %d = %d \n", x, y, z, sum);
shuru++;
break;
}
case 8:
sum = x + y + z;
if (sum > 100 || sum < 0) break;
else
{
printf("%d * %d + %d = %d \n", x, y, z, sum);
shuru++;
break;
}
case 9:
sum = x * y - z;
if (sum > 100 || sum < 0) break;
else
{
printf("%d * %d - %d = %d \n", x, y, z, sum);
shuru++;
break;
}
case 10:
sum = x + y * z;
if (sum > 100 || sum < 0) break;
else
{
printf("%d * %d * %d = %d \n", x, y, z, sum);
shuru++;
break;
}
case 11:
sum = x * 1.0 * y / z;
if (sum > 100 || sum < 0) break;
else
{
printf("%d * %d / %d = %d \n", x, y, z, sum);
shuru++;
break;
}
case 12:
sum = 1.0 * x / y + z;
if (sum > 100 || sum < 0) break;
else
{
printf("%d / %d + %d = %d \n", x, y, z, sum);
shuru++;
break;
}
case 13:
sum = 1.0 * x / y - z;
if (sum > 100 || sum < 0) break;
else
{
printf("%d / %d - %d = %d \n", x, y, z, sum);
shuru++;
break;
}
case 14:
sum = 1.0 * x / y * z;
if (sum > 100 || sum < 0) break;
else
{
printf("%d / %d * %d = %d \n", x, y, z, sum);
shuru++;
break;
}
case 15:
sum = 1.0 * x / 1.0 * y / z;
if (sum > 100 || sum < 0) break;
else
{
printf("%d / %d / %d = %d \n", x, y, z, sum);
shuru++;
break;
}
}
}
}