• 30道四则运算


    题目如上图,首先我们先确定出所需要的随机数函数rand(),但是这个随机数可能会是一个很大的数,由于我们需要的数为0~100,所以利用余数rand()%100即可得出,由于运算符也是随机的,所以我们可利用switch...case函数来确定运算符即可。但是在具体运算时则需要具体考虑每一种运算。由于不能出现负数,所以减法时被减数要大于减数。除法中则是除数不能为0,分数中分母不能为0,这些情况都要考虑到。

    #include<stdio.h>
    #include<math.h>
    #include<stdlib.h>
    #include<math.h>
    
    void menu()
    {
        printf("*********************************
    ");
        printf("**********1.四则运算*************
    ");
        printf("**********2.真分数运算***********
    "); 
        printf("**********3.混合运算*************
    ");
        printf("**********4.退出*****************
    ");
        printf("*********************************
    ");
        printf("请输入选择的题型:");
    }
    
    
    void main()
    {
        int a, b, c,d,e,f,h,t, i, m;
        float j, k;
        while (1)
        {
            menu();
            scanf_s("%d", &m);
            switch (m)
            {
            case 1:
            {
                for (i = 0; i < 30; i++)
                {
                    a = rand() % 100;
                    b = rand() % 100;
                    c = rand() % 4;
                    switch (c)
                    {
                    case 0:printf("%d + %d = 
    ", a, b); break;
                    case 1:if (a < b)
                        printf("%d - %d = 
    ", b, a);
                           else
                               printf("%d - %d = 
    ", a, b); break;
                    case 2:printf("%d * %d = 
    ", a, b); break;
                    case 3:while (b == 0)
                        b = rand() % 100;
                        printf("%d ÷ %d = 
    ", a, b); break;
                    }
                }
                break;
            }
            case 2:
            {
                for (i = 0; i < 30; i++)
                {
                    a = rand() % 100;
                    c = rand() % 4;
                    d = rand() % 100;
                    do
                    {
                        b = rand() % 100;
                        e = rand() % 100;
                    } while (b == 0 || e == 0);
                    if (a > b)
                    {
                        t = a;
                        a = b;
                        b = t;
                    }
                    if (d > e)
                    {
                        t = d;
                        d = e;
                        e = t;
                    }
                    switch (c)
                    {
                    case 0:printf("%d/%d + %d/%d = 
    ", a, b, d, e); break;
                    case 1:
                        j = (float)a / b;
                        k = (float)d / e;
                        if (j < k)
                            printf("%d/%d - %d/%d = 
    ", d, e, a, b);
                        else
                            printf("%d/%d - %d/%d = 
    ", a, b, d, e); break;
                    case 2:printf("%d/%d * %d/%d = 
    ", a, b, d, e); break;
                    case 3:while (d == 0)
                        d = rand() % 100;
                        printf("%d/%d ÷ %d/%d = 
    ", a, b, d, e); break;
                    }
                }
                break;
            }
            
            case 3:
            {
                for (i = 0; i < 30; i++)
                {
                    f = rand() % 100;
                    h = rand() % 100;
                    c = rand() % 8;
    
                    a = rand() % 100;
                    d = rand() % 100;
                    do
                    {
                        b = rand() % 100;
                        e = rand() % 100;
                    } while (b == 0 || e == 0);
                    if (a > b)
                    {
                        t = a;
                        a = b;
                        b = t;
                    }
                    if (d > e)
                    {
                        t = d;
                        d = e;
                        e = t;
                    }
                    switch (c)
                    {
                    case 0:printf("%d + %d = 
    ", f, h); break;
                    case 1:if (f < h)
                        printf("%d - %d = 
    ", h, f);
                           else
                               printf("%d - %d = 
    ", f, h); break;
                    case 2:printf("%d * %d = 
    ", f, h); break;
                    case 3:while (f == 0)
                        f = rand() % 100;
                        printf("%d ÷ %d = 
    ", f, h); break;
    
                    case 4:printf("%d/%d + %d/%d = 
    ", a, b, d, e); break;
                    case 5:
                        j = (float)a / b;
                        k = (float)d / e;
                        if (j < k)
                            printf("%d/%d - %d/%d = 
    ", d, e, a, b);
                        else
                            printf("%d/%d - %d/%d = 
    ", a, b, d, e); break;
                    case 6:printf("%d/%d * %d/%d = 
    ", a, b, d, e); break;
                    case 7:while (d == 0)
                        d = rand() % 100;
                        printf("%d/%d ÷ %d/%d = 
    ", a, b, d, e); break;
                    }
                }
                break;
            }
            case 4:exit(0);
            }
        }
    }

    程序运行结果:

    这次编程共花费了我将近一个小时的时间,是因为长时间没有进行编程而且开始之前没有做好分析,还是和以前一样边编程边进行思考,很多东西都是临时决定的,缺乏严谨的问题思考。但是在代码初次编辑完成之后还进行了一些修改,是代码进一步完善。现在未解决的问题还是如何确保所出的题目不重复以及复杂的四则运算(多个数的加减乘除运算以及带括号的数的运算都是没有考虑的,还有待改进。

  • 相关阅读:
    ASP.NET Core Docker部署
    Asp.Net Core 发布和部署(Linux + Jexus )
    Asp.Net Core 发布和部署( MacOS + Linux + Nginx )
    作为一个测试leader平时应该注意哪些方面
    【转】性能测试工具 性能测试如何做?
    【转】Grafana系列教程–Grafana基本概念
    jar包和war包的介绍和区别
    MySQL常用存储引擎
    【参】编程习惯
    【转】性能测试中如何定位性能瓶颈
  • 原文地址:https://www.cnblogs.com/ruanlei/p/5269244.html
Copyright © 2020-2023  润新知