您的位置:首页 > 其它

文章标题

2017-04-12 22:45 246 查看
24点游戏是一个传统的算数游戏,本次我用C++编程,结构简单易懂,好玩有趣。本次老师留足够时间,我认真地查阅相关书籍及询问同学,最终完成,结果较为满意。

本程序中:定义函数进行两个数之间的运算,从键盘中输入四个数。首先自己写出24点的组合,再通过嵌套循环 ,实现所有数字与运算符的组合排列,输出结果是24点的所有运算式子 。

#include<stdio.h>
#include<conio.h>
#include<windows.h>

double operation(double a1, double a2, int b)
{
/*自定义函数,用于进行两个数之间的运算*/
switch (b) {
case 0:
return (a1 + a2);/*返回两数相加的值*/
case 1:
return (a1 - a2);/*返回两数相减的值*/
case 2:
return (a1 *a2);/*返回两数相乘的值*/
case 3:
return (a1 / a2);/*返回两数相除的值*/
}
}

int main()
{
int i, j, k, l, n, m, r,data[4],a[4]= {0};
double num[4] = {0}, res1, res2, res3;
char sign[5] = "+-*/",ch;
printf("input 4 numbers:");
for (i = 0; i < 4; i++) {
scanf("%lf", num + i);/*从键盘中输入要进行24点游戏的数字*/
data[i] = num[i];
}
printf("input your answer:\n");
printf("please input your result:\n");
for(i=1; i<=3; i++) {
scanf("%d",&a[2]);
scanf("%c",&ch);
scanf("%d",&a[3]);
switch(ch) { /*根据运算符进行运算*/
case '+':
a[1]=a[2]+a[3];
break;
case '-':
a[1]=a[2]-a[3];
break;
case '*':
a[1]=a[2]*a[3];
break;
case '/':
a[1]=a[2]/a[3];
break;
}
printf("%d%c%d=%d\n",a[2],ch,a[3],a[1]);/*输出计算过程*/
}
if(a[1]==24)
printf("you are right!\n");
else
printf("sorry,you are worry!\n");
printf("the result is:\n");/*输出所有结果*/
for (i = 0; i < 4; i++)
for (j = 0; j < 4; j++)
if (j != i) {
for (k = 0; k < 4; k++)
if (k != i && k != j) {
for (l = 0; l < 4; l++)
if (l != i && l != j && l != k) {
for (n = 0; n < 4; n++)
for (m = 0; m < 4; m++)
for (r = 0; r < 4; r++) {
res1 = operation(num[i], num[j], n);
res2 = operation(res1, num[k], m);
res3 = operation(res2, num[l], r);
if (res3 == 24.0)
printf("[(%d%c%d)%c%d]%c%d=24\n", data[i],
sign
, data[j], sign[m], data[k], sign[r],
data[l]);/*若结果为24则按正常顺序输出*/
else if (res3 ==  - 24.0)
printf("[%d%c(%d%c%d)]%c%d=24\n",data[k],
sign[m],data[i], sign
, data[j], sign[r],
data[l]);/*调整输出顺序*/
else if
4000
(res3 == 1.0 / 24.0)
printf("%d%c[(%d%c%d)%c%d]=24\n", data[l],
sign[r], data[i], sign
,data[j], sign[m],
data[k]);/*调整输出顺序*/
else if (res3 ==  - 1.0 / 24.0)
printf("%d%c[%d%c(%d%c%d)]=24\n", data[l],
sign[r], data[k], sign
, data[i], sign[m],
data[j]);/*调整输出顺序*/
else {
res1 = operation(data[i], data[j], n);
res2 = operation(data[k], data[l], r);
res3 = operation(res1, res2, m);
if (res3 == 24.0)/*判断结果是否为24*/
printf("(%d%c%d)%c(%d%c%d)=24\n", data[i],
sign
, data[j], sign[m], data[k],
sign[r], data[l]);
}
}
}
}
}
return 0;
}


“`

以下为部分游戏截图



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: