C语言,设计一个程序帮助小学生练习数学。
1L的哥们竟然没有分数也没有读写文件记录,我在他的基础上加了这个功能,采纳谁都可以哦~
#include
#include
#include
#include
#include
#defineIDNO_LENGTH6
#defineCALC_KIND4
#defineCALC_NUM10
boolcheckNo(charidNo[]);
chargetSignal();
intgetResult(int,int,char);
voidtakeTest();
//main函数
voidmain()
{
printf(PleaseinputyourfourdigitIDno(beginwithtwoletters):);
charidNo[IDNO_LENGTH];
do
{
scanf(%s,&idNo);
fflush(stdin);
}while(checkNo(idNo)==false);
printf(1.Startatest\t2.Checkscore\t3.Exitb\n);
intchoose;
do
{
printf(选择:);
scanf(%d,&choose);
fflush(stdin);
}while(choose!=1&&choose!=2&&choose!=3);
if(choose==1)
{
takeTest();
}elseif(choose==2)
{
FILE*fp;
charch;
if((fp=fopen(score.txt,rt+))==NULL)
{
printf(\n你还没做过题目测试);
getch();
exit(1);
}
ch=fgetc(fp);
while(ch!=EOF)
{
putchar(ch);
ch=fgetc(fp);
}
fclose(fp);
}
else
{
exit(0);
}
}
//获取随机运算符
chargetSignal()
{
charsignal[CALC_KIND]={'+','-','*','/'};
srand((unsigned)time(NULL));
returnsignal[rand()%4];
}
//获取随机数
intrandom(doublestart,doubleend)
{
return(int)(start+(end-start)*rand()/(RAND_MAX+1.0));
}
//运算
intgetResult(intnum1,intnum2,charsignal)
{
intres;
switch(signal)
{
case'+':
res=num1+num2;break;
case'-':
res=num1-num2;break;
case'*':
res=num1*num2;break;
case'/':
res=num1/num2;break;
default:
res=0;
printf(运算符不符合规则\n);
}
returnres;
}
//列出10道题
voidtakeTest()
{
printf(开始答题,每道题10分,总共100分\n);
clock_tstartTime;
startTime=clock();
intindex;
intgiveRes;
intnum1;
intnum2;
intscore=0;
charsignal;
for(index=0;index<CALC_NUM;index++)
{
srand((unsigned)time(NULL));
signal=getSignal();
num1=random(0,100);
num2=random(1,100);
printf(%d%c%d=,num1,signal,num2);
scanf(%d,&giveRes);
fflush(stdin);
if(getResult(num1,num2,signal)==giveRes)
{
printf(correct\n);
score+=10;
}
else
{
printf(wrong\n);
}
}
FILE*fp=fopen(score.txt,w);
fprintf(fp,分数为%d,score);
fclose(fp);
printf(解10道题用了%lf秒\n,(double)(clock()-startTime)/CLOCKS_PER_SEC);
}
//检测idNo是否合规则,合规则返回true
boolcheckNo(charidNo[])
{
intindex;
boolflag;
flag=true;
for(index=0;index<IDNO_LENGTH;index++)
{
if(index<2)
{
if(!isalpha(idNo[index]))
{
flag=false;
printf(IDno不符合规则,重新输入:);
break;
}
}
else
{
if(!isdigit(idNo[index]))
{
flag=false;
printf(IDno不符合规则,重新输入:);
break;
}
}
}
returnflag;
}
免责声明:本站发布的教育资讯(图片、视频和文字)以本站原创、转载和分享为主,文章观点不代表本网站立场。
如果本文侵犯了您的权益,请联系底部站长邮箱进行举报反馈,一经查实,我们将在第一时间处理,感谢您对本站的关注!
新励学网教育平台
海量全面 · 详细解读 · 快捷可靠
累积科普文章数:18,862,126篇