C语言 小学数学学习系统.docx
- 文档编号:8509156
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:20
- 大小:20.32KB
C语言 小学数学学习系统.docx
《C语言 小学数学学习系统.docx》由会员分享,可在线阅读,更多相关《C语言 小学数学学习系统.docx(20页珍藏版)》请在冰豆网上搜索。
C语言小学数学学习系统
/***********************************************************************************************************************************/
#include
#include
#include
#include
floatA=0;
intnu=0;
inthourA,hourB,minA,minB;
structStudent
{charname[21];//姓名
charnum[10];//学号
floatavscore;}s[50];//结构体数组,存储学生的信息,在此初定为50,可改
/*--------------------------------------------------------------------------------------------------------------------------------*/
voidSavemessage()//保存学生输入信息的函数
{
FILE*fp,*fp1;//定义文件指针,//以下判断文件打开与否,"a"方式打开则可向文件尾写数据
if((fp=fopen("studentmessage.txt","wb+"))==NULL)//打开文件studentmessage.txt
{printf("打开文件失败\n");
exit(0);}
if((fp1=fopen("TestResult.txt","a"))==NULL)//打开文件TestResult.txt
{printf("打开文件失败\n");
exit(0);}
printf("输入姓名:
");//以下为要学生输入个人信息
scanf("%s",s[0].name);
printf("输入学号:
");
scanf("%s",&s[0].num);
fwrite(&s[0],sizeof(structStudent),1,fp);//向文件studentmessage.txt中写入一条记录,即刚刚输入的学生信息
fprintf(fp1,"姓名:
%s\n",s[0].name);//以下为向文件TestResult.txt中写入刚刚输入的学生信息
fprintf(fp1,"学号:
%s\n",s[0].num);
fclose(fp);//关闭文件studentmessage.txt
fclose(fp1);
system("cls");//清屏
}
voidJudge()//判断函数
{inti=0;
FILE*fp;//文件指针//以下判断文件打开与否,"r"为只读打开方式
printf("\n\n\n");
printf("*************************小学数学测试系统********************\n");
printf("*-----------------------------------------------------------*\n");
printf("*-----------------------------------------------------------*\n");
printf("*************************************************************\n");
printf("*----------------------------注册-----------------------*\n");
printf("*-----------------------------------------------------------*\n");
printf("*----------------------------输入姓名-----------------------*\n");
printf("*-----------------------------------------------------------*\n");
printf("*----------------------------输入学号-----------------------*\n");
printf("*-----------------------------------------------------------*\n\n\n");
if((fp=fopen("studentmessage.txt","r"))==NULL)//以下判断文件打开与否"a"方式打开则可向文件尾写数据//打开文件studentmessage.txt
{fp=fopen("studentmessage.txt","w+");//如果没有studentmessage.txt文件,则新建此文件,"w+"打开方式为新建一个文件
printf("无文件记录,已新建.\n");}
while(!
feof(fp))//判断是否到了文件尾
{fread(&s[i],sizeof(structStudent),1,fp);//一行一行从文件中读出学生信息,保存在结构体数组student[]中
fscanf(fp,"\n");//读取换行符
i++;//i变量保存学生记录个数
if(i==50)//当人数满时即50个人满时,因为数组下标从0开始,所以当i为29时
{printf("人数已满,你已无法测试.\n");
fclose(fp);
exit(0);}}}
/*--------------------------------------------------------------------------------------------------------------------------------*/
voidAddition(intnumber)//加法运算函数,number为题目数形参
{
FILE*fp,*fp2,*fp3;
if((fp=fopen("TestResult.txt","a"))==NULL)
{printf("打开文件失败\n");
exit(0);}
if((fp2=fopen("failedResult.txt","a"))==NULL)
{printf("打开文件失败\n");
exit(0);}
if((fp3=fopen("rightResult.txt","a"))==NULL)
{printf("打开文件失败\n");
exit(0);}
intnum1,num2,num3,num4,m,n,count1=0,count2=0;
floataverage=0.0;//正确率变量,注意是float类型
srand(time(0));//初始化随机数,如果没有此语句,则每次运行程序时的随机数是一样的
fprintf(fp,"加法测试:
\n");//向文件写入
fprintf(fp,"被加数+加数=你的结果正确结果是否正确\n");//向文件写入
{
printf("*************************************************************\n");/*选择难度*/
printf("*-------------------------请选择难度:
------------------------*\n");
printf("*-------------------------1.简单-------------------------*\n");
printf("*-------------------------2.一般-------------------------*\n");
printf("*-------------------------3.困难-------------------------*\n");
printf("*-------------------------------------------------------------*\n\n\n");
printf("请选择难度:
");scanf("%d",&m);system("cls");//清屏
{if(m==1)n=10;/*将m的值转化为对应的n值,从而使随机函数出现一位,2位,3位,*/
if(m==2)n=100;
elseif(m==3)n=1000;}
printf("\n**************************************************************************\n\n");
for(inti=0;i {if(m==1) {num1=rand()%n;num2=rand()%n;}//产生一位随机数,num1,num2 if(m==2) {num1=10+rand()%(n-10);//产生两位随机数num1,num2 num2=10+rand()%(n-10);} if(m==3) {num1=100+rand()%(n-100);//产生三位随机数num1,num2 num2=100+rand()%(n-100);} num3=num1+num2;//num3保存正确结果 printf("%d+%d=",num1,num2);//在终端屏幕上输出题目 scanf("%d",&num4);//你要输入的计算结果 if(num3==num4)//正确结果与你计算的结果比较,正确的话 {fprintf(fp,"%d+%d=%d%d√\n",num1,num2,num4,num3);//将结果记录到TestResult.txt中 count1++;}//变量count1记录正确题目的个数 else//错误的话,即num1! =num2时 {fprintf(fp,"%d+%d=%d%d×\n",num1,num2,num4,num3);//将结果记录到TestResult.txt中 fprintf(fp2,"%d+%d=\n",num1,num2,num4,num3);//将错误题记录到failedResult.txt中 fprintf(fp3,"%d+%d=%d\n",num1,num2,num3);}}}//将错误题正确结果记录到failedResult.txt中 average=float(count1)/float(number);//计算正确率,注意int整型要转换为float类型 fprintf(fp,"正确%d道,错误%d道,正确率为: %f\n\n",count1,count2,average); A=A+average*100; nu++; fclose(fp); fclose(fp3); fclose(fp2);} /*--------------------------------------------------------------------------------------------------------------------------------*/ voidSubtracter(intnumber)//减法运算函数,注释与加法一样 { FILE*fp,*fp2,*fp3; if((fp=fopen("TestResult.txt","a"))==NULL) {printf("打开文件失败\n"); exit(0);} if((fp2=fopen("failedResult.txt","a"))==NULL) {printf("打开文件失败\n"); exit(0);} if((fp3=fopen("rightResult.txt","a"))==NULL) {printf("打开文件失败\n"); exit(0);} intnum1,num2,num3,num4,count1=0,n,m,count2=0; floataverage=0.0; srand(time(0)); fprintf(fp,"减法测试: \n"); fprintf(fp,"被减数-减数=你的结果正确结果是否正确\n"); printf("*************************************************************\n");/*选择难度*/ printf("*-------------------------请选择难度: ------------------------*\n"); printf("*-------------------------1.简单-------------------------*\n"); printf("*-------------------------2.一般-------------------------*\n"); printf("*-------------------------3.困难-------------------------*\n"); printf("*-------------------------------------------------------------*\n\n\n"); printf("请选择: ");scanf("%d",&m);system("cls");//清屏 {if(m==1)n=10; if(m==2)n=100; elseif(m==3)n=1000;} printf("\n**************************************************************************\n\n"); for(inti=0;i {if(m==1) {num1=rand()%n;num2=rand()%n;}//产生一位随机数,num1,num2 if(m==2) {num1=10+rand()%(n-10);//产生两位随机数num1,num2 num2=10+rand()%(n-10);} if(m==3) {num1=100+rand()%(n-100);//产生三位随机数num1,num2 num2=100+rand()%(n-100);} num3=num1-num2; printf("%d-%d=",num1,num2); scanf("%d",&num4); if(num3==num4) {fprintf(fp,"%d-%d=%d%d√\n",num1,num2,num4,num3); count1++;} else {fprintf(fp,"%d-%d=%d%d×\n",num1,num2,num4,num3); count2++; fprintf(fp2,"%d-%d=\n",num1,num2,num4,num3); fprintf(fp3,"%d-%d=%d\n",num1,num2,num3);}} average=float(count1)/float(number); fprintf(fp,"正确%d道,错误%d道,正确率为: %f\n\n",count1,count2,average); A=A+average*100; nu++; fclose(fp);fclose(fp2); fclose(fp3); } /*--------------------------------------------------------------------------------------------------------------------------------*/ voidMultiplication(intnumber)//乘法运算函数,注释与加法一样 { FILE*fp,*fp2,*fp3; if((fp=fopen("TestResult.txt","a"))==NULL) {printf("打开文件失败\n"); exit(0);} if((fp2=fopen("failedResult.txt","a"))==NULL) {printf("打开文件失败\n"); exit(0);} if((fp3=fopen("rightResult.txt","a"))==NULL) {printf("打开文件失败\n"); exit(0);} intnum1,num2,num3,num4,m,n,count1=0,count2=0; floataverage=0.0; srand(time(0)); fprintf(fp,"乘法测试: \n"); fprintf(fp,"被乘数*乘数=你的结果正确结果是否正确\n"); {printf("*************************************************************\n");/*选择难度*/ printf("*-------------------------请选择难度: ------------------------*\n"); printf("*-------------------------1.简单-------------------------*\n"); printf("*-------------------------2.一般-------------------------*\n"); printf("*-------------------------3.困难-------------------------*\n"); printf("*-------------------------------------------------------------*\n\n\n"); printf("请选择: ");} scanf("%d",&m); system("cls");//清屏 {if(m==1)n=10; if(m==2)n=100; elseif(m==3)n=1000;} printf("\n**************************************************************************\n\n"); for(inti=0;i {if(m==1) {num1=rand()%n;num2=rand()%n;} if(m==2) {num1=10+rand()%(n-10); num2=10+rand()%(n-10);} if(m==3) {num1=100+rand()%(n-100); num2=100+rand()%(n-100);} num3=num1*num2; printf("%d*%d=",num1,num2); scanf("%d",&num4); if(num3==num4) {fprintf(fp,"%d*%d=%d%d√\n",num1,num2,num4,num3); count1++;} else {fprintf(fp,"%d*%d=%d%d×\n",num1,num2,num4,num3); count2++; fprintf(fp2,"%d*%d=\n",num1,num2,num4,num3); fprintf(fp3,"%d*%d=%d\n",num1,num2,num3);}} average=float(count1)/float(number); fprintf(fp,"正确%d道,错误%d道,正确率为: %f\n\n",count1,count2,average); A=A+average*100; nu++; fclose(fp); fclose(fp2); fclose(fp3); } /*--------------------------------------------------------------------------------------------------------------------------------*/ voidDivision(intnumber)//和加法运算函数注释一样 {FILE*fp,*fp2,*fp3; if((fp=fopen("TestResult.txt","a"))==NULL) {printf("打开文件失败\n"); exit(0);} if((fp2=fopen("failedResult.txt","a"))==NULL) {printf("打开文件失败\n"); exit(0);} if((fp3=fopen("rightResult.txt","a"))==NULL) {printf("打开文件失败\n"); exit(0);} intnum1,num2,m,n,count1=0,count2=0; floatnum3,num4,average;//正确率变量,注意是float类型 srand(time(0));//初始化随机数,如果没有此语句,则每次运行程序时的随机数是一样的 fprintf(fp,"加法测试: \n");//向文件写入 fprintf(fp,"除数数/被除数=你的结果正确结果是否正确\n");//向文件写入 {printf("*************************************************************\n");/*选择难度*/ printf("*-------------------------请选择难度: ------------------------*\n"); printf("*-------------------------
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言 小学数学学习系统 语言 小学 数学 学习 系统