C语言编程 做一个设计一个儿童算数教学程序:“咪咪数学宝”
补充:看来有人不明白,得先建题库文件啊,然后才能输入文件路径捆绑题库,比如我上面的演示中,c:\\qs01.txt,你首先要先在c盘创建一个txt文件,然后在里面打字“题目空格答案回车”这样输入。有了库文件程序才能读啊
比如:(你如果自己能修改我常量里的字符长度,不光数学,语文,英语题库都可以)
在txt文本里保存题库,比如幼儿题目放一个txt,小学题目放一个txt。
程序分两大部分:
1、根据【题库数常量】,提示输入每个题库的类别名称、每个题库文件的路径,生成菜单。
2、用户通过菜单选择,题库类别,输入随机数上限。
3、根据用户输入数字随机抽取一组问题,提问回答并统计正确率。
注意:这里我测试,【题库数常量】qssSize我值设置了2,如想增加题库类别,只要修改该数值即可!。(其他常量我也备注了,有需要自己改)
#include
#include
#include
#include
#defineqsLen100//问题最大长度
#defineansLen50//答案最大长度
#defineqssSize2//题库种类数量我测试只定义了小学和幼儿两个问题库,需要自己添加
#defineqssNameSize10//题库名称长度
#defineqssPathSize100//题库路径长度
typedefstructqs
intid;//问题编号
intcont;//题库问题数量,只有头结点存储该值
charqs[qsLen];//问题
charans[ansLen];//答案
structqs*next;
voidnewQss(charqssName[][qssNameSize],charqssPath[][qssPathSize]);//根据输入,新建问题分类信息
intshowMenu(charqssName[][qssNameSize]);//显示题库菜单,返回用户选择的题库类别下标
QS*readFile(char*filePath);//读取问题库文件,生成链表,返回头节点
QS*randQs(QS*qsHead,intqsNum);//从题库随机抽取题目,参数:题库头节点、题库总题目数。返回:抽取的题目节点
intmain()
intlbNum,qsNum,cnt,i,correct,error;
charquestion[qsLen],answer[ansLen],input[ansLen];
charqssName[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
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++;
printf("回答错误!正确答案是%s\n\n",answer);
error++;
printf("共%d条问题,正确回答%d条,正确率%d%%\n",cnt,correct,correct*100/cnt);
return0;
QS*randQs(QS*qsHead,intqsNum)
intn;
n=rand()%qsNum+1;
while(qsHead->next!=NULL)
if(qsHead->next->id==n)
returnqsHead->next;
qsHead=qsHead->next;
returnNULL;
voidnewQss(charqssName[][qssNameSize],charqssPath[][qssPathSize])
inti;
printf("--开始录入题库分类信息--\n");
for(i=0;i
printf("\n请输入题库1的名称及题库文件路径\n名称(不超%d个字符):",qssNameSize);
scanf("%s",qssName[i]);
printf("路径(不超%d个字符):",qssPathSize);
scanf("%s",qssPath[i]);
intshowMenu(charqssName[][qssNameSize])
inti;
printf("\n当前题库分类为:\n");
for(i=0;i
printf("%d、%s\n",i+1,qssName[i]);
printf("请选择你要提取的题库类别(输入数字):");
scanf("%d",&i);
returni-1;
QS*readFile(char*filePath)
FILE*fp;
charqsSave[qsLen],ansSave[ansLen];
QS*qsHead=NULL,*qsTail=NULL;
if((fp=fopen(filePath,"rt+"))==NULL)
printf("Cannotopenfilestrikeanykeyexit!");
returnNULL;
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;
qsTail->next=qsNew;
qsTail=qsNew;
returnqsHead;
幼儿编程启蒙课是什么
幼儿编程启蒙课也被称为无屏幕编程课,是幼儿新兴课程,归类在幼儿STEAM课程,是一门将机器人作为载体,将数学、阅读、艺术、识字结合到一起的课程。
幼儿编程课程主要分为四个阶段,编程启蒙、编程基础、编程进阶和编程高阶。根据孩子的学习能力及接受程度合理分配,课程可以是中文游戏编程、儿童积木编程、人工智能开发基础及APP架构趣味开发、信息学奥赛特训等相关课程。
关于如何选择幼儿编程课程可以参考以下内容:
1、明确上编程课的目的
对于中小学年龄段的孩子,编程课的主要目的应该是启蒙,让孩子接触编程知识,在编程学习中强化逻辑思考能力、组织协调能力以及系统思维能力,进而激发孩子的创造力,而不是现在就为了职业考虑,去掌握一门技能。
2、如何选择编程课
对于中小学年龄段的孩子,首先不要去考虑编程语言,先明确课程设计是否做到两个前提:
第一、学习编程的过程能否做到所见即所得输入指令,立刻能够看到效果;
第二、能否从项目式学习入手,并且建立快速反馈机制,给孩子成就感。
如果在教学设计中满足这两个前提,基本就可以判断,这个课程是可以考虑的。
【童程童美少儿编程体验课,点击可免费报名试听】
想了解更多关于幼儿编程启蒙课的信息,推荐咨询童程童美。童程童美未来教育研究院,通过汇聚具备国际视野的教育专家团队集体智慧,结合中国素质教育发展实际,提出了数字公民以及未来领袖胜任力模型,以及“1+X”素质教育新模式,始终致力于帮助每一个中国家庭构建适合自己孩子特点的家庭教育系统。
【学少儿编程可以提高孩子逻辑思维、专注力!】