c语言编程 数学游戏

c语言编程数学游戏一共十关每关2道题每题随机两个数字作随机加减乘除正确的话进入下一关错误的话告诉那道错了并给正确答案的游戏... c语言编程 数学游戏一共十关 每关2道题 每题随机两个数字作随机加减乘除 正确的话进入下一关 错误的话 告诉那道错了 并给正确答案的游戏 展开
 我来答
自我编程
2018-04-28 · 科技优质答主
自我编程
采纳数:1481 获赞数:4283

向TA提问 私信TA
展开全部

#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;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式