最近化学方程式一直默写错= =
搞得我和老师都非常不爽,所以用一天的时间编了一个练习器。
A.方程式载入部分
因为后面肯定要不断添加的,所以用文本文档存储方程式。用freopen读入。
void prepare_fangcheng()
{
freopen("方程式.txt","r",stdin);
while(1)
{
char ss[1005];
gets(ss);
if(strcmp(ss,"0")==0)break;
cnt++;
strcpy(s[cnt].fc,ss);
}//↑↓
freopen("方程式名称.txt","r",stdin);
while(1)
{
char ss[1005];
gets(ss);
if(strcmp(ss,"0")==0)break;
cntt++;
strcpy(s[cntt].name,ss);
}
freopen("con","r",stdin);
if(cnt!=cntt)
{
cout<<"方程式载入错误!"<<endl;
system("pause");
exit(0);
}
else {cout<<"方程式载入成功!共 "<<cnt<<" 个方程式"<<endl;
system("pause");}
return;
}
刚开始时没有将方程式的名字和内容放在一起,好蠢啊(笑)
最后要检查一下名字和内容是否个数相同,免得最后崩溃什么的。
freopen("con","r",stdin)可以将输入还回控制台。
B.显示部分
显示部分就随便摸鱼了,直接输出,也没有居中。加了一个SlowDisPlay
void SlowDisplay(char *p)
{
while(1)
{
if(*p!=0)
cout<<(*p++);
else
break;
Sleep(50);
}
}
50毫秒输出一个字符,进函数时可以直接打内容,屡试不爽。
C.运行部分
运行其实很简单,不断随机数,然后匹配。这里就不赘述了。
对了气体标号可以用Alt+41468(按住alt输入5个数字)和alt+41469打出来
D.统计和保存错题
用变量存储总答题数,正确数。求正确率(完全没有答题时不输出,否则正确率会出现除以0操作)
错题用结构体存储,先输出到没用的文件中,在将没用文件和错题本合并,使得错题本不会被覆盖。
printf("总共做题%d道,其中正确%d道,错误%d道",tot,tt,ff);
if(tot!=0)printf(",正确率%.6lf\n",(double)tt/(double)tot);
cout<<endl<<"错题已经保存至错题本"<<endl;
freopen("soy.txt","w",stdout);
for(int i=1;i<=ff;i++)
{
printf("%s\n",wrong[i].name);
printf("正确答案:%s\n",wrong[i].fc);
printf("错误答案:%s\n",wrong[i].fc1);
printf("\n");
}
freopen("con","w",stdout);
system("copy /y /b /d 错题本.txt+soy.txt 错题本.txt");
system("pause");
摸鱼大法好!