C语言程序设计:有52张牌,1~13各4张,从中任选四张,运用加减乘除使得结果为24.输出所有可能

C语言程序设计:有52张牌,1~13各4张,从中任选四张,运用加减乘除使得结果为24.输出所有可能,第1张

#include <stdio.h>

#include <stdlib.h>

struct Pol{

    int num[4]

    char sym[3]

}

char symList[] = {'+','-','*','/'}

void sort(int array[],int n)

{

    int i,j,k,t

    for(i=0i<n-1i++)

    {

        k=i

        for(j=i+1j<nj++)

            if(array[j]<array[k])

                k=j

t=array[k]array[k]=array[i]array[i]=t

        

    }

}

int check(Pol p){

    Pol tmp = p

    sort(tmp.num, 4)

    if(tmp.num[0] == tmp.num[1] && tmp.num[1] == tmp.num[2])

        return 0

    if(tmp.num[1] == tmp.num[2] && tmp.num[2] == tmp.num[3])

        return 0

    return 1

}

int binomial(int a,char op,int b)

{

    switch (op) {

        case '+':

            return a+b

        case '-':

            return a-b

        case '*':

            return a*b

        case '/':

      缓迹握      if(a%b) return 99999999//除不尽

            return a/b

        default:

            exit(-10)//运算符输入错误

    }

}

int cal(Pol p)//如果需要优先级,请自行增加,估计还得50行

{

    int tmp

    tmp = binomial(p.num[0],p.sym[0],p.num[1])

    tmp = binomial(tmp,p.sym[1],p.num[2])

    tmp = binomial(tmp, p.sym[2], p.num[3])

    return tmp == 24

}

int main()

{

    char *s,*t,*u

    Pol p

    for(p.num[0] = 1p.num[0]<=13p.num[0]++)

    for(p.num[1] = 1p.num[1]<=13p.num[1]++)

    for(p.num[2] = 1p.num[2]<=13p.num[2]++)

    for(p.num[3] = 1p.num[3]<=13p.num[3]++)

    for(s = symLists<symList+4s++)

    for(t = symListt<symList+4t++)

    for(u = symListu<symList+4u++)

    {

        p.sym[0] = *s

        p.sym[1] = *t

        p.sym[2] = *u

        if(!check(p)) continue

        if(cal(p)) printf("%d%c%d%c%d%c%d\n",p.num[0],*s,p.num[1],*t,p.num[2],*u,p.num[3])

    }

}

运行结果:

1+1+2*6

1+1*2*6

1*1+2*8

1/1+2*8

1-1+2*12

1*1*2*12

1/1*2*12

1+1*3*4

1*1+3*6

1/1+3*6

1-1+3*8

1*1*3*8

1/1*3*8

1+1*4*3

1+1+4*4

1-1+4*6

1*1*4*6

1/1*4*6

1*1+5*4

1/1+5*4

1+1*6*2

1+1+6*3

1-1+6*4

......

感州尘觉这是我近期扰庆写的最无脑的代码了。。。。

先张法:是在浇筑混凝土前张拉预应力筋,并将张拉的预应力筋临时锚固在台座或钢模上,然后浇筑混凝土,待混凝土强度达到不低于混凝土设计强度值的80%,保证预应力筋与混凝土有足够的粘结时,放松预应力筋,借助于混凝土与预应力筋的粘结,对混凝土施加预应力的施工工艺。

后张法:先浇混凝土,待混凝土达到设计强度75%以上,再张拉钢筋(钢筋束).其主要张拉程序为:埋管制孔→浇混凝土→抽管→养护穿筋张拉→锚固→灌浆(防止钢筋生锈)及锚头处理,其传力途径是依靠锚具阻止钢筋的d性回d,使截面混凝土获得预压应力,这种做法使钢筋与混凝土结为整体,称为有粘结预应力混凝土。

扩展资料:

先张法和后张法不同点:

1.构件制作先后顺序不同:先张法是先张拉后制作谈物构件,后张法是先制作构件后张拉预应力筋。

2.固定构件的锚具不同:先张法一般采用的钢丝夹具和张拉机具如张拉夹具和锚固夹具以及穿心式千斤顶、电动螺杆张拉机、卷扬机等;后张法因预应力筋、锚具和张拉机具是配套使用,一般采用的锚具有单根粗钢筋锚具、钢筋束和钢绞线锚具,采用的张拉机具有拉杆式千斤顶和锥锚式千斤顶等。

3.施工工艺不同:张拉钢筋时间不一样,先张法是先开始张拉,而后张法是等浇筑完混凝土构含岩液件后张拉预应力筋;先张法需要混凝土预应力筋放张程序;后张枣山法需要预留埋管制孔工序,最后还有孔道灌浆工序等。

参考资料来源:百度百科——后张法 参考资料来源:百度百科——先张法


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12332278.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存