c语言设置一个选择数字的程序,C语言编一个数字益智小游戏

程序功能及运行情况

设计的程序是一个数字益智游戏,旨在培养小朋友玩家的数学思维,提高玩家的数学能力。游戏共设有四个不同的小游戏,分别是一位数四则运算、两位数四则运算、找最值游戏、排序游戏。程序能实现产生随机题目,并能检验玩家的作答是否正确。为了小朋友能感受到游戏的乐趣,特意设置了得分系统,答对不同题目有不同的加分,并会根据总得分划分不同「段位」,呈现给玩家。另外,程序还运用了更加充满活力的设计,让玩家爱上该游戏。

程序运行截图主菜单

69830a65220c74300a7bb229136f465c.png

77569b51feada0241c1d08ec248ed3ba.png

运算游戏

b5c3e674192e9a980b1fdd2fb33487cc.png

f746948c4c0ac7dc1d086d573c8df7b5.png

找最值游戏

b30d9254a6273a39c588e1406ec9e790.png

排序游戏

db150b92116204b4a0e164320cc13048.png

得分统计

d4c6321d7853b1ff2c80b5f49107b2e3.png

代码部分头文件区域

#include

#include

#include

#include

#include

int score0 = 0;

int u, z;

启动界面及主菜单

int main() //主函数游戏说明

{

int menu();

char o;

printf("\n\n");

printf("\t= = = = = = = = = = = = = = = =\n");

printf("\t= 数 字 益 智 小 游 戏 =\n");

printf("\t= =\n");

printf("\t= 欢迎游玩该数字益智小游戏,游戏共设有 =\n");

printf("\t= 四个小游戏,其中『算』小游戏各设有四 =\n");

printf("\t= 个关卡。当你挑战难度越高的小游戏,并 =\n");

printf("\t= 挑战成功,你将获得更高的得分奖励,最 =\n");

printf("\t= 终将根据你的总得分划分你的游戏段位。 =\n");

printf("\t= =\n");

printf("\t= =\n");

printf("\t= * * * * * * * * * =\n");

printf("\t= * 游 戏 段 位 * =\n");

printf("\t= * 『青铜』 --- 5 分 以 下 * =\n");

printf("\t= * 『白银』 --- 5 分 - 10 分 * =\n");

printf("\t= * 『黄金』 --- 10 分 - 15 分 * =\n");

printf("\t= * 『铂金』 --- 15 分 - 20 分 * =\n");

printf("\t= * 『钻石』 --- 20 分 - 25 分 * =\n");

printf("\t= * 『星耀』 --- 25 分 - 30 分 * =\n");

printf("\t= * 『王者』 --- 30 分 以 上 * =\n");

printf("\t= * * * * * * * * * =\n");

printf("\t= =\n");

printf("\t= 作 者 : Cowjiang =\n");

printf("\t= =\n");

printf("\t= = = = = = = = = = = = = = = =\n\n");

printf("\t 按回车键即可开始游戏");

scanf_s("%c", &o, 1);

if (o == '\n') //输入回车开始游戏

{

system("cls");

menu();

}

else

exit(0);

}

int menu() //游戏主菜单函数

{

void one_arithmetic();

void two_arithmetic();

void comparation();

void maxmin();

int score();

int scores();

int scorep();

int o;

system("color 30");

printf("\n\n");

printf("\t ** \n");

printf("\t * * \n");

printf("\t * 主 菜 单 * \n");

printf("\t * * \n");

printf("\t* * * * * * * * * * * * * * * \n");

printf("\t * * \n");

printf("\t * 1.『 算 』一位数运算 * \n");

printf("\t * 2.『 算 』两位数运算 * \n");

printf("\t * 3.『 找 』夹缝找最值 * \n");

printf("\t * 4.『 排 』排序比大小 * \n");

printf("\t * 5. 我 的 目 前 得 分 * \n");

printf("\t * 6. 退 出 益 智 游 戏 * \n");

printf("\t * * \n");

printf("\t * * * * * * * * * \n\n");

printf("\t 请输入序号选择:");

scanf_s("%d", &o);

if (o == 1)

{

one_arithmetic();

}

else if (o == 2)

{

two_arithmetic();

}

else if (o == 3)

{

maxmin();

}

else if (o == 4)

{

comparation();

}

else if (o == 5)

{

scorep();

}

else if (o == 6)

{

printf("\n\t\t= = = = = = = = = = = = = = = = =\n");

printf("\t\t= =\n");

printf("\t\t= 感谢你的游玩! =\n");

printf("\t\t= =\n");

printf("\t\t= = = = = = = = = = = = = = = = =\n");

exit(0);

}

else

{

printf("\n\t 你输入的数字序号有误噢,请重新选择!\n");

system("pause");

system("cls");

menu();

}

}

得分统计

int scorep() //查看当前得分

{

system("color F4");

z = score0;

system("cls");

printf("\n\n");

printf("\t\t * \n");

printf("\t\t * * \n");

printf("\t\t * * \n");

printf("\t\t* * * * * * * * \n");

printf("\t\t * 当前得分: * \n");

printf("\t\t * %2d分 * \n", z);

printf("\t\t * * * * \n");

printf("\t\t * * * * \n");

if (z <= 5)

{

printf("\t\t ** [青 铜] ** \n");

printf("\t\t * * \n");

}

else if (z > 5 && z <= 10)

{

printf("\t\t ** [白 银] ** \n");

printf("\t\t * * \n");

}

else if (z > 10 && z <= 15)

{

printf("\t\t ** [黄 金] ** \n");

printf("\t\t * * \n");

}

else if (z > 15 && z <= 20)

{

printf("\t\t ** [铂 金] ** \n");

printf("\t\t * * \n");

}

else if (z > 20 && z <= 25)

{

printf("\t\t ** [钻 石] ** \n");

printf("\t\t * * \n");

}

else if (z > 25 && z <= 30)

{

printf("\t\t ** [星 耀] ** \n");

printf("\t\t * * \n");

}

else if (z > 30)

{

printf("\t\t ** [王 者] ** \n");

printf("\t\t * * \n");

}

printf("\n\n\t 继续游戏请输入1,退出游戏请输入2 :");

scanf_s("%d", &u);

if (u == 1) //返回主菜单

{

system("cls");

menu();

}

else if (u == 2) //退出游戏

{

printf("\n\t\t= = = = = = = = = = = = = = = = =\n");

printf("\t\t= =\n");

printf("\t\t= 感谢你的游玩! =\n");

printf("\t\t= =\n");

printf("\t\t= = = = = = = = = = = = = = = = =\n");

exit(0);

}

else

{

printf("\n\t 你输入的数字序号有误噢,返回主菜单!\n");

menu();

}

}

int score() //加分函数

{

score0++;

return score0;

}

int scores() //减分函数

{

score0--;

return score0;

}

一位数运算

void one_arithmetic() //一位数运算

{

int p, a, b, c, d, f, g, h, l, m;

float e;

srand(time(NULL));

a = rand() % 10;

b = rand() % 10;

g = rand() % 10;

h = rand() % 10;

system("color E0");

system("cls");

printf("\n\n\t\t * * * * * * * * \n"); //一位数运算主菜单

printf("\t\t * * \n");

printf("\t\t * 1. [第一关] 加 法 * \n");

printf("\t\t * 2. [第二关] 减 法 * \n");

printf("\t\t * 3. [第三关] 乘 法 * \n");

printf("\t\t * 4. [第四关] 除 法 * \n");

printf("\t\t * 5. [进阶]混合运算 * \n");

printf("\t\t * 6. [返 回] 主菜单 * \n");

printf("\t\t * * \n");

printf("\t\t * * * * * * * * \n");

printf("\t\t * * * \n");

printf("\t\t * * * \n");

printf("\t\t * * * * * \n");

printf("\t\t * * * \n");

printf("\t\t * \n");

printf("\t\t请输入数字序号选择挑战关卡:");

scanf_s("%d", &p);

while (p == 1) //一位数加法

{

system("cls");

printf("\n\t%d + %d = ", a, b);

scanf_s("%d", &c);

if (c == a + b)

{

system("color AE");

printf("\n太棒了!挑战成功,加 1 分!\n\n");

score();

system("pause");

}

else if (c != a + b)

{

system("color 4E");

printf("\n太可惜了!挑战失败,不要灰心噢!\n\n");

system("pause");

}

one_arithmetic();

}

while (p == 2) //一位数减法

{

system("cls");

if (a > b) //控制大数减小数

{

printf("\n\t%d - %d = ", a, b);

scanf_s("%d", &c);

if (c == a - b)

{

system("color AE");

printf("\n太棒了!挑战成功,加 1 分!\n\n");

score();

system("pause");

}

else if (c != a - b)

{

system("color 4E");

printf("\n太可惜了!挑战失败,不要灰心噢!\n\n");

system("pause");

}

one_arithmetic();

}

else if (a < b)

{

system("cls");

printf("\n\t%d - %d = ", b, a);

scanf_s("%d", &c);

if (c == b - a)

{

system("color AE");

printf("\n太棒了!挑战成功,加 1 分!\n\n");

score();

system("pause");

}

else if (c != b - a)

{

system("color 4E");

printf("\n\t太可惜了!挑战失败,不要灰心噢!\n\n");

system("pause");

}

one_arithmetic();

}

}

while (p == 3) //一位数乘法

{

system("cls");

printf("\n\t%d * %d = ", a, b);

scanf_s("%d", &c);

if (c == a * b)

{

system("color AE");

printf("\n太棒了!挑战成功,加 1 分!\n\n");

score();

system("pause");

}

else if (c != a * b)

{

system("color 4E");

printf("\n\t\t太可惜了!挑战失败,不要灰心噢!\n\n");

system("pause");

}

one_arithmetic();

}

while (p == 4) //一位数除法

{

system("cls");

b = rand() % (9) + 1; //防止被除数为0

printf("\n\t(四舍五入保留整数)%d除以%d等于", a, b);

scanf_s("%f", &e);

f = b / 2; //四舍五入

if (a % b <= f)

{

d = (int)(e);

if (d == a / b)

{

system("color AE");

printf("\n太棒了!挑战成功,加 1 分!\n\n");

score();

system("pause");

}

else if (d != a / b)

{

system("color 4E");

printf("\n太可惜了!挑战失败,不要灰心噢!\n\n");

system("pause");

}

}

if (a % b > f)

{

d = (int)(e - 0.5);

if (d == a / b)

{

system("color AE");

printf("\n太棒了!挑战成功,加 1 分!\n\n");

score();

system("pause");

}

else if (d != a / b)

{

system("color 4E");

printf("\n太可惜了!挑战失败,不要灰心噢!\n\n");

system("pause");

}

}

one_arithmetic();

}

while (p == 5) //一位数混合运算

{

system("cls");

printf("\n\t%d + %d * ( %d - %d ) = ", a, b, g, h);

scanf_s("%d", &l);

m = a + b * (g - h);

if (l == m)

{

system("color AE");

printf("\n太棒了!挑战成功,加 2 分!\n\n");

score();

score();

system("pause");

}

else if (l != m)

{

system("color 4E");

printf("\n太可惜了!挑战失败,不要灰心噢!\n\n");

system("pause");

}

one_arithmetic();

}

while (p == 6)

{

system("cls");

menu();

}

while (p < 1 || p > 6)

{

system("color 4E");

printf("\n\t\t输入数字序号有误噢,请重新输入!\n\n");

system("pause");

one_arithmetic();

}

}

两位数运算

void two_arithmetic() //两位数运算

{

int p, a, b, c, d, f, g, h, l, m;

float e;

srand(time(NULL));

a = rand() % (90) + 10;

b = rand() % (90) + 10;

g = rand() % (90) + 10;

h = rand() % (90) + 10;

system("color B0");

system("cls");

printf("\n\n\t\t * * * * * * * * \n"); //两位数运算主菜单

printf("\t\t * * \n");

printf("\t\t * 1. [第一关] 加 法 * \n");

printf("\t\t * 2. [第二关] 减 法 * \n");

printf("\t\t * 3. [第三关] 乘 法 * \n");

printf("\t\t * 4. [第四关] 除 法 * \n");

printf("\t\t * 5. [进阶]混合运算 * \n");

printf("\t\t * 6. [返 回] 主菜单 * \n");

printf("\t\t * * \n");

printf("\t\t * * * * * * * * \n");

printf("\t\t * * * \n");

printf("\t\t * * * \n");

printf("\t\t * * * * * \n");

printf("\t\t * * * \n");

printf("\t\t * \n");

printf("\t\t请输入数字序号选择挑战关卡:");

scanf_s("%d", &p);

while (p == 1) //两位数加法

{

system("cls");

printf("\n\t%d + %d = ", a, b);

scanf_s("%d", &c);

if (c == a + b)

{

system("color AE");

printf("\n太棒了!挑战成功,加 1 分!\n\n");

score();

system("pause");

}

else if (c != a + b)

{

system("color 4B");

printf("\n太可惜了!挑战失败,不要灰心噢!\n\n");

system("pause");

}

two_arithmetic();

}

while (p == 2) //两位数减法

{

if (a > b) //控制大数减小数

{

system("cls");

printf("\n\t%d - %d = ", a, b);

scanf_s("%d", &c);

if (c == a - b)

{

system("color AE");

printf("\n太棒了!挑战成功,加 1 分!\n\n");

score();

system("pause");

}

else if (c != a - b)

{

system("color 4B");

printf("\n太可惜了!挑战失败,不要灰心噢!\n\n");

system("pause");

}

two_arithmetic();

}

else if (a < b)

{

system("cls");

printf("\n\t%d - %d = ", b, a);

scanf_s("%d", &c);

if (c == b - a)

{

system("color AE");

printf("\n太棒了!挑战成功,加 1 分!\n\n");

score();

system("pause");

}

else if (c != b - a)

{

system("color 4B");

printf("\n太可惜了!挑战失败,不要灰心噢!\n\n");

system("pause");

}

two_arithmetic();

}

}

while (p == 3) //两位数乘法

{

system("cls");

printf("\n\t%d * %d = ", a, b);

scanf_s("%d", &c);

if (c == a * b)

{

system("color AE");

printf("\n太棒了!挑战成功,加 1 分!\n\n");

score();

system("pause");

}

else if (c != a * b)

{

system("color 4B");

printf("\n太可惜了!挑战失败,不要灰心噢!\n\n");

system("pause");

}

two_arithmetic();

}

while (p == 4) //两位数除法

{

b = rand() % (9) + 1; //防止被除数为0

system("cls");

printf("\n\t(四舍五入保留整数)%d除以%d等于", a, b);

scanf_s("%f", &e);

f = b / 2; //四舍五入

if (a % b <= f)

{

d = (int)(e);

if (d == a / b)

{

system("color AE");

printf("\n太棒了!挑战成功,加 1 分!\n\n");

score();

system("pause");

}

else if (d != a / b)

{

system("color 4B");

printf("\n太可惜了!挑战失败,不要灰心噢!\n\n");

system("pause");

}

}

if (a % b > f)

{

d = (int)(e - 0.5);

if (d == a / b)

{

system("color AE");

printf("\n太棒了!挑战成功,加 1 分!\n\n");

score();

system("pause");

}

else if (d != a / b)

{

system("color 4B");

printf("\n太可惜了!挑战失败,不要灰心噢!\n\n");

system("pause");

}

}

two_arithmetic();

}

while (p == 5) //两位数混合运算

{

system("cls");

printf("\n\t%d + %d * ( %d - %d ) = ", a, b, g, h);

scanf_s("%d", &l);

m = a + b * (g - h);

if (l == m)

{

system("color AE");

printf("\n太棒了!挑战成功,加 2 分!\n\n");

score();

score();

system("pause");

}

else if (l != m)

{

system("color 4B");

printf("\n太可惜了!挑战失败,不要灰心噢!\n\n");

system("pause");

}

one_arithmetic();

}

while (p == 6)

{

system("cls");

menu();

}

while (p < 1 || p > 6)

{

system("color 4B");

printf("\n\t\t输入数字序号有误噢,请重新输入!\n\n");

system("pause");

two_arithmetic();

}

}

排序游戏

void comparation() //排序游戏

{

int a[5], b[5];

int i, j, n, p, q;

srand(time(NULL));

for (i = 0; i < 5; i++)

a[i] = rand() % 10;

system("cls");

system("color 9F");

printf("\n\n\t* * * * * * * * * * * * * *\n"); //排序游戏规则

printf("\t* 游 戏 规 则 *\n");

printf("\t* 开始游戏后将会显示随机五个整数, *\n");

printf("\t* 请根据提示从小到大依次输入排序后 *\n");

printf("\t* 的五个整数,若排序正确即可获得 3 *\n");

printf("\t* 分奖励。加油噢,你能行! *\n");

printf("\t* * * * * * * * * * * * * *\n");

printf("\t * * * \n");

printf("\t * * * \n");

printf("\t * * * * * \n");

printf("\t * * * \n");

printf("\t * \n");

printf("\t 输入数字 0 即可开始游戏:");

scanf_s("%d", &p);

if (p == 0)

printf("\n\n\t* * * * * * * * * * * * * *\n");

printf("\t* *\n");

printf("\t* ");

for (i = 0; i < 5; i++)

printf(" %d ", a[i]);

for (j = 0; j < 4; j++) //将数组从小到大排列

{

for (i = 0; i < 4 - j; i++)

{

if (a[i] > a[i + 1])

{

n = a[i];

a[i] = a[i + 1];

a[i + 1] = n;

}

}

}

printf(" *\n");

printf("\t* *\n");

printf("\t* * * * * * * * * * * * * *\n\n");

printf("接下来,请从小到大输入排序后的五个整数(用空格隔开):");

for (i = 0; i < 5; i++)

scanf_s("%d", &b[i]);

for (i = 0; i < 5; i++) //验证回答正确与否

{

if (a[i] == b[i])

continue;

else

{

system("color 49");

printf("\n\t太可惜了,就差一点就成功了!再挑战一次吧!\n\n");

system("pause");

comparation();

}

}

system("color AF");

printf("\n哇你太棒啦,挑战成功!获得 3 分奖励!\n\n");

score();

score();

score();

system("pause");

system("color 0F");

printf("\n\n想挑战别的游戏吗?\n\n");

printf("1. 挑战其它游戏 ");

printf(" 2. 继续挑战排序游戏 ");

printf(" 3. 查看当前得分\n\n");

printf("回复数字序号选择一项吧:");

scanf_s("%d", &q);

if (q == 2)

{

system("cls");

comparation();

}

else if (q == 3)

scorep();

else

{

system("cls");

menu();

}

}

else //退出排序游戏?

{

system("color F0");

printf("\n\n想玩别的游戏吗?\n\n");

printf("1. 挑战其它游戏 ");

printf(" 2. 继续当前游戏\n\n");

printf("回复数字序号选择一项吧:");

scanf_s("%d", &q);

if (q == 2)

comparation();

else

{

system("cls");

menu();

}

}

}

找最值游戏

void maxmin()

{

int i, j, n, p, q, max, min, maxx, minn;

int a[5];

srand(time(NULL));

system("color DF");

system("cls");

printf("\n\n\t* * * * * * * * * * * * * *\n"); //找最值游戏规则

printf("\t* 游 戏 规 则 *\n");

printf("\t* 开始游戏后将会显示随机五个整数, *\n");

printf("\t* 请分别找出五个整数的最大值和最小 *\n");

printf("\t* 值,若回答正确即可获得 2 分奖励。 *\n");

printf("\t* 加油噢,你能行! *\n");

printf("\t* * * * * * * * * * * * * *\n");

printf("\t * * * \n");

printf("\t * * * \n");

printf("\t * * * * * \n");

printf("\t * * * \n");

printf("\t * \n");

printf("\t 输入数字 0 即可开始游戏:");

scanf_s("%d", &p);

if (p == 0)

{

for (i = 0; i < 5; i++)

a[i] = rand() % 10;

printf("\n\n\t* * * * * * * * * * * * * *\n");

printf("\t* *\n");

printf("\t* ");

for (i = 0; i < 5; i++)

printf(" %d ", a[i]);

printf(" *\n");

printf("\t* *\n");

printf("\t* * * * * * * * * * * * * *\n\n");

printf("接下来,请找出最大值:");

scanf_s("%d", &maxx);

printf("\n然后请找出最小值:");

scanf_s("%d", &minn);

max = a[4];

min = a[1];

for (i = 0; i < 5; i++)

{

if (a[i] > max)

max = a[i];

if (a[i] < min)

min = a[i];

}

if (maxx == max && minn == min) //验证回答正确与否

{

system("color AF");

printf("\n哇你太棒啦!获得奖励 2 分!\n\n");

score();

score();

system("pause");

system("color 0F");

printf("\n\n想挑战别的游戏吗?\n\n");

printf("1. 挑战其它游戏 ");

printf(" 2. 继续挑战找最值游戏 ");

printf(" 3. 查看当前得分\n\n");

printf("回复数字序号选择一项吧:");

scanf_s("%d", &q);

if (q == 2)

{

system("cls");

maxmin();

}

else if (q == 3)

scorep();

else

{

system("cls");

menu();

}

}

else

{

system("color 4F");

printf("\n有点小可惜,再挑战一次吧!\n\n");

system("pause");

maxmin();

}

}

else //退出找最值游戏?

{

system("color F0");

printf("\n\n想玩别的游戏吗?\n\n");

printf("1. 挑战其它游戏 ");

printf(" 2. 回到当前游戏\n\n");

printf("回复数字序号选择一项吧:");

scanf_s("%d", &q);

if (q == 2)

maxmin();

else

{

system("cls");

menu();

}

}

}

小结

这个数字益智游戏是我第一次编写如此规模的 C 语言程序,知识水平有限,也花了不少时间去编写这个程序,代码可能有不尽完美的地方,也没有尽可能地简化代码。最后,非常欢迎各路大神给我提出一些建议,大家一起学习,共同进步,奥力给!

以上所述是小编给大家介绍的C语言编一个数字益智小游戏,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值