| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/zswxy/SE2019-2 |
|---|---|
这个作业要求在哪里 |
https://edu.cnblogs.com/campus/zswxy/SE2019-2/homework/10275 |
这个作业的目标 |
方便以后做项目 |
作业正文 |
.... |
其他参考文献 |
... |
设计思路和遇到的问题
设计思路:标准C语言编写,没啥思路又不是很难
遇到的问题:在调用计算函数的时候尽管定义的是double类型的答案输,单运算过程用到int类型的函数的话答案还是显示int类型(这个花了很长的时间才找到问题),及结论就是int类型优先级高于double类型
程序结果截图


程序代码
#pragma warning(disable:4996)
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#include<math.h>
double answer(double a, double b, double c, char m, char n)
{
double answer2 = 0;
if (m == '+')
{
if (n == '*')
answer2 = b * c;
if (n == '/')
answer2 = b / c;
if (n == '+')
answer2 = b + c;
if (n == '-')
answer2 = b - c;
answer2 += a;
}
if (m == '-')
{
if (n == '*')
answer2 = b * c;
if (n == '/')
answer2 = b / c;
if (n == '+')
answer2 = b + c;
if (n == '-')
answer2 = b - c;
answer2 = a - answer2;
}
if (m == '*' && n == '*')
answer2 = a * b * c;
if (m == '*' && n == '/')
answer2 = a * b / c;
if (m == '*' && n == '-')
answer2 = a * b - c;
if (m == '*' && n == '+')
answer2 = a * b + c;
if (m == '/' && n == '*')
answer2 = a / b * c;
if (m == '/' && n == '/')
answer2 = a / b / c;
if (m == '/' && n == '-')
answer2 = a / b - c;
if (m == '/' && n == '+')
answer2 = a / b + c;
return answer2;
}
void help()
{
printf("帮助信息\n");
printf("您需要输入命令代号来进行操作, 且\n");
printf("一年级题目为不超过十位的加减法;\n");
printf("二年级题目为不超过百位的乘除法;\n");
printf("三年级题目为不超过百位的加减乘除混合题目.\n");
}
void menu()
{
printf("操作列表:\n");
printf("(1)一年级\t(2)二年级\t(3)三年级\n");
printf("(4)帮助\t(5)退出程序\t(6)清屏\n");
}
void first_grade()
{
int num1, num2, num3 = 0, algorithm, i;
char symbol, symbol2 = '+';
double answer1;
printf("一年级计算题目生成!!\n请输入生成个数");
scanf("%d", &i);
while (i)
{
num1 = rand() % 10;
num2 = rand() % 10;
algorithm = rand() % 10;
if (algorithm % 2 == 0)
symbol = '-';
else
symbol = '+';
answer1 = answer(num1, num2, num3, symbol, symbol2);
printf("%d %c %d = %g\n", num1, symbol, num2, answer1);
i--;
}
}
void second_grade()
{
int num1, num2, num3 = 0, algorithm, i;
char symbol, symbol2 = '+';
double answer1;
printf("二年级计算题目生成!!\n请输入生成个数");
scanf("%d", &i);
while (i)
{
num1 = rand() % 100;
num2 = rand() % 100;
algorithm = rand() % 10;
if (algorithm % 2 == 0)
symbol = '*';
else
{
symbol = '/';
num2 = rand() % 100 + 1;
}
answer1 = answer(num1, num2, num3, symbol, symbol2);
printf("%d %c %d = %g\n", num1, symbol, num2, answer1);
i--;
}
}
void third_grade()
{
int num1, num2, num3, algorithm1, algorithm2, i;
char symbol, symbol2;
double answer1;
printf("三年级计算题目生成!!\n请输入生成个数");
scanf("%d", &i);
while (i)
{
num1 = rand() % 100;
num2 = rand() % 100;
num3 = rand() % 100;
algorithm1 = rand() % 40;
algorithm2 = rand() % 80;
if (algorithm1 % 4 == 0)
symbol = '*';
else if (algorithm1 % 4 == 1)
{
symbol = '/';
num2 = rand() % 100 + 1;
}
else if (algorithm1 % 4 == 2)
symbol = '+';
else
symbol = '-';
if (algorithm2 % 4 == 0)
symbol2 = '*';
else if (algorithm2 % 4 == 1)
{
symbol2 = '/';
num3 = rand() % 100 + 1;
}
else if (algorithm2 % 4 == 2)
symbol2 = '+';
else
symbol2 = '-';
answer1 = answer(num1, num2, num3, symbol, symbol2);
printf("%d %c %d %c %d = %g\n", num1, symbol, num2, symbol2, num3, answer1);
i--;
}
}
int main()
{
int choice, num_operate;
printf("欢迎使用口算生成器 :\n\n\n");
help();
printf("(按回车继续)\n\n");
getchar();
lp:system("cls");
menu();
printf("请输入你的选择 :____");
srand((unsigned)time(NULL));
while (1)
{
scanf("%d", &choice);
switch (choice)
{
case 1:first_grade();break;
case 2:second_grade();break;
case 3:third_grade();break;
case 4:help();break;
case 5:printf("程序结束, 欢迎下次使用");return 0;
case 6:goto lp;break;
default:printf("Error!!!\n错误指令请重新输入");break;
}
printf("生成完毕,请继续输入你的选择 :____\n\n\n");
}
}
Gitee上传截图与链接


码云链接
来源:https://www.cnblogs.com/zjw1324399/p/12257389.html