c语言编程 数学游戏

c语言编程 数学游戏一共十关 每关2道题 每题随机两个数字作随机加减乘除 正确的话进入下一关 错误的话 告诉那道错了 并给正确答案的游戏

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <malloc.h>
#define z_Size 3  //随机数 整数最大位数,可自由修改,但总位数不要超过变量类型
#define x_Size 3  //随机数 小数最大位数
#define tmN 10  //生成题目的数量,默认10条
typedef enum { true=1, false=0} boolean;
typedef struct timu
{
    int id; //题目编号自增
    double num1;//运算数字1
    double num2;//运算数字2
    char f;//运算符
    double n;//运算结果
    boolean flag;//true:回答正确 ;flase:回答错误

}TM;
double power10(int m)//计算10的次方 支持负数幂
{
    int i;
    double sum=1;
    if(m==0)
        return sum;
    for(i=0;i<abs(m);i++)
        sum=sum*10;
    if(m>0)
        return sum;
    if(m<0)
        return 1/sum;
    return -1;
}
int main()
{
    srand(time(NULL));
    int zSize,xSize,i,fn,false_count=0;
    double xPow10,ansr;
    TM tms[tmN];
    for(i=0;i<tmN;i++)
    {
        zSize=rand()%z_Size;
        xSize=rand()%x_Size;
        xPow10=power10(xSize);
        tms[i].id=i+1;
        tms[i].num1=rand()%(int)power10(zSize)+(double)(rand()%(int)xPow10)/xPow10;
        tms[i].num2=rand()%(int)power10(zSize)+(double)(rand()%(int)xPow10)/xPow10;
        fn=rand()%3;//随机运算符
        if(fn==0)//加法
        {
            tms[i].f='+';
            tms[i].n=tms[i].num1+tms[i].num2;
        }
        if(fn==1)//加法
        {
            tms[i].f='-';
            tms[i].n=tms[i].num1-tms[i].num2;
        }
        if(fn==2)//加法
        {
            tms[i].f='*';
            tms[i].n=tms[i].num1*tms[i].num2;
        }
        if(fn==3)//加法
        {
            tms[i].f='/';
            tms[i].n=tms[i].num1/tms[i].num2;
        }
        printf("题目%d、请计算:%lf%c%lf=?\n回答:",tms[i].id,tms[i].num1,tms[i].f,tms[i].num2);
        scanf("%lf",&ansr);
        if(abs(tms[i].n-ansr)<(1/power10(zSize)))
            tms[i].flag=true;
        else
            tms[i].flag=false;
    }
    printf("\n-------开始统计回答结果-----------\n");
    for(i=0;i<tmN;i++)
    {
        if(tms[i].flag==false)
        {
            false_count++;
            printf("第%d题回答错误,答案应该是:%lf\n",tms[i].id,tms[i].n);
        }
    }
    printf("共回答正确%d个,错误%d个\n",tmN-false_count,false_count);
    return 0;
}

温馨提示:答案为网友推荐,仅供参考
相似回答