#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include "keshe.h"
/*自定义库函数*/
#define random(x) rand()%x
#define N 10
#define H 100
int yi;
int er;
int op;
int temp;
int answer;
struct record
/*记录答题结果的结构体*/
{
float all;
float right;
float success_right;
float sucess_percent;
}rec={0,0,0,0.0};
struct mark
/*统计分数的结构体*/
{
int one;
int two;
int three;
int four;
int five;
int score;
}mar={0,0,0,0,0};
void welcome(void)
/*欢迎、提示界面*/
{
PR("*******************************************");
PR(DN);
PR("*
一
起
来
算
术
*");
PR(DN);
PR("*******************************************");
int test(int n)
/*给出题目的函数,其返回值为正确答案*/
{
int che;
srand((unsigned)time (NULL));
yi=random(n)+1;
/*给出一个1~n之间的随机数*/
er=random(n)+1;
/*再给出一个1~n之间的随机数*/
op=random(4)+1;
/*产生1~4之间的随机数来确定运算符号*/
switch (op)
{
case 1 :{answer=yi+er;PR(DD D1 DD D5 DN,yi,er);}break;
case 2 :{if (yi<er)
{temp=yi;yi=er;er=temp;}
answer=yi-er;
PR(DD D2 DD D5 DN,yi,er);
}break;
case 3 :{che=random(10)+1;answer=yi*che;PR(DD D3 DD D5 DN,yi,che);}break;
case 4 :{/*if (yi<er)
{temp=yi;yi=er;er=temp;}*/
while (yi%er!=0)
{
yi=random(n);
er=random(n);
}
answer=yi/er;
PR(DD D4 DD D5 DN,yi,er);
}break;
}
return answer;
}
void test_1(int n)
/*算术函数,完成题目的输出,答案的输入及对答题情况、分数的统计*/
{
int input, rig, pp, i=1, ss;
while (i)//&&input!=1111)
{
ss=1;
rig=test(n);
PR("请输入答案: ");
SR(DD,&input);
if (input==rig)
{
PR("太棒了!继续努力哦!\n");
rec.right++;
/*统计正确回答的个数*/
rec.success_right++;
/*统计一次回答正确的个数*/
mar.five++;
i=0;
}
else
{
pp=0;
/*记录分数用的计数器*/
while (ss)
{
PR("\n很遗憾,答错了,请再输入答案:\n");
SR(DD,&input);
if (input==rig)
{
PR("很好,回答正确!继续努力!\n");
ss=0;
rec.right++;
/*统计正确的个数*/
pp++;
/*自加完成分数的记录*/
i=0;
}
switch (pp)
/*记录到统计分数的结构体中*/
{
case 1 :mar.four++;break;
case 2 :mar.three++;break;
case 3 :mar.two++;break;
case 4 :mar.one++;break;
default:break;
}
}
}
i=0;
rec.all++;
/*统计题目的总数*/
}
}
void main ()
{
void welcome (void);
void test_1 (int);
int test (int n);
int i=1;
char ch;
welcome();
while (i<=3)
{
test_1(N);
i++;
}
rec.sucess_percent=rec.success_right/rec.all;
while (i<=10)
{
if (rec.sucess_percent>0.9)
test_1(H);
else
test_1(N);
rec.sucess_percent=rec.success_right/rec.all;
}
PR("题目总数
回答正确数
一次回答正确数
一次回答正确率\n");
PR("%5.0f %7.0f %15.0f %18c%.0f %10c%.0f",rec.all,rec.right,rec.success_right,'%',rec.sucess_percent*100);
mar.score=mar.five*5+mar.four*4+mar.three*3+mar.two*2+mar.one;
PR("\n您的分数为 %d: ",mar.score);
}