c语言枚举类型例题_C语言枚举法解决问题

该博客介绍了一个C语言程序,通过枚举四种基本运算符(加、减、乘、除)的不同组合,验证五个给定数字是否能通过这些运算符得出预设的结果值。程序通过多重循环遍历所有可能的运算符排列,并检查每个组合是否满足条件。如果找到符合条件的组合,程序会输出相应的等式。如果没有找到,程序会提示没有符合的等式。
摘要由CSDN通过智能技术生成

#include

int main()

{

int j;  //设置循环变量

int i[5]; //表示4个运算符

int num[6]; // 表示输入的5个数据

int result; //  表示最终验证的结果值

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

int count=0; //  统计一共有多少种符合的式子

float left,right; //  left表示左边的值,也就是算加减法时的值,right表示右边的值,也就是运算时下一个数的值

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

printf("请输入5个数的值\n");

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

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

printf("请输入结果值是\n");

scanf("%d",&result);

for(i[1]=1 ; i[1]<=4 ; i[1]++)   //循环4种运算符,i[1]=1时,由下面的oper[i[1]]可知表示+号,因此,在这里面,1表示+,2表示-,3表示*,4表示/

{

if( (i[1]<4) || (num[2]!=0) ) //运算符等于4时,也就是为除号时,它后面的数不能为零;如果后面的为零,则前面的运算符不能为除号

{

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;  //设置最开始的数值为0

right=num[1]; //设置右边的数,也就是下一个数是多少,这里设置为5个中数的第一个数

sign=1;  //运算时符号初始化为正值,用1来表示

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

{

switch(oper[i[j]])  //判断运算符

{

case '+':

left=left+sign*right;  //加减法时的值

right=num[j+1];  //下一个数的值

sign=1;

break;

case '-':

left=left+sign*right;

right=num[j+1];

sign=-1;  //实现减法

break;

case '*':

right=right*num[j+1];  //实现乘法,优先级为*高于+-,所以先算右边的数

break;

case '/':

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

break;

}

}

if(left+sign*right==result)  //将左边的数和右边的数相加就是最终值,看与验证值是否相等

{

count++;

printf("   第%d个成立的等式: ",count);

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

printf("%d%c",num[j],oper[i[j]]);     //输出这些数和运算符

printf("%d=%d\n",num[5],result);    //输出第5个数和验证值

//此部分输出符合条件的完整表达式

}

}

}

}

}

}

}

}

}

if(count==0)   //说明没有符合的,count不变,输出无

printf("没有符合的等式!!!\n");

return 0;

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值