C语言寒假大作战04
作业头
问题 | 答案 |
---|---|
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/zswxy/CST2019-2 |
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/CST2019-2/homework/10279 |
这个作业的目标 | 使用上次作业的菜单框架,并在其基础上增加各年级题目的答案函数 |
作业正文 | https://www.cnblogs.com/abcd123456/p/12260027.html |
其他参考文献 | C语言程序设计,百度 |
主要内容
使用上次作业的菜单框架,在其基础上增加各年级题目的答案函数。
1.菜单程序函数调用图如下:
2.设计思路和遇到的问题
- 设计思路同作业2,本次作业需要加答案函数
遇到的问题:在三年级的三个随机数两个运算符不知如何判断0的情况。
3.程序结果截图
4.程序代码
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int help(int opt)
{
printf("\n操作列表:\n 1)一年级 2)二年级 3)三年级\n 4)帮助 5)退出程序\n");
printf("请输入操作> ");
return 0;
}
void operation1(int opt)
{
int i;
printf("< 执行操作 :)\n\n现在是一年级题目:\n请输入生成数> 10\n< 执行操作 :)\n\n");
for(i=0;i<10;i++)
{
int divisor1=rand()%10;
int divisor2=rand()%10;
int kind;
int result1;
int result2;
kind=rand()%2+1;
switch(kind)
{
case 1:result1=divisor1+divisor2;
printf("%d + %d=%d\n",divisor1,divisor2,result1);break;
case 2:result2=divisor1-divisor2;
printf("%d - %d=%d\n",divisor1,divisor2,result2);break;
}
}
}
void operation2(int opt)
{
int i,op;
printf("< 执行操作 :)\n\n现在是二年级题目:\n请输入生成数> 10\n< 执行操作 :)\n\n");
for(i=0;i<10;i++)
{
int divisor1=rand()%101;
int divisor2=rand()%101;
int kind;
int result1;
double result2;
kind=rand()%2+1;
if(divisor2==0)printf("%2d * 0=0\n",divisor1);
else
switch(kind)
{
case 1:result1=divisor1*divisor2;
printf("%2d * %2d=%d\n",divisor1,divisor2,result1);break;
case 2:result2=(float)divisor1/divisor2; //强制转化浮点型
printf("%2d / %2d=%f\n",divisor1,divisor2,result2);break;
}
}
}
void operation3(int opt)
{
int i,op1,op2;
printf("< 执行操作 :)\n\n现在是三年级题目:\n请输入生成数> 10\n< 执行操作 :)\n\n");
for(i=0;i<10;i++)
{
int divisor1=rand()%101;
int divisor2=rand()%101;
int divisor3=rand()%101;
int kind,result1;
double result2,result3,result4;
kind=rand()%4+1;
switch(kind)
{
case 1:result1=divisor1+divisor2*divisor3;
printf("%d + %d * %d=%d\n",divisor1,divisor2,divisor3,result1);break;
case 2:result2=divisor1*divisor2/(float)divisor3; //强制转化浮点型
printf("%d * %d / %d=%lf\n",divisor1,divisor2,divisor3,result2);break;
case 3:result3=(float)divisor1/divisor2-divisor3; //强制转化浮点型
printf("%d / %d - %d=%lf\n",divisor1,divisor2,divisor3,result3);break;
case 4:result4=(float)divisor1/divisor2*divisor3; //强制转化浮点型
printf("%d / %d * %d=%lf\n",divisor1,divisor2,divisor3,result4);break;
}
}
}
int main()
{
printf("========== 口算生成器 ==========\n");
printf("欢迎使用口算生成器 :\n \n \n帮助信息\n您需要输入命令代号来进行操作, 且\n");
printf("一年级题目为不超过十位的加减法;\n二年级题目为不超过百位的乘除法;\n三年级题目为不超过百位的加减乘除混合题目.\n\n\n");
int opt=-1;
while(opt!=0)
{
help(opt);
scanf("%d",&opt);
switch(opt)
{
case 1:operation1(opt);break;
case 2:operation2(opt);break;
case 3:operation3(opt);break;
}
}
return 0;
}
5.Gittee上传截图与链接
截图: