⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 8-2-8.c

📁 2005软件工程师考试下午编程题源代码
💻 C
字号:
/*中国系统分析员顾问团,http://www.csai.cn*/
/*程序员下午考试指南书籍源码*/

#include < stdio.h> 
int op[] = { '+','-','*','/'}; 
char *sample[] = {"ABCDxyz", "ABCxDyz", "ABCxyDz", "ABxCyDz", "ABxCDyz"}; 
char *format[] = {"%d%c(%d%c(%d%c%d))\n", "%d%c((%d%c%d)%c%d)\n", "(%d%c(%d%c%d))%c%d\n" ,
"((%d%c%d)%c%d)%c%d\n", "(%d%c%d)%c(%d%c%d)\n" }; 

int calculate( int **ipt[],char *s) {
int st[4],i,j,r1,r2; 
for(j=i=0;i<7;i++) {
if (s[i]>='A' && s[i]<='D') st[j++] = **ipt[s[i]-'A']; 
else {
r1 = st[j-2]; r2 = st[j-1]; 
switch (**ipt[s[i]-'x'+4]) {
case '+' : 
st[j-2] = r1+r2; 
j--; 
break; 
case '-' :
if(r1<r2) return -1; 
st[j-2] = r1-r2; 
j--; 
break; 
case '*' : 
st[j-2] = r1*r2; 
j--; 
break; 
case '/' : 
if ( r2 == 0 || r1%r2 != 0) return - 1;
st[j-2] = r1/r2; 
j--; 
break; 
} 
} 
} 
return st[0] ; 
} 


int search( int a[],int k ) { 
int m; 
static int *i1, *i2, *i3, *i4, *s1, *s2, *s3; 
int* * intpt[7] = { &i1,&i2,&i3,&i4,&s1,&s2,&s3 }; 
int* *rule[][7] = {{ &i1,&s3,&i2,&s2,&i3,&s1,&i4 }, { &i1,&s3,&i2,&s1,&i3,&s2,&i4 }, 
{ &i1,&s2,&i2,&s1,&i3,&s3,&i4 }, {&i1,&s1,&i2,&s2,&i3,&s3,&i4}, { &i1,&s1,&i2,&s3,&i3,&s2,&i4 } }; 

for (i1 = a ; i1 < a + 4 ; i1++ ) {
for ( i2 = a ; i2 < a + 4; i2++ ) {
if ( i2 == i1 ) continue; 
for ( i3 = a ;i3 < a + 4 ; i3++ ) {
if ( i3 == i1 || i3 == i2 ) continue; 
i4 = a + 6-(i1-a)-(i2-a)-(i3-a); 
for ( s1 = op ; s1 < op + 4 ; s1++ ) 
for ( s2 = op ; s2 < op + 4 ; s2++ ) 
for ( s3 = op ; s3 < op + 4 ; s3++ ) 
for ( m = 0; m < 5; m++ ) 
if ( calculate( intpt,sample[m]) == k ) {
printf( format[m], ** rule[m][0], ** rule[m][1], 
** rule[m][2], ** rule[m][3], ** rule[m][4], 
** rule[m][5], ** rule[m][6] ); 
return 1; 
} 
} 
} 
} 
return 0; 
} 


main(){
int a[4];
printf ("Enter four numbers !"); 
scanf ("%d%d%d%d" ,&a[0], &a[1] ,&a[2] ,&a[3]); 
if (search(a,24) == 0)
printf("No solution !!\n"); 
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -