c语言编程 数学游戏
c语言编程数学游戏一共十关每关2道题每题随机两个数字作随机加减乘除正确的话进入下一关错误的话告诉那道错了并给正确答案的游戏...
c语言编程 数学游戏一共十关 每关2道题 每题随机两个数字作随机加减乘除 正确的话进入下一关 错误的话 告诉那道错了 并给正确答案的游戏
展开
1个回答
展开全部
#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;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询