c语言 运算符 结果,填运算符算法求解,最后判断结果那里不明白过程

这段代码展示了一个C程序,用于寻找四个整数通过加、减、乘、除运算得到指定结果的所有可能组合。程序首先读取5个整数和一个目标结果,然后遍历所有可能的运算符排列组合,检查每种组合是否能得到目标结果。如果找到符合条件的运算组合,程序会输出这个组合。
摘要由CSDN通过智能技术生成

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

#include

int main()

{

int j, i[5]; //循环变量 ,数组i用来表示4个运算符

int sign;//累加运算时的符号

int result; //保存运算式的结果值

int count = 0; //计数器,统计符合条件的方案

int num[6]; //保存操作数

float left, right; //保存中间结果

char oper[5] = { ' ', '+', '-', '*', '/' }; //运算符

printf("请输入5个数:");

for (j = 1; j <= 5; j++)

scanf("%d", &num[j]);

printf("请输入结果:");

scanf("%d", &result);

for (i[1] = 1; i[1] <= 4; i[1]++)//循环4种运算符,1表示+,2表示-,3表示*,4表示/

{

if ((i[1]<4) || (num[2] != 0))//运算符若是/,则第二个运算数不能为0

{

for (i[2] = 1; i[2] <= 4; i[2]++)

{

if ((i[2]<4) || (num[3] != 0))

{

for (i[3] = 1; i[3] <= 4; i[3]++)

{

if ((i[3]<4) || num[4] != 0)

{

for (i[4] = 1; i[4] <= 4; i[4]++)

{

if ((i[4]<4) || (num[5] != 0))

{

left = 0;

right = num[1];

sign = 1;

for (j = 1; j <= 4; j++)

{

switch (oper[i[j]])

{

case '+':

left = left + sign*right;

sign = 1;

right = num[j + 1];

break;

case '-':

left = left + sign*right;

sign = -1;

right = num[j + 1];

break;//通过f=-1实现减法

case '*':

right = right*num[j + 1];

break;//实现乘法

case '/':

right = right / num[j + 1];//实现除法

break;

}

}

if (left + sign*right == result)

{

count++;

printf("%3d:", count);

for (j = 1; j <= 4; j++)

printf("%d%c", num[j], oper[i[j]]);

printf("%d=%d\n", num[5], result);

}

}

}

}

}

}

}

}

}

if (count == 0)

printf("没有符合要求的方法!\n");

getchar();

getchar();

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值