设计C语言程序 计算24点题目要求在输入4个数后,程序对这个4个数进行运算,若能计算出结果等于24,输出运算

#include <stdio.h>

#include <string.h>

int c24;

char expr3[80];

char expr4[80];

void count2( int a, int b )

{

if ( a + b == 24 )

{

c24 ++;

printf( "%s\t%s\t%d+%d=24\n", expr4, expr3, a, b );

}

if ( a * b == 24 )

{

c24 ++;

printf( "%s\t%s\t%d+%d=24\n", expr4, expr3, a, b );

}

if ( a * b == 24 )

{

c24 ++;

printf( "%s\t%s\t%d*%d=24\n", expr4, expr3, a, b );

}

if ( a - b == 24 )

{

c24 ++;

printf( "%s\t%s\t%d-%d=24\n", expr4, expr3, a, b );

}

if ( b - a == 24 )

{

c24 ++;

printf( "%s\t%s\t%d-%d=24\n", expr4, expr3, b, a );

}

if ( (b!=0) && (a==24*b) )

{

c24 ++;

printf( "%s\t%s\t%d/%d=24\n", expr4, expr3, a, b );

}

if ( (a!=0) && (b==24*a) )

{

c24 ++;

printf( "%s\t%s\t%d/%d=24\n", expr4, expr3, b, a );

}

}

void count3( int a, int b, int c )

{

int dd[3];

int i,j,k,nd;

dd[0] = a;

dd[1] = b;

dd[2] = c;

for ( i = 0; i < 3; i++ )

for ( j = i+1; j < 3; j++ )

{

k = 3 - i - j;

nd = dd[i] + dd[j];

sprintf( expr3, "%d+%d=%d", dd[i], dd[j], nd );

count2( nd, dd[k] );

nd = dd[i] * dd[j];

sprintf( expr3, "%d*%d=%d", dd[i], dd[j], nd );

count2( nd, dd[k] );

if ( dd[i]>dd[j] )

{

nd = dd[i] - dd[j];

sprintf( expr3, "%d-%d=%d", dd[i], dd[j], nd );

}

else

{

nd = dd[j] - dd[i];

sprintf( expr3, "%d-%d=%d", dd[j], dd[i], nd );

}

count2( nd, dd[k] );

if ( (dd[j]!=0) && (dd[i]%dd[j]==0) )

{

nd = dd[i] / dd[j];

sprintf( expr3, "%d/%d=%d", dd[i], dd[j], nd );

count2( nd, dd[k] );

}

else if ( (dd[i]!=0) && (dd[j]%dd[i]==0) )

{

nd = dd[j] / dd[i];

sprintf( expr3, "%d/%d=%d", dd[j], dd[i], nd );

count2( nd, dd[k] );

}

}

}

void count4( int a, int b, int c, int d )

{

int dd[4];

int i,j,k,m,nd; dd[0] = a;

dd[1] = b;

dd[2] = c;

dd[3] = d;

for ( i = 0; i < 4; i++ )

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

{

for ( k = 0; (k==i) || (k==j); k++ ) ;

m = 6 - i - j - k;

nd = dd[i] + dd[j];

sprintf( expr4, "%d+%d=%d", dd[i], dd[j], nd );

count3( nd, dd[k], dd[m] );

nd = dd[i] * dd[j];

sprintf( expr4, "%d*%d=%d", dd[i], dd[j], nd );

count3( nd, dd[k], dd[m] );

if ( dd[i]>dd[j] )

{

nd = dd[i] - dd[j];

sprintf( expr4, "%d-%d=%d", dd[i], dd[j], nd );

}

else

{

nd = dd[j] - dd[i];

sprintf( expr4, "%d-%d=%d", dd[j], dd[i], nd );

}

count3( nd, dd[k], dd[m] );

if ( (dd[j]!=0) && (dd[i]%dd[j]==0) )

{

nd = dd[j] / dd[i];

sprintf( expr4, "%d/%d=%d", dd[j], dd[i], nd );

count3( nd, dd[k], dd[m] );

}

}

}

main()

{

int a,b,c,d;

printf( "Input 4 Number for Count 24: " );

scanf( "%d%d%d%d", &a, &b, &c, &d );

c24 = 0;

count4( a, b, c, d );

if ( c24==0 )

printf( "=======failed======\n" ); /***/

printf("End of C Program, Press Enter.\n");

getchar();

getchar();

return 0;

}