1.作业头
问题 |
答案 |
这个作业属于哪个课程 |
班级的链接 |
这个作业要求在哪里 |
作业链接 |
这个作业的目标 |
用C语言编写随机生成的四则运算并得出答案 |
作业正文 |
作业 |
其他参考文献 |
参考链接 |
2.菜单程序函数调用图如下:
![](https://img2018.cnblogs.com/blog/1806794/202002/1806794-20200211124459020-1835579834.png)
3. 设计思路和遇到的问题
设计思路:
利用原有的代码进行改编,使之由输出四则运算题目变成输出四则运算题目并且计算出答案,同时还要保证式子有意义。
遇到的问题:
如何用简便的代码代替输出有两个随机运算符的式子。
4. 程序结果截图
![](https://img2018.cnblogs.com/blog/1806794/202002/1806794-20200213114136251-1196864645.png)
![](https://img2018.cnblogs.com/blog/1806794/202002/1806794-20200213114202860-1261634618.png)
![](https://img2018.cnblogs.com/blog/1806794/202002/1806794-20200213114227677-1699916338.png)
![](https://img2018.cnblogs.com/blog/1806794/202002/1806794-20200213114245788-2087121172.png)
5. 程序代码
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void menu()
{
printf("操作列表:
");
printf("1)一年级 2)二年级 3)三年级
");
printf("4)帮助 5)退出程序
");
printf("请输入操作>
");
}
void help()
{
printf("帮助信息
");
printf("您需要输入命令代号来进行操作,且
");
printf("一年级题目为不超过十位的加减法;
");
printf("二年级题目为不超过百位的乘除法;
");
printf("三年级题目为不超过百位的加减乘除混合题目。
");
}
void error()
{
printf("Error! ! !
");
printf("错误操作指令,请重新输入
");
}
void operation_1()
{
char op[2]={'+','-'},m;
int i,n,a,b;
printf("现在是一年级题目:
");
printf("<请输入生成个数> ");
scanf("%d",&n);
srand(time(NULL));
for(i=1; i<=n; i++)
{
a=rand()%10;
b=rand()%10;
switch(op[rand()%2])
{
case '+': printf("%d + %d = %d
",a,b,a+b); break;
case '-': printf("%d - %d = %d
",a,b,a-b); break;
}
}
}
void operation_2()
{
char op[2]={'*','/'},m;
int i,n,a,b;
printf("现在是二年级题目:
");
printf("<请输入生成个数> ");
scanf("%d",&n);
srand(time(NULL));
for(i=1; i<=n; i++)
{
a=rand()%10;
b=rand()%9+1;
switch(op[rand()%2])
{
case '*': printf("%d * %d = %d
",a,b,a*b); break;
case '/': printf("%d / %d = %g
",a,b,(double)a/b); break;
}
}
}
void operation_3()
{
char op[4]={'+','-','*','/'},m;
int i,n,a,b,c;
printf("现在是三年级题目:
");
printf("<请输入生成个数> ");
scanf("%d",&n);
srand(time(NULL));
for(i=1; i<=n; i++)
{
a=rand()%100;
b=rand()%9+1;
c=rand()%9+1;
switch(rand()%16+1)
{
case 1: printf("%d + %d + %d = %d
",a,b,c,a+b+c); break;
case 2: printf("%d + %d - %d = %d
",a,b,c,a+b-c); break;
case 3: printf("%d + %d * %d = %d
",a,b,c,a+b*c); break;
case 4: printf("%d + %d / %d = %g
",a,b,c,(double)a+b/c); break;
case 5: printf("%d - %d + %d = %d
",a,b,c,a-b+c); break;
case 6: printf("%d - %d - %d = %d
",a,b,c,a-b-c); break;
case 7: printf("%d - %d * %d = %d
",a,b,c,a-b*c); break;
case 8: printf("%d - %d / %d = %g
",a,b,c,(double)a-b/c); break;
case 9: printf("%d * %d + %d = %d
",a,b,c,a*b+c); break;
case 10: printf("%d * %d - %d = %d
",a,b,c,a*b-c); break;
case 11: printf("%d * %d * %d = %d
",a,b,c,a*b*c); break;
case 12: printf("%d * %d / %d = %g
",a,b,c,(double)a*b/c); break;
case 13: printf("%d / %d + %d = %g
",a,b,c,(double)a/b+c); break;
case 14: printf("%d / %d - %d = %g
",a,b,c,(double)a/b-c); break;
case 15: printf("%d / %d * %d = %g
",a,b,c,(double)a/b*c); break;
case 16: printf("%d / %d / %d = %g
",a,b,c,(double)a/b/c); break;
}
}
}int main()
{
int m;
printf("========== 口算生成器 ==========
");
printf("欢迎使用口算生成器 :
");
help();
menu();
do{
scanf("%d",&m);
printf("< 执行操作 >
");
switch (m) {
case 1: operation_1(); break;
case 2: operation_2(); break;
case 3: operation_3(); break;
case 4: help(); break;
case 5: printf("程序结束, 欢迎下次使用 任意键结束……
"); break;
default:error(); break;
}
if(m!=5)
{
menu();
}
}while(m!=5);
return 0;
}
6. Gitee上传截图与链接
![](https://img2018.cnblogs.com/blog/1806794/202002/1806794-20200213121014336-419415100.png)
![](https://img2018.cnblogs.com/blog/1806794/202002/1806794-20200213120939001-1913990228.png)
gitee链接
7.参考资料
资料