c语言 填写运算符
用枚举方法实现
算法和原理很简单,就是循环和判断有些多,容易搞错
#include <stdio.h>
int main() {
int j,i[5];//循环变量,数组i来表示4个运算符
int sign,result,count=0,num[6];//累加运算符号 保存运算式的结果 计数器 保存操作数
float left,right;
char oper[5] = {' ','+','-','*','/'};
printf("输入五个数,之间用空格隔开");
for (j = 1; j <= 5 ; j++)
scanf("%d",&num[j]);
printf("输入结果:");
scanf("%d",&result);
for (i[1] = 1; i[1]<=4 ;i[1]++)//循环4种运算符,1234分别为+-*/
{
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语句把运算符填到对应的位置
{
case '+':
left = left + sign*right;
sign = 1;
right = num[j+1];
break;
case '-':
left = left + sign*right;
sign = -1;
right = num[j+1];
break;
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");
getch();
return 0;
}
本文介绍了一种使用C语言实现的枚举方法,通过循环和条件判断填充运算符,以找出使给定数字组合等于特定结果的所有可能的数学表达式。
1614





