C语言编程 做一个设计一个儿童算数教学程序:“咪咪数学宝”设计一个儿童算数教学程序:“咪咪数学宝”
1. 基本功能:
1) 能根据用户选择产生并显示多道加减乘除不同类型的题目;
2) 能对用户输入的答案进行正误判断,并给出适当的反馈;
3) 能对用户输入的答案进行统计,并以直观的方式进行显示。
2. 扩展功能:
1) 每次出题时能随机产生不同题目;
2) 能根据不同年龄段进行教学;
3. 自由发挥
学生可以对设计进行自由发挥。
补充:看来有人不明白,得先建题库文件啊,然后才能输入文件路径捆绑题库,比如我上面的演示中,c:\\qs01.txt,你首先要先在c盘创建一个txt文件,然后在里面打字“题目 空格 答案 回车”这样输入。有了库文件程序才能读啊
比如:(你如果自己能修改我常量里的字符长度,不光数学,语文,英语题库都可以)
在txt文本里保存题库,比如幼儿题目放一个txt,小学题目放一个txt。
程序分两大部分:
1、根据【题库数常量】,提示输入每个题库的类别名称、每个题库文件的路径,生成菜单。
2、用户通过菜单选择,题库类别,输入随机数上限。
3、根据用户输入数字随机抽取一组问题,提问回答并统计正确率。
注意:这里我测试,【题库数常量】qssSize我值设置了2,如想增加题库类别,只要修改该数值即可!。(其他常量我也备注了,有需要自己改)
#include <stdio.h>#include <stdlib.h>
#include <string.h>
#include <time.h>
#define qsLen 100//问题最大长度
#define ansLen 50//答案最大长度
#define qssSize 2//题库种类数量 我测试只定义了 小学和幼儿 两个问题库,需要自己添加
#define qssNameSize 10//题库名称长度
#define qssPathSize 100//题库路径长度
typedef struct qs
{
int id;//问题编号
int cont;//题库问题数量,只有头结点存储该值
char qs[qsLen];//问题
char ans[ansLen];//答案
struct qs *next;
}QS;
void newQss(char qssName[][qssNameSize],char qssPath[][qssPathSize]);//根据输入,新建问题分类信息
int showMenu(char qssName[][qssNameSize]);//显示题库菜单,返回用户选择的题库类别下标
QS *readFile(char *filePath);//读取问题库文件,生成链表,返回头节点
QS *randQs(QS *qsHead,int qsNum);//从题库随机抽取题目,参数:题库头节点、题库总题目数。返回:抽取的题目节点
int main()
{
int lbNum,qsNum,cnt,i,correct,error;
char question[qsLen],answer[ansLen],input[ansLen];
char qssName[qssSize][qssNameSize],qssPath[qssSize][qssPathSize];//qssName: 题库分类名称;qssPath:题库文件路径
QS *qsHead=NULL,*qsSelect;
srand(time(NULL));
newQss(qssName,qssPath);
lbNum=showMenu(qssName);
printf("\n--开始加载题库--\n");
qsHead=readFile(qssPath[lbNum]);
qsNum=qsHead->cont;
printf("题库共%d条题目,请输入需要提取的题目数量:",qsNum);
while(1)
{
scanf("%d",&cnt);
if(cnt>0 && cnt<=qsNum)
break;
}
printf("\n--开始从题库中随机抽取%d条问题--\n",cnt);
correct=0;
error=0;
for(i=0;i<cnt;i++)
{
qsSelect=randQs(qsHead,qsNum);
if(qsSelect!=NULL)
{
strcpy(question,qsSelect->qs);
strcpy(answer,qsSelect->ans);
printf("第%d题、%s ? 答案:",i+1,question);
scanf("%s",input);
if(!strcmp(answer,input))
{
printf("回答正确!\n\n");
correct++;
}
else
{
printf("回答错误!正确答案是%s\n\n",answer);
error++;
}
}
}
printf("共%d条问题,正确回答%d条,正确率%d%%\n",cnt,correct,correct*100/cnt);
return 0;
}
QS *randQs(QS *qsHead,int qsNum)
{
int n;
n=rand()%qsNum+1;
while(qsHead->next!=NULL)
{
if(qsHead->next->id==n)
return qsHead->next;
qsHead=qsHead->next;
}
return NULL;
}
void newQss(char qssName[][qssNameSize],char qssPath[][qssPathSize])
{
int i;
printf("--开始录入题库分类信息--\n");
for(i=0;i<qssSize;i++)
{
printf("\n请输入题库1的名称及题库文件路径\n名称(不超%d个字符):",qssNameSize);
scanf("%s",qssName[i]);
printf("路径(不超%d个字符):",qssPathSize);
scanf("%s",qssPath[i]);
}
}
int showMenu(char qssName[][qssNameSize])
{
int i;
printf("\n当前题库分类为:\n");
for(i=0;i<qssSize;i++)
printf("%d、 %s\n",i+1,qssName[i]);
printf("请选择你要提取的题库类别(输入数字):");
scanf("%d",&i);
return i-1;
}
QS *readFile(char *filePath)
{
FILE *fp;
char qsSave[qsLen],ansSave[ansLen];
QS *qsHead=NULL,*qsTail=NULL;
if((fp=fopen(filePath,"rt+"))==NULL)
{
printf("Cannot open file strike any key exit!");
return NULL;
}
qsHead=(QS *)malloc(sizeof(QS));
qsHead->next=NULL;
qsHead->cont=0;
while(fscanf(fp,"%s %s",qsSave,ansSave)!=-1)
{
qsHead->cont++;
QS *qsNew=(QS *)malloc(sizeof(QS));
qsNew->next=NULL;
qsNew->id=qsHead->cont;
strcpy(qsNew->qs,qsSave);
strcpy(qsNew->ans,ansSave);
if(qsHead->next==NULL)
qsHead->next=qsNew;
else
qsTail->next=qsNew;
qsTail=qsNew;
}
return qsHead;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答 2019-08-06
幼儿数学学习,主要分六大模块:
1、集合:教孩子学会分类,帮助孩子感知集合的意义,逐步形成关于具体事物的集合概念,这是计数的前提,是形成数概念的基础,为孩子数学能力做准备。
2、数:孩子总是先口头数数开始,到结合实物数数。从无意义的数字到掌握数的实际意义,认识数字,理解数字,运用数字,最终形成数的概念。
3、量:通过对集合和数的学习,孩子从不精确的集合感知到确切的数量,这是数量由具象化到形象化的过渡,为加减概念打下基础。
4、形:在儿童早期数学启蒙的阶段,除了加减法,还有几何图形的学习。几何在数学中占据很重要的比例,对孩子空间立体思维的发展也有很重要的影响。
5、时:孩子对时钟的认识,可以帮助其形成时间概念,有助于养成良好规律的生活习惯,有利于培养孩子的守时观念,对孩子的成长有重要意义。沟通
6、空:空间思维是指识别物体的形状、位置、空间关系,通过想象与视觉化形成新的视觉关系的能力。空间思维对于孩子在学习几何等类型题时能起到有效帮助,对孩子大脑起到开发作用。具备空间思维的孩子能跳出点、线、面的限制,多个角度"立体思考",对其未来社会性的发展会产生深远的影响。
用孩子听得懂的语言,感兴趣的主题和游戏,从具体到抽象,真正培养孩子的数学思维!让每个孩子都爱数学!
1、集合:教孩子学会分类,帮助孩子感知集合的意义,逐步形成关于具体事物的集合概念,这是计数的前提,是形成数概念的基础,为孩子数学能力做准备。
2、数:孩子总是先口头数数开始,到结合实物数数。从无意义的数字到掌握数的实际意义,认识数字,理解数字,运用数字,最终形成数的概念。
3、量:通过对集合和数的学习,孩子从不精确的集合感知到确切的数量,这是数量由具象化到形象化的过渡,为加减概念打下基础。
4、形:在儿童早期数学启蒙的阶段,除了加减法,还有几何图形的学习。几何在数学中占据很重要的比例,对孩子空间立体思维的发展也有很重要的影响。
5、时:孩子对时钟的认识,可以帮助其形成时间概念,有助于养成良好规律的生活习惯,有利于培养孩子的守时观念,对孩子的成长有重要意义。沟通
6、空:空间思维是指识别物体的形状、位置、空间关系,通过想象与视觉化形成新的视觉关系的能力。空间思维对于孩子在学习几何等类型题时能起到有效帮助,对孩子大脑起到开发作用。具备空间思维的孩子能跳出点、线、面的限制,多个角度"立体思考",对其未来社会性的发展会产生深远的影响。
用孩子听得懂的语言,感兴趣的主题和游戏,从具体到抽象,真正培养孩子的数学思维!让每个孩子都爱数学!