目录
●简单解释在代码内
一、一些简单功能:
1、记录最高分:
//在文件中读取混合运算最高分
void File_out1()
{
FILE *fp;
fp =fopen("save1.txt","r+");
fscanf(fp,"%d",&HighScore);
fclose(fp);
}
/*
*将混合运算最高分存储与文件中
*/
void File_in1()
{
FILE *fp ;
fp =fopen("save1.txt","w+");
fprintf(fp,"%d",HighScore);
fclose(fp);
}需要调用最高分时,用File_out()即可。需要重新改写最高分用File_in()即可。
2、记录时间:
int start,end;
start=time(NULL); //开始时间
end=time(NULL); //结束时间printf("您的使用时间是%ds\n",end-start);
二、加减法运算:
运行界面展示:
//加法
int add()
{
score=0;
File_out(); //打开文件
int start,end;
start=time(NULL); //开始时间
int i,tnum,rand1,rand2,yours;
gotoxy(81,7);
printf("最高分为:%d",HighScore);
gotoxy(81,8);
printf("本次得分:%d",score);
gotoxy(27,6);
printf("请选择题目数量<建议在20题左右>:");
scanf("%d",&tnum);
for(i=0;i<tnum;i++)
{
srand(time(NULL));
rand1=rand()%100+1; //随机产生100内的两位数
rand2=1+(int)rand()%100;
gotoxy(28,7+i);
printf("%d+%d= ",rand1,rand2);
scanf("%d",&yours);
if (yours==rand1+rand2) //当添入的答案正确时,显示√,否则显示×,并显示正确答案。
{
score+=10;
gotoxy(40,7+i);
printf("√\n");
}else{
gotoxy(40,7+i);
printf("× 正确答案是:%d\n",rand1+rand2);
}
gotoxy(81,8);
printf("本次得分:%d",score);
}
if(score >= HighScore)
{
gotoxy(28,16);
printf("创记录啦!最高记录被你刷新啦~您的得分是:%d",score);
HighScore=score;
File_in(); //记录最高分
}else{
gotoxy(28,17);
printf("继续努力吧~ 你离最高分还差:%d",HighScore-score);
}
end=time(NULL); //结束时间
gotoxy(28,18);
printf("您的使用时间是%ds\n",end-start); //时间计数
gotoxy(28,19);
go();
//是否进入菜单栏
}
//减法
int sub()
{
score=0;
File_out();
int start,end;
start=time(NULL);
int i,tnum,rand1,rand2,yours;
gotoxy(81,7);
printf("最高分为:%d",HighScore);
gotoxy(81,8);
printf("本次得分:%d",score);
gotoxy(27,6);
printf("请选择题目数量<建议在20题左右>:");
scanf("%d",&tnum);
for(i=0;i<tnum;i++)
{
srand(time(NULL));
rand1=1+(int)rand()%100;
rand2=1+(int)rand()%100;
if(rand1>rand2)
{
gotoxy(28,7+i);
printf("%d-%d=",rand1,rand2);
scanf("%d",&yours);
if (yours==rand1-rand2)
{
score+=10;
gotoxy(40,7+i);
printf("√");
}
else{
gotoxy(40,7+i);
printf("× 正确答案是:%d",rand1-rand2);
}
gotoxy(81,8);
printf("本次得分:%d",score);
}else{
gotoxy(28,7+i);
printf("%d-%d=",rand2,rand1);
scanf("%d",&yours);
if (yours==rand2-rand1)
{
score+=10;
gotoxy(40,7+i);
printf("√");
}
else{
gotoxy(40,7+i);
printf("× 正确答案是:%d",rand1-rand2);
}
gotoxy(81,8);
printf("本次得分:%d",score);
}
}
if(score >= HighScore)
{
//color(14);
gotoxy(28,15);
printf("最高记录被您刷新啦~");
HighScore=score;
File_in();
}else{
//color(14);
gotoxy(28,15);
printf("您离最高分还差:%d",HighScore-score);
}
end=time(NULL);
//color(14); //结束时间
gotoxy(28,16);
printf("您的游戏时间是%ds\n",end-start);
gotoxy(28,17);
//color(14);
go();
}
三、乘除法运算:
//乘法
int mul()
{
gotoxy(0,1);
int start,end;
start=time(NULL); //开始计时
int i,j,tnum,rand1,rand2,yours;
for(j=0;j<3;j++) //显示关卡
{
if(j==0)
printf("第一关\n");
if(j==1)
printf("第二关\n");
if(j==2)
printf("第三关\n");
printf("请选择题目数量<建议在20题左右>:");
scanf("%d",&tnum);
for(i=0;i<tnum;i++) //依次显示题目
{
srand(time(NULL));
rand1=1+(int)rand()%10; //随机产生1-10内的数字
rand2=1+(int)rand()%10;
printf("%d*%d=",rand1,rand2);
scanf("%d",&yours);
if (yours==rand1*rand2)
{
//if(i==0)
printf(" √\n");
//if(i==1)
// printf(" √\n");
}else {
printf("闯关失败!正确答案是:%d\n",rand1*rand2);
end=time(NULL);
printf("您的游戏时间是%ds\n",end-start);
go();
}
//有一题错误即失败
}
if(j==0)
printf("恭喜通过第一关!\n\n");
if(j==1)
printf("恭喜通过第二关!!\n\n");
if(j==2)
printf("恭喜通全关!!!\n\n");
}
end=time(NULL);
printf("您的游戏时间是%d\n",end-start);
go();
}
//除法
int dive()
{
gotoxy(0,1);
int start,end;
start=time(NULL);
int i,j,tnum,rand1,rand2,yours;
for(j=0;j<3;j++)
{
if(j==0)
printf("第一关");
if(j==1)
printf("第二关");
if(j==2)
printf("第三关");
printf("\n请选择题目数量<建议在20题左右>:");
scanf("%d",&tnum);
for(i=0;i<tnum;i++)
{
srand(time(NULL));
rand1=1+(int)rand()%10;
rand2=rand1*(1+(int)rand()%10); //随机数产生数字
printf("%d/%d=",rand2,rand1); //相乘结果即被除数
scanf("%d",&yours);
if (yours==rand2/rand1)
{
printf(" √\n");
}
else
{printf("闯关失败!正确答案是:%d\n",rand2/rand1);go();}
}
if(j==0)
printf("恭喜通过第一关!\n\n");
if(j==1)
printf("恭喜通过第二关!!\n\n");
if(j==2)
printf("恭喜通全关!!!\n\n");
}
end=time(NULL);
printf("您的游戏时间是%d\n",end-start);
go();
}
四、混合模式
在混合模式里,我采用了高难度和低难度,高难度的为两位数的混合运算,低难度的为个位数的。均产生十题,最高分为100。
//低难度混合运算
void mixdown()
{
score=0;
File_out1(); //重新创建一个文档,记录混合运算的最高分
int start,end;
start=time(NULL);
int i,rand1,rand2,rand3,yours,x;
gotoxy(1,1);
printf("此为十道低难度四则运算的试题\n");
gotoxy(1,2);
printf("小朋友,快来算算吧~\n") ;
gotoxy(48,2);
printf("这套卷子的最高分是:%d",HighScore);
gotoxy(0,4);
for(i=0;i<10;i++)
{
rand1=rand()%10+1;
rand2=rand()%10+1;
rand3=rand()%10+1;
x=rand()%6;
switch(x) //通过随机产生6个数字来代表不同的运算。也可以更多。
{
case 1:
printf("%d+%d-%d=",rand1,rand2,rand3);
scanf("%d",&yours);
if(yours==rand1+rand2-rand3)
{
printf(" √\n");
score+=10;
}
else
{
printf(" ×答案为:%d\n",rand1+rand2-rand3);
}
continue;
case 2:
printf("%d+%d*%d=",rand1,rand2,rand3);
scanf("%d",&yours);
if(yours==rand1+rand2*rand3)
{
printf(" √\n");
score+=10;
}
else
{
printf(" ×答案为:%d\n",rand1+rand2*rand3);
}
continue;
case 3:
if(rand2%rand3==0)
{
printf("%d+%d/%d=",rand1,rand2,rand3);
scanf("%d",&yours);
if(yours==rand1+rand2/rand3)
{
printf(" √\n");
score+=10;
}
else
{
printf(" ×答案为:%d\n",rand1+rand2/rand3);
}
continue;
}else{
i--;
continue;
}
case 4:
printf("%d*(%d+%d)=",rand1,rand2,rand3);
scanf("%d",&yours);
if(yours==rand1*(rand2+rand3))
{
printf(" √\n");
score+=10;
}
else
{
printf(" ×答案为:%d\n",rand1*(rand2+rand3));
}
continue;
case 5:
if(rand2%rand3==0)
{
printf("%d-%d/%d=",rand1,rand2,rand3);
scanf("%d",&yours);
if(yours==rand1-rand2/rand3)
{
printf(" √\n");
score+=10;
}
else
{
printf(" ×答案为:%d\n",rand1+rand2/rand3);
}
continue;
}else{
i--;
continue;
}
default:
printf("(%d-%d)*%d=",rand1,rand2,rand3);
scanf("%d",&yours);
if(yours==(rand1-rand2)*rand3)
{
printf(" √\n");
score+=10;
}
else
{
printf(" ×答案为:%d\n",(rand1-rand2)*rand3);
}
continue;
}
}
printf("这套试卷您的得分是:%d\n",score);
if(score >= HighScore)
{
printf("最高记录被您刷新啦~\n");
HighScore=score;
File_in1();
}else{
printf("您离最高分还差:%d\n",HighScore-score);
}
}
//高难度混合运算
void mixup()
{
score=0;
File_out1();
int start,end;
start=time(NULL);
int i,rand1,rand2,rand3,yours,x;
gotoxy(1,1);
printf("此为十道高难度四则运算的试题\n");
gotoxy(1,2);
printf("小朋友,快来算算吧~\n") ;
gotoxy(48,2);
printf("这套卷子的最高分是:%d",HighScore);
gotoxy(0,4);
for(i=0;i<10;i++)
{
rand1=rand()%100+1;
rand2=rand()%100+1;
rand3=rand()%100+1;
x=rand()%6;
switch(x)
{
case 1:
printf("%d+%d-%d=",rand1,rand2,rand3);
scanf("%d",&yours);
if(yours==rand1+rand2-rand3)
{
printf(" √\n");
score+=10;
}
else
{
printf(" ×答案为:%d\n",rand1+rand2-rand3);
}
continue;
case 2:
printf("%d+%d*%d=",rand1,rand2,rand3);
scanf("%d",&yours);
if(yours==rand1+rand2*rand3)
{
printf(" √\n");
score+=10;
}
else
{
printf(" ×答案为:%d\n",rand1+rand2*rand3);
}
continue;
case 3:
if(rand2%rand3==0)
{
printf("%d+%d/%d=",rand1,rand2,rand3);
scanf("%d",&yours);
if(yours==rand1+rand2/rand3)
{
printf(" √\n");
score+=10;
}
else
{
printf(" ×答案为:%d\n",rand1+rand2/rand3);
}
continue;
}else{
i--;
continue;
}
case 4:
printf("%d*(%d+%d)=",rand1,rand2,rand3);
scanf("%d",&yours);
if(yours==rand1*(rand2+rand3))
{
printf(" √\n");
score+=10;
}
else
{
printf(" ×答案为:%d\n",rand1*(rand2+rand3));
}
continue;
case 5:
if(rand2%rand3==0)
{
printf("%d-%d/%d=",rand1,rand2,rand3);
scanf("%d",&yours);
if(yours==rand1-rand2/rand3)
{
printf(" √\n");
score+=10;
}
else
{
printf(" ×答案为:%d\n",rand1+rand2/rand3);
}
continue;
}else{
i--;
continue;
}
default:
printf("(%d-%d)*%d=",rand1,rand2,rand3);
scanf("%d",&yours);
if(yours==(rand1-rand2)*rand3)
{
printf(" √\n");
score+=10;
}
else
{
printf(" ×答案为:%d\n",(rand1-rand2)*rand3);
}
continue;
}
}
printf("这套试卷您的得分是:%d\n",score);
if(score >= HighScore)
{
printf("最高记录被您刷新啦~\n");
HighScore=score;
File_in1();
}else{
printf("您离最高分还差:%d\n",HighScore-score);
}
}
五、完整代码:
/*******头 文 件*******/
#include <stdio.h> //标准输入输出函数库
#include <windows.h> //控制 DOS界面(获取控制台上坐标位置、设置字体颜色)
#include<conio.h> //接受键盘输入输出
#include<time.h> //用于获得随机数
/******* 宏 定 义 *******/
#define FrameX 4 //游戏窗口左上角的X轴坐标为13
#define FrameY 4 // 游戏窗口左上角的Y轴坐标为3
#define Frame_height 20 //游戏窗口的高度为20
#define Frame_width 18 // 游戏窗口的宽度为18
int HighScore;
int score=0;
void welcom();
void Gameplay();
void File_in();
void File_out();
void go();
void Frame();
void Fence();
void mixup();
void mixdown();
void explanation();
/**
*文字颜色函数
*/
int color(int c)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),c);
return 0;
}
/**
*获取屏幕光标位置
*/
void gotoxy(int x,int y)
{
COORD pos;
pos.X=x;
pos.Y=y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);
}
void welcom()
{
gotoxy(40,7);
printf("欢迎来到小学算数练习游戏~\n");
gotoxy(40,8);
gotoxy(75,6);
printf(" _.'__ `.\n");
gotoxy(75,7);
printf(" .--($)($$)---/#\ \n");
gotoxy(75,8);
printf(" .' @ /###\ \n");
gotoxy(75,9);
printf(" : , #####\ \n");
gotoxy(75,10);
printf(" `-..__.-' _.-\###/ \n");
gotoxy(75,11);
printf(" `;_: `'' \n");
gotoxy(75,12);
printf(" .'""""`. \n");
gotoxy(75,13);
printf(" /, wo ,\\ \n");
gotoxy(75,14);
printf(" // 404! \\ \n");
gotoxy(75,15);
printf(" `-._______.-' \n");
gotoxy(75,16);
printf(" ___`. | .'___ \n");
gotoxy(75,17);
printf(" (______|______) \n");
for(int i=5;i<=20;i++)
{
gotoxy(30,i);
printf("||");
}
for(int j=30;j<=85;j++)
{
gotoxy(j,20);
printf("=");
}
gotoxy(86,20);
printf("||") ;
gotoxy(86,19);
printf("||") ;
}
void explanation(){
int n;
int i,j=1;
for (i=5;i<=25;i++)
{
for (j=25;j<=93;j++)
{
gotoxy(j,i);
if (i==5||i==25) printf("=");
else if (j==25||j==92) printf("||");
}
}
gotoxy(28,10);
printf("●在本游戏中加减法采用计分模式,答对一题得十分。 \n");
gotoxy(28,12);
printf("●乘除法采用闯关模式,共三关。当有一题答错时,即为闯关失败。\n ");
gotoxy(28,14);
printf("●混合模式分为低难度和高难度。\n");
gotoxy(28,16);
printf(" 低难度为个位运算,高难度为十位运算,设有十道题 共100分\n");
gotoxy(28,18);
printf("●若您不熟悉四则运算,可选择[6]进行简单地学习后再进入算数游戏。\n");
gotoxy(43,20);
printf("★★★ 祝您学习愉快~ ★★★\n");
gotoxy(40,22);
go();
}
void Gameplay()
{
int choose;
int add();
int sub();
int dive();
int mul();
void choose1();
void teach();
gotoxy(11,10);
printf("\t\t\t\t1.加法\n");
gotoxy(11,11);
printf("\t\t\t\t2.减法\n");
gotoxy(11,12);
printf("\t\t\t\t3.乘法\n");
gotoxy(11,13);
printf("\t\t\t\t4.除法\n");
gotoxy(11,14);
printf("\t\t\t\t5.混合算数\n");
gotoxy(11,15);
printf("\t\t\t\t6.学习\n");
gotoxy(11,16);
printf("\t\t\t\t7.游戏说明\n");
gotoxy(11,17);
printf("\t\t\t\t0.退出\n");
gotoxy(40,18);
printf("请选择[1 2 3 4 5 6 7 0]:[ ]\b\b");
scanf("%d",&choose);
system("cls");
switch(choose)
{
case 0:exit (1) ;
case 1: Frame();
add();
case 2:Frame();
sub();
case 3:Fence();
mul();
case 4: Fence();
dive();
case 5: choose1();
case 6:teach();
case 7:explanation();
}
go();
}
void choose1()
{
int choose;
system("cls");
gotoxy(11,15);
printf("\t\t\t\t1.低难度混合运算\n");
gotoxy(11,16);
printf("\t\t\t\t2.高难度混合运算\n");
gotoxy(40,17);
printf("请选择[1 2]:[ ]\b\b");
scanf("%d",&choose);
system("cls");
switch(choose)
{
case 1:Fence();
mixdown();
go();
case 2: Fence();
mixup();
go();
}
}
//加法
int add()
{
score=0;
File_out(); //打开文件
int start,end;
start=time(NULL); //开始时间
int i,tnum,rand1,rand2,yours;
gotoxy(81,7);
printf("最高分为:%d",HighScore);
gotoxy(81,8);
printf("本次得分:%d",score);
gotoxy(27,6);
printf("请选择题目数量<建议在20题左右>:");
scanf("%d",&tnum);
for(i=0;i<tnum;i++)
{
srand(time(NULL));
rand1=rand()%100+1; //随机产生从1-10的数
rand2=1+(int)rand()%100;
gotoxy(28,7+i);
printf("%d+%d= ",rand1,rand2);
scanf("%d",&yours);
if (yours==rand1+rand2) //当添入的答案正确时,显示√,否则显示×,并显示正确答案。
{
score+=10;
gotoxy(40,7+i);
printf("√\n");
}else{
gotoxy(40,7+i);
printf("× 正确答案是:%d\n",rand1+rand2);
}
gotoxy(81,8);
printf("本次得分:%d",score);
}
if(score >= HighScore)
{
gotoxy(28,16);
printf("创记录啦!最高记录被你刷新啦~您的得分是:%d",score);
HighScore=score;
File_in(); //记录最高分
}else{
gotoxy(28,17);
printf("继续努力吧~ 你离最高分还差:%d",HighScore-score);
}
end=time(NULL); //结束时间
gotoxy(28,18);
printf("您的使用时间是%ds\n",end-start); //时间计数
gotoxy(28,19);
go();
//是否进入菜单栏
}
void plus()
{
printf("****加法****\n");
printf(" 2 3\n");
printf(" + 3 8\n");
printf("_____________\n");
printf(" 6 1\n");
}
void minus()
{
printf("****减法****\n");
printf(" 3 8\n");
printf(" - 1 9\n");
printf("_____________\n");
printf(" 1 9\n");
printf("输入'回车'以继续!\n");
getchar();
}
void time()
{
printf("****乘法****\n");
printf("需要用到如下九九乘法表:\n");
int i,j;
for(i=1;i<=9;i++)
{
for(j=1;j<=i;j++)
{
printf("%d*%d=%d ",i,j,i*j);
}
printf("\n");
}
printf("输入'回车'以继续!\n");
getchar();
printf("例如:\n");
printf(" 2 3\n");
printf(" X 3\n");
printf("_____________\n");
printf(" 6 9\n");
printf("输入'回车'以继续!\n");
getchar();
}
void devide()
{
printf("****除法****\n");
printf(" 5\n");
printf(" _________\n");
printf(" 7| 3 5\n");
printf(" 3 5\n");
printf(" _________\n");
printf(" 0\n\n");
printf("输入'回车'以继续!\n");
getchar();
printf(" 9. 8 5……\n");
printf(" _____________\n");
printf(" 7| 6 9. 0 0\n");
printf(" 6 3\n");
printf(" ______________\n");
printf(" 6 0\n");
printf(" 5 6\n");
printf(" ______________\n");
printf(" 4 0\n");
printf(" 3 5\n");
printf(" :\n");
printf(" :\n");
printf(" :\n");
}
//学习
void teach()
{
system("cls");
void plus();
void minus();
void time();
void devide();
plus();
minus();
time();
devide();
printf("\n\n简单四则运算的学习结束啦~\n\n\n");
go();
}
//减法
int sub()
{
score=0;
File_out();
int start,end;
start=time(NULL);
int i,tnum,rand1,rand2,yours;
gotoxy(81,7);
printf("最高分为:%d",HighScore);
gotoxy(81,8);
printf("本次得分:%d",score);
gotoxy(27,6);
printf("请选择题目数量<建议在20题左右>:");
scanf("%d",&tnum);
for(i=0;i<tnum;i++)
{
srand(time(NULL));
rand1=1+(int)rand()%100;
rand2=1+(int)rand()%100;
if(rand1>rand2)
{
gotoxy(28,7+i);
printf("%d-%d=",rand1,rand2);
scanf("%d",&yours);
if (yours==rand1-rand2)
{
score+=10;
gotoxy(40,7+i);
printf("√");
}
else{
gotoxy(40,7+i);
printf("× 正确答案是:%d",rand1-rand2);
}
gotoxy(81,8);
printf("本次得分:%d",score);
}else{
gotoxy(28,7+i);
printf("%d-%d=",rand2,rand1);
scanf("%d",&yours);
if (yours==rand2-rand1)
{
score+=10;
gotoxy(40,7+i);
printf("√");
}
else{
gotoxy(40,7+i);
printf("× 正确答案是:%d",rand1-rand2);
}
gotoxy(81,8);
printf("本次得分:%d",score);
}
}
if(score >= HighScore)
{
//color(14);
gotoxy(28,15);
printf("最高记录被您刷新啦~");
HighScore=score;
File_in();
}else{
//color(14);
gotoxy(28,15);
printf("您离最高分还差:%d",HighScore-score);
}
end=time(NULL);
//color(14); //结束时间
gotoxy(28,16);
printf("您的游戏时间是%ds\n",end-start);
gotoxy(28,17);
//color(14);
go();
}
//乘法
int mul()
{
gotoxy(0,1);
int start,end;
start=time(NULL);
int i,j,tnum,rand1,rand2,yours;
for(j=0;j<3;j++)
{
if(j==0)
printf("第一关\n");
if(j==1)
printf("第二关\n");
if(j==2)
printf("第三关\n");
printf("请选择题目数量<建议在20题左右>:");
scanf("%d",&tnum);
for(i=0;i<tnum;i++)
{
srand(time(NULL));
rand1=1+(int)rand()%10;
rand2=1+(int)rand()%10;
printf("%d*%d=",rand1,rand2);
scanf("%d",&yours);
if (yours==rand1*rand2)
{
//if(i==0)
printf(" √\n");
//if(i==1)
// printf(" √\n");
}else {
printf("闯关失败!正确答案是:%d\n",rand1*rand2);
end=time(NULL);
printf("您的游戏时间是%ds\n",end-start);
go();
}
//有一题错误即失败
}
if(j==0)
printf("恭喜通过第一关!\n\n");
if(j==1)
printf("恭喜通过第二关!!\n\n");
if(j==2)
printf("恭喜通全关!!!\n\n");
}
end=time(NULL);
printf("您的游戏时间是%d\n",end-start);
go();
}
//除法
int dive()
{
gotoxy(0,1);
int start,end;
start=time(NULL);
int i,j,tnum,rand1,rand2,yours;
for(j=0;j<3;j++)
{
if(j==0)
printf("第一关");
if(j==1)
printf("第二关");
if(j==2)
printf("第三关");
printf("\n请选择题目数量<建议在20题左右>:");
scanf("%d",&tnum);
for(i=0;i<tnum;i++)
{
srand(time(NULL));
rand1=1+(int)rand()%10;
rand2=rand1*(1+(int)rand()%10); //随机数产生数字
printf("%d/%d=",rand2,rand1); //相乘结果即被除数
scanf("%d",&yours);
if (yours==rand2/rand1)
{
printf(" √\n");
}
else
{printf("闯关失败!正确答案是:%d\n",rand2/rand1);go();}
}
if(j==0)
printf("恭喜通过第一关!\n\n");
if(j==1)
printf("恭喜通过第二关!!\n\n");
if(j==2)
printf("恭喜通全关!!!\n\n");
}
end=time(NULL);
printf("您的游戏时间是%d\n",end-start);
go();
}
/*
*在文件中读取加减法运算最高分
*/
void File_out()
{
FILE *fp;
fp =fopen("save.txt","r+");
fscanf(fp,"%d",&HighScore);
fclose(fp);
}
/*
*将加减法最高分存储与文件中
*/
void File_in()
{
FILE *fp ;
fp =fopen("save.txt","w+");
fprintf(fp,"%d",HighScore);
fclose(fp);
}
//在文件中读取混合运算最高分
void File_out1()
{
FILE *fp;
fp =fopen("save1.txt","r+");
fscanf(fp,"%d",&HighScore);
fclose(fp);
}
/*
*将混合运算最高分存储与文件中
*/
void File_in1()
{
FILE *fp ;
fp =fopen("save1.txt","w+");
fprintf(fp,"%d",HighScore);
fclose(fp);
}
//是否继续
void go()
//清屏选项
{
int choose;
printf("如果你想继续,输入1,想退出就输入0 ");
scanf("%d",&choose);
system("cls");
switch(choose)
{
case 0:
exit(0);
case 1:
Gameplay() ;
}
}
//边框
void Frame()
{
int n;
int i,j=1;
//color(14);
for (i=5;i<=25;i++)
{
for (j=25;j<=80;j++)
{
gotoxy(j,i);
if (i==5||i==25) printf("=");
else if (j==25||j==79) printf("||");
}
}
}
void Fence()
{
int i;
for(i=1;i<=29;i++)
{
gotoxy(45,i);
printf("||");
}
}
//低难度混合运算
void mixdown()
{
score=0;
File_out1();
int start,end;
start=time(NULL);
int i,rand1,rand2,rand3,yours,x;
gotoxy(1,1);
printf("此为十道低难度四则运算的试题\n");
gotoxy(1,2);
printf("小朋友,快来算算吧~\n") ;
gotoxy(48,2);
printf("这套卷子的最高分是:%d",HighScore);
gotoxy(0,4);
for(i=0;i<10;i++)
{
rand1=rand()%10+1;
rand2=rand()%10+1;
rand3=rand()%10+1;
x=rand()%6;
switch(x)
{
case 1:
printf("%d+%d-%d=",rand1,rand2,rand3);
scanf("%d",&yours);
if(yours==rand1+rand2-rand3)
{
printf(" √\n");
score+=10;
}
else
{
printf(" ×答案为:%d\n",rand1+rand2-rand3);
}
continue;
case 2:
printf("%d+%d*%d=",rand1,rand2,rand3);
scanf("%d",&yours);
if(yours==rand1+rand2*rand3)
{
printf(" √\n");
score+=10;
}
else
{
printf(" ×答案为:%d\n",rand1+rand2*rand3);
}
continue;
case 3:
if(rand2%rand3==0)
{
printf("%d+%d/%d=",rand1,rand2,rand3);
scanf("%d",&yours);
if(yours==rand1+rand2/rand3)
{
printf(" √\n");
score+=10;
}
else
{
printf(" ×答案为:%d\n",rand1+rand2/rand3);
}
continue;
}else{
i--;
continue;
}
case 4:
printf("%d*(%d+%d)=",rand1,rand2,rand3);
scanf("%d",&yours);
if(yours==rand1*(rand2+rand3))
{
printf(" √\n");
score+=10;
}
else
{
printf(" ×答案为:%d\n",rand1*(rand2+rand3));
}
continue;
case 5:
if(rand2%rand3==0)
{
printf("%d-%d/%d=",rand1,rand2,rand3);
scanf("%d",&yours);
if(yours==rand1-rand2/rand3)
{
printf(" √\n");
score+=10;
}
else
{
printf(" ×答案为:%d\n",rand1+rand2/rand3);
}
continue;
}else{
i--;
continue;
}
default:
printf("(%d-%d)*%d=",rand1,rand2,rand3);
scanf("%d",&yours);
if(yours==(rand1-rand2)*rand3)
{
printf(" √\n");
score+=10;
}
else
{
printf(" ×答案为:%d\n",(rand1-rand2)*rand3);
}
continue;
}
}
printf("这套试卷您的得分是:%d\n",score);
if(score >= HighScore)
{
printf("最高记录被您刷新啦~\n");
HighScore=score;
File_in1();
}else{
printf("您离最高分还差:%d\n",HighScore-score);
}
}
//高难度混合运算
void mixup()
{
score=0;
File_out1();
int start,end;
start=time(NULL);
int i,rand1,rand2,rand3,yours,x;
gotoxy(1,1);
printf("此为十道高难度四则运算的试题\n");
gotoxy(1,2);
printf("小朋友,快来算算吧~\n") ;
gotoxy(48,2);
printf("这套卷子的最高分是:%d",HighScore);
gotoxy(0,4);
for(i=0;i<10;i++)
{
rand1=rand()%100+1;
rand2=rand()%100+1;
rand3=rand()%100+1;
x=rand()%6;
switch(x)
{
case 1:
printf("%d+%d-%d=",rand1,rand2,rand3);
scanf("%d",&yours);
if(yours==rand1+rand2-rand3)
{
printf(" √\n");
score+=10;
}
else
{
printf(" ×答案为:%d\n",rand1+rand2-rand3);
}
continue;
case 2:
printf("%d+%d*%d=",rand1,rand2,rand3);
scanf("%d",&yours);
if(yours==rand1+rand2*rand3)
{
printf(" √\n");
score+=10;
}
else
{
printf(" ×答案为:%d\n",rand1+rand2*rand3);
}
continue;
case 3:
if(rand2%rand3==0)
{
printf("%d+%d/%d=",rand1,rand2,rand3);
scanf("%d",&yours);
if(yours==rand1+rand2/rand3)
{
printf(" √\n");
score+=10;
}
else
{
printf(" ×答案为:%d\n",rand1+rand2/rand3);
}
continue;
}else{
i--;
continue;
}
case 4:
printf("%d*(%d+%d)=",rand1,rand2,rand3);
scanf("%d",&yours);
if(yours==rand1*(rand2+rand3))
{
printf(" √\n");
score+=10;
}
else
{
printf(" ×答案为:%d\n",rand1*(rand2+rand3));
}
continue;
case 5:
if(rand2%rand3==0)
{
printf("%d-%d/%d=",rand1,rand2,rand3);
scanf("%d",&yours);
if(yours==rand1-rand2/rand3)
{
printf(" √\n");
score+=10;
}
else
{
printf(" ×答案为:%d\n",rand1+rand2/rand3);
}
continue;
}else{
i--;
continue;
}
default:
printf("(%d-%d)*%d=",rand1,rand2,rand3);
scanf("%d",&yours);
if(yours==(rand1-rand2)*rand3)
{
printf(" √\n");
score+=10;
}
else
{
printf(" ×答案为:%d\n",(rand1-rand2)*rand3);
}
continue;
}
}
printf("这套试卷您的得分是:%d\n",score);
if(score >= HighScore)
{
printf("最高记录被您刷新啦~\n");
HighScore=score;
File_in1();
}else{
printf("您离最高分还差:%d\n",HighScore-score);
}
}
//主函数
int main(void)
{
system("color f0\n");
welcom();
Gameplay();
}
六、完整展示: