c语言编程和PS,求高人剖析下这道C语言编程题(PS:越详细越好)

满意答案

00e27ab806e4881f8254fe7ae8741834.png

红太阳7107

2013.06.04

00e27ab806e4881f8254fe7ae8741834.png

采纳率:56%    等级:9

已帮助:315人

求24点的经典程序,如下:

#include

#include

int enumerate(int ans);

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

char *model[]=

{

"((AxB)yC)zD",

"(Ay(BxC))zD",

"Az(By(CxD))",

"Az((BxC)yD)",

"(AxB)z(CyD)"

};

int *A, *B, *C, *D;

char *x, *y ,*z;

int ***opd;

char ***opr;

char *sample;

int **oprand[]={&A,&B,&C,&D};

char **oprator[]={&x,&y,&z};

int a[4];

int main(void)

{

int i;

printf("Enter %d numbers.\n",4);

for(i=0;i

scanf("%d",a+i);

if(enumerate(24)==0)

printf("No solution!\n");

return 0;

}

int calculate()

{

int v1,v2;

char op;

if(*sample=='A'||*sample=='B'||*sample=='C'||*sample=='D')

v1=***opd++;

else if(*sample=='('){

sample++;

v1=calculate();

}

sample++;

while(*sample=='x'||*sample=='y'||*sample=='z'){

op=***opr++;

sample++;

if(*sample=='A'||*sample=='B'||*sample=='C'||*sample=='D')

v2=***opd++;

else if(*sample=='('){

sample++;

v2=calculate();

}

sample++;

//clrscr();

switch(op)

{

case '+': v1+=v2; break;

case '-' : if(v1

else v1-=v2;break;

case '*': v1*=v2; break;

case '/': if(v2==0||v1%v2!=0)

return -1000;

else v1/=v2; break;

}

}

return v1;

}

int enumerate(int ans)

{

int k;

for(A=a;A

for(B=a;B

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值