填写运算符

来源:互联网 发布:人体工学鼠标 知乎 编辑:程序博客网 时间:2024/05/13 00:33
#include<stdio.h>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;                    //使用case语句,将4种运算符填到相应的空格中,并进行运算                                             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;                                                        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();        return 0;}

这里写图片描述

这里写图片描述

0 0
原创粉丝点击