lichao0525
lichao0525
采纳率100%
2019-06-26 09:49

超简单的C语言题目,高分悬赏

20
已采纳

【请按照题目要求回答,谢谢】

编写一个C语言程序实现以下功能:1、输入1〜13范围内的4个整数(可以有重复);2、对它们进行加、减、乘、除四则运算后(可以任意的加括号限定计算的优先级);3、将运算结果等于24的所有运算式子找出来并输出。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

1条回答

  • caozhy 从今以后生命中的每一秒都属于我爱的人 2年前
    #include<stdio.h>
    #include<time.h>
    #include<stdlib.h>
    
    int chu(int p,int q)   //除法运算
    {
        if(p%q==0)
            return p/q;
        else
            return 111111; 
    }
    
    
    
    int fun(int i,int j,int c)    //c(局部变量)选择运算符,i,j为运算数字
    {
        int s;
        switch(c)
        {
        case 1:  s=i+j;break;
        case 2:  s=i-j;break;
        case 3:  s=i*j;break;
        case 4:  s=chu(i,j);break;
        }
        return s;
    }
    
    
    void print(int c)     //c(局部变量)选择输出运算符
    {
        if(c==1)printf("+");
        else if(c==2)printf("-");
        else if(c==3)printf("*");
        else printf("/");
    }
    
    
    int main()
    {
        int f[4];//四个1-13的数
        int i,j,m,n;
        int a,b,c;//符号
        int d1,d2,d3; //每步的结果
        srand(time(NULL));   //随机生成四个数字(四张扑克牌)
        for(int w=0;w<4;w++)  
        {
            f[w]=rand()%13+1;    //生成随机数范围在1~13
        }
        for(w=0;w<4;w++)
        {
            printf("%d ",f[w]);
        }
        printf("\n");
        for(i=0;i<4;i++)
            for(j=0;j<4;j++)
                if(j!=i)
                    for(m=0;m<4;m++)
                        if(m!=i&&m!=j)
                            for(n=0;n<4;n++)
                                if(n!=i&&n!=j&&n!=m)            //四个数字的位置不可重复且多重可能置换位置运算
                                    for(a=1;a<5;a++)        
                                        for(b=1;b<5;b++)
                                            for(c=1;c<5;c++)       //选择四个数字中间的三个运算符,皆有四种可能
                                            {                             //避免了对括号的思考,转化为二元运算
                                                d1=fun(f[i],f[j],a);     
                                                d2=fun(d1,f[m],b);      //用前两个数字的运算结果代替
                                                d3=fun(d2,f[n],c);     //同理,两两运算,递归过程
                                                if(d3==24)
                                                {
                                                    printf("%d",f[i]);
                                                    print(a);
                                                    printf("%d",f[j]);
                                                    print(b);
                                                    printf("%d",f[m]);
                                                    print(c);
                                                    printf("%d=24\n",f[n]);
                                                }
                                            }
                                            return 0;
    }
    

    https://blog.csdn.net/qq_36575519/article/details/70147381

    点赞 1 评论 复制链接分享

相关推荐