zoukankan      html  css  js  c++  java
  • 编写一个能自动生成小学四则运算题目的程序。

    主要功能:运算小学四则运算,可以选择加减乘除以及混合运算。

    设计思想:首先思考运算数字范围,考虑小学生的运算能力,然后分类运算方法,分为加减乘除混合运算,

    然后可以选择是继续做题还是退出程序,可以总结做对或者做错的题数,方便计算正确以及错误的题数。

    源代码:

    #include <stdio.h>

    #include <ctype.h>

    #include <time.h>

    #include <stdlib.h>

    #include <windows.h>

    #define IDNO_LENGTH 6

    #define CALC_KIND 4

    char getSignal();

    int getResult(int,int,char);

    void takeTest();

    void falsePrint(int);

    void correctPrint(int);

    //main函数

    void main()

    {

        while(1)

        {

            takeTest();

        }

         

    }

    //获取随机运算符

    char getSignal()

    {

        char signal[CALC_KIND]={'+','-','*','/'};

        srand((unsigned)time(NULL));

        return signal[rand()%4];

    }

    //获取随机数

    int random(double start, double end)

    {

        return (int)(start+(end-start)*rand()/(RAND_MAX+ 1.0));

    }

    //运算

    int getResult(int num1,int num2,char signal)

    {

        int res;

        switch(signal)

        {

        case '+':

            res=num1+num2;break;

        case '-':

            res=num1-num2;break;

        case '*':

            res=num1*num2;break;

        case '/':

            res=num1/num2;break;

        default:

            res=0;

            printf("运算符不符合规则 ");

        }

        return res;

    }

    //列出题目

    void takeTest()

    {

        int giveRes;

        int num1;

        int num2;

        char signal;

        int printFlag;

        srand((unsigned)time(NULL));

        signal=getSignal();

        num1=random(0,100);

        num2=random(1,100);

        if(signal=='-')

        {

            if(num1<num2)

            {

                int temp;

                temp=num1;

                num1=num2;

                num2=temp;

            }

        }

        if(signal=='/')

        {

            if(num2==0)

            {

                int temp;

                temp=num1;

                num1=num2;

                num2=temp;

            }

        }

        printf("%d%c%d=",num1,signal,num2);

        scanf("%d",&giveRes);

        fflush(stdin);

        if(getResult(num1,num2,signal)==giveRes)

        {

            printFlag=random(1,5);

            correctPrint(printFlag);

        }

        else

        {

            printFlag=random(1,4);

            falsePrint(printFlag);

            printf("正确答案:%d ",getResult(num1,num2,signal));

        }

    }

    //回答正确打印信息

    void correctPrint(int num)

    {

        switch(num)

        {

        case 1:

            printf("You're right! ");break;

        case 2:

            printf("It's OK! ");break;

        case 3:

            printf("Correct! ");break;

        case 4:

            printf("Perfect! ");break;

        case 5:

            printf("Good! ");break;

        default:

            printf("Powerful! ");break;

        }

    }

    //回答错误打印信息

    void falsePrint(int num)

    {

        switch(num)

        {

        case 1:

            printf("You're lost!");break;

        case 2:

            printf("Failure!");break;

        case 3:

            printf("Come on!");break;

        case 4:

            printf("It's wrong!");break;

        default:

            printf("Incorrect!");break;

        }

    }

    感谢《百度贴吧》大神的帮助

  • 相关阅读:
    spring 源码解析一(bean定义)
    IOC 容器中添加组件的方式
    spring 后置处理器
    .NetCore3.1 配置Kestrel端口的几种方式及优先级
    CESIUM空间中AB两点A绕B点的地面法向量旋转任意角度后新的A点坐标(A’)
    Cesium坐标转换:根据两个坐标点(坐标点a、坐标点b)的经纬度,计算a点和b点的角度
    任意一个点A(x,y)围绕任意一个点B(a,b)旋转任意角度后的坐标值
    已知地球上的2点坐标,A和B,求A,B线上 任意点位置。
    centos6下mysql5.7.13制作rpm包
    sql 删除狐立帐户
  • 原文地址:https://www.cnblogs.com/HAOZHE/p/5276763.html
Copyright © 2011-2022 走看看