1.任务描述编写一个练习器,提供给小学生使用,可进行100以内任意两个整数的乘除法练习。
2.功能要求
1)随机生成乘法或除法运算符。
2)随机生成100以内的两个正整数。
3)乘法的计算机结果不得大于100,否则重新生成题目。
4)除法的结果必须为整数,否则重新生成题目。
5)每次练习开始前,由用户指定要做的题目数(<=100题)。根据题目,随机产生满足上述要求的试题。要求所有试题不重复。
6)对用户输入的答案判断正确与否,并计分。答对一题得10分。7)练习结束后,统计并输出回答正确和错误的题目数、最后得分,并给出相应的评语
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<Windows.h>
void goto_xy(int x, int y);
void show1();
int getchoice();
int dowork(int n);
int num();
void print(int s,int n);
void goto_xy(int x, int y) //定位光标位置到指定坐标
{
HANDLE hOut;
hOut = GetStdHandle(STD_OUTPUT_HANDLE);
COORD pos = { x,y };
SetConsoleCursorPosition(hOut, pos);
}
void show1() //开始界面
{
printf("****************************************\n");
printf("| |\n");
printf("| |\n");
printf("| |\n");
printf("| |\n");
printf("| 欢迎使用整数乘除法练习器 |\n");
printf("| |\n");
printf("| 1. 开始 |\n");
printf("| 2. 退出 |\n");
printf("| |\n");
printf("| 请选择: |\n");
printf("| |\n");
printf("| |\n");
printf("| |\n");
printf("****************************************\n");
}
int getchoice()
{
int a;
goto_xy(16,10);
scanf("%d",&a);
return a;
}
int num() //题量获取
{
int n;
printf("请输入要做的题目数:\n");
goto_xy(19,0);
scanf("%d",&n);
return n;
}
int dowork(int n) //练习模块
{
int a,b,c,d,e,i,s=0,x=0,y=0;
srand((int)time(NULL));
for(i=0;i<n;i++)
{
e=rand()%2;
a=rand()%100;
b=rand()%100;
if(e==0) //乘法
{
if(a*b<100)
{
printf("%d*%d=\n",a,b);
scanf("%d",&d);
if(a*b==d)
{
printf("正确!\n");
s+=10;
x++;
}
else
{
printf("错误!\n");
y++;
}
}
else
{
n++;
continue;
}
}
if(e==1) //除法
{
if(b!=0&&a%b==0) //b不能为零,无意义
{
printf("%d/%d=\n",a,b);
scanf("%d",&c);
if(a/b==c)
{
printf("正确!\n");
s+=10;
x++;
}
else
{
printf("错误!\n");
y++;
}
}
else
{
n++;
continue;
}
}
}
printf("您一共做了%d道题,其中正确%d道,错误%d道\n",x+y,x,y);
return s;
}
void print(int s,int n) //根据百分比输出结果及评语
{
printf("您的得分是:%d\n",s);
if(s/10/n<0.6)
printf("成绩不及格.\n请努力!\n");
if(s/10/n>=0.6&&s/10/n<0.8)
printf("成绩及格.\n请加油!");
if(s/10/n>=0.8)
printf("成绩优秀.\n再接再厉!\n");
}
int main()
{
int a,n1,n2,s;
system("mode con cols=40 lines=17"); //控制输出界面大小
system("color E4"); //字体颜色与背景
L: show1();
a=getchoice();
if(a==1)
{
system("cls"); //清屏代码
n1=n2=num();
printf("Let's go!!!\n");
}
else if(a==2)
{
system("cls");
printf("谢谢使用!\n");
return 0;
}
s=dowork(n1);
print(s,n2);
Sleep(4000); //延迟4秒
goto L; //跳转到 L 标签
}