24点
来源:互联网 发布:求100到200的素数js 编辑:程序博客网 时间:2024/04/28 04:27
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.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()
{ srand((unsigned)time(NULL));
int t,i, j, k, l, n, m, r,data[4],a[4]={0};
double num[4] ={0}, res1, res2, res3;
char sign[5] = "+-*/",ch;
printf("随机生成的四个数为:\n");
for (i = 0; i < 4; i++)
{ scanf("%lf",num+i);
//num[i]=rand()%13;
data[i] = num[i];
printf("%d",data[i]);
printf("\n");
}
printf("按任意键输出所有答案:\n");
printf("正确结果为:\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[n], 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[n], data[j], sign[r],
data[l]);/*调整输出顺序*/
else if (res3 == 1.0 / 24.0)
printf("%d%c[(%d%c%d)%c%d]=24\n", data[l],
sign[r], data[i], sign[n],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[n], 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[n], data[j], sign[m], data[k],
sign[r], data[l]);
}
}
}
}
}
getch();
}
#include <conio.h>
#include <stdlib.h>
#include <time.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()
{ srand((unsigned)time(NULL));
int t,i, j, k, l, n, m, r,data[4],a[4]={0};
double num[4] ={0}, res1, res2, res3;
char sign[5] = "+-*/",ch;
printf("随机生成的四个数为:\n");
for (i = 0; i < 4; i++)
{ scanf("%lf",num+i);
//num[i]=rand()%13;
data[i] = num[i];
printf("%d",data[i]);
printf("\n");
}
printf("按任意键输出所有答案:\n");
printf("正确结果为:\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[n], 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[n], data[j], sign[r],
data[l]);/*调整输出顺序*/
else if (res3 == 1.0 / 24.0)
printf("%d%c[(%d%c%d)%c%d]=24\n", data[l],
sign[r], data[i], sign[n],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[n], 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[n], data[j], sign[m], data[k],
sign[r], data[l]);
}
}
}
}
}
getch();
}
阅读全文
0 0
- 24点
- 24点
- 24点
- 24点
- 24点
- 24点
- 24点
- 24点
- 24点
- 24点
- 24点
- 24点
- 24点
- 24点
- 24点
- 24点
- 24点
- 24点
- Spring Jpa 按时间段查询
- java 方法的递归调用
- scala class和object,trait的区别
- 字符转换
- 汇编--学习笔记(三)-书写格式
- 24点
- mac dosbox 配置
- retrofit2框架基本使用
- Java并发编程实战--FutureTask
- 剑指offer 面试题7 用两个栈实现队列
- 关于Solidworks中圆周阵列的放样扫描中出现厚度为0的解决方法
- 词频统计
- 好的文章收藏
- CodeForces 628D(数位DP)