C语言寒假大作战04

[亡魂溺海] 提交于 2020-02-03 22:07:58
这个作业属于哪个课程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://gitee.com/carrage

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!