小学生数学算数游戏
Posted 唐汉宫
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小学生数学算数游戏相关的知识,希望对你有一定的参考价值。
题目要求:
1
、实现一个小型的算术游戏
CAI
软件系统,要求具有友好的界面设计(良好的人
机交互),操作方便,帮助小学生进行一位数(初级)或两位数(高级)的四则运算。
2
、主界面给出游戏规则,提示小学生可以选择加、减、乘和除四则运算的任一种运
算进行挑战。游戏开始,屏幕上随机出现两个数(一位数),提示小学生给出答案,答
错了请求重新输入,每题只有
5
次答题机会,机会用完后直接进入下一题。
3
、统计得分,达到一定分数值(如:
95
分以上)后可进级,即进行两位数计算的
挑战。同样,可设置试题数目上限(如:一共
50
题),完成
50
题得分不及格者,提醒
其
“
好好学习
”
。
4
、相关知识点:面向过程结构化程序设计思想,子函数的设计,菜单设计,分支
/
循环结构设计,随机函数
rand()
应用,程序结束函数
exit()
应用,清屏函数应用等。
5
、提供程序测试方案,程序功能强弱可以因人而异,但程序必须经得起各种测试数
据的考验。
注:出现差值为负数或除不尽时,直接跳到下一题。
分析:
代码分为以下模块:
1.加法模块:add()
2.减法模块:sub()
3.除法模块:divi()
4.乘法模块:mult()
5.菜单模块:menu()
6.判断模块:trial()
思路:
(1)前四个函数需要在结尾处加入判断模块的引用。
(2)这里的等级用来取余获取随机数,所以低等级是10,高等级是100。
(3)菜单模块用与用户进行人机交互。
#include<stdio.h>
#include <stdlib.h>
void add(int level);
void sub(int level);
void mult(int level);
void divi(int level);
void trial(int score, int level);
void menu(int level);
int main()
printf("欢迎来到计算练习系统!!!\\n");
menu(10);
return 0;
//菜单界面
void menu(int level)
int flag = 1, choice;
while (flag)
printf("******** 菜单 *********\\n");
printf("* 1.加法运算 *\\n");
printf("* 2.减法运算 *\\n");
printf("* 3.乘法运算 *\\n");
printf("* 4.除法运算 *\\n");
printf("***********************\\n");
printf("请输入对应序号并回车开始游戏:\\n");
scanf("%d", &choice);
switch (choice)
case 1:
add(level);
flag = 0;
break;
case 2:
sub(level);
flag = 0;
break;
case 3:
mult(level);
flag = 0;
break;
case 4:
divi(level);
flag = 0;
break;
default:
printf("请输入正确的序号!!!\\n");
break;
//加法运算
void add(int level)
int doing, bedone, result, score = 0;
for (int i = 0; i < 50; i++)
printf("请输入以下算式的结果:\\n");
//如果升级了,将数值设置为2位数
if (level == 100)
do
doing = rand() % level, bedone = rand() % level;
while (doing < 10 || bedone < 10);
else
doing = rand() % level, bedone = rand() % level;
printf("%d + %d =", doing, bedone);
for (int n = 5; n > 0; n--)
scanf("%d", &result);
if (result == (doing + bedone))
printf("答对了,真不戳!\\n");
score += 2;
break;
else
if ((n - 1) > 0)
printf("答案错误!!!\\n你还有%d次机会\\n请输入正确答案:\\n", (n - 1));
//调用判分函数
trial(score, level);
//减法
void sub(int level)
int doing, bedone, result, score = 0;
for (int i = 0; i < 50; i++)
printf("请输入以下算式的结果:\\n");
//如果升级了,将数值设置为2位数
if (level == 100)
do
doing = rand() % level, bedone = rand() % level;
while (doing < 10 || bedone < 10 || bedone - doing < 0);
else
//没升级前
do
doing = rand() % level, bedone = rand() % level;
while (bedone - doing < 0);
printf("%d - %d =", bedone, doing);
for (int n = 5; n > 0; n--)
scanf("%d", &result);
if (result == (bedone - doing))
printf("答对了,真不戳!\\n");
score += 2;
break;
else
if ((n - 1) > 0)
printf("答案错误!!!\\n你还有%d次机会\\n请输入正确答案:\\n", (n - 1));
//调用判分函数
trial(score, level);
//乘法
void mult(int level)
int doing, bedone, result, score = 0;
for (int i = 0; i < 50; i++)
printf("请输入以下算式的结果:\\n");
//如果升级了,将数值设置为2位数
if (level == 100)
do
doing = rand() % level, bedone = rand() % level;
while (doing < 10 || bedone < 10);
else
doing = rand() % level, bedone = rand() % level;
printf("%d * %d =", doing, bedone);
for (int n = 5; n > 0; n--)
scanf("%d", &result);
if (result == (doing * bedone))
printf("答对了,真不戳!\\n");
score += 2;
break;
else
if ((n - 1) > 0)
printf("答案错误!!!\\n你还有%d次机会\\n请输入正确答案:\\n", (n - 1));
//调用判分函数
trial(score, level);
//除法
void divi(int level)
double doing, bedone, score = 0;
int result;
for (int i = 0; i < 50; i++)
printf("请输入以下算式的结果:\\n");
//如果升级了,将数值设置为2位数
if (level == 100)
do
doing = rand() % level, bedone = rand() % level;
while (doing < 10 || bedone < 10);
else
doing = rand() % level, bedone = rand() % level;
//让结果为正整数 分母不为零
do
doing = rand() % level, bedone = rand() % level;
while ((bedone / doing) - (int)(bedone / doing) > 0 || doing == 0);
printf("%.0f / %.0f =", bedone, doing);
for (int n = 5; n > 0; n--)
scanf("%d", &result);
if (result == (int)(bedone / doing))
printf("答对了,真不戳!\\n");
score += 2;
break;
else
if ((n - 1) > 0)
printf("答案错误!!!\\n你还有%d次机会\\n请输入正确答案:\\n", (n - 1));
//调用判分函数
trial(score, level);
//判分函数
void trial(int score, int level)
//判断是否升级
if (level == 10)
if (score >= 95)
int choicelevel, choiced = 0;
system("cls");
printf("你已经很棒了,是否进入下一等级的测试?\\n是请输入1,返回主菜单请输入0,结束请按-1:\\n");
while (!choiced)
scanf("%d", &choicelevel);
switch (choicelevel)
case 1:
menu(100);
break;
case 0:
menu(10);
break;
case -1:
exit(0);
default:
system("cls");
printf("请输入正确的数值:");
break;
if (score < 60)
system("cls");
printf("你的分数为:%d,不及格!\\n\\n要好好学习啊!\\n\\n\\n\\n\\n\\n", score);
menu(10);
else if (score < 95)
system("cls");
printf("你的分数为:%d,成绩良好!\\n\\n但还差%d分才能进阶噢!\\n\\n\\n\\n\\n\\n", score, 10 - score);
menu(10);
if (level == 100)
if (score >= 95)
system("cls");
printf("你已经很棒了快去试试其它运算吧!\\n\\n\\n\\n");
menu(100);
else if (score > 60)
system("cls");
printf("你的分数为:%d,成绩良好!\\n\\n但离优秀还有一定距离!\\n\\n\\n\\n\\n\\n", score);
menu(100);
else if (score > 0)
system("cls");
printf("你的分数为:%d,不及格!\\n\\n要好好学习啊!\\n\\n\\n\\n\\n\\n", score);
menu(100);
以上是关于小学生数学算数游戏的主要内容,如果未能解决你的问题,请参考以下文章