急,急,急C语言编程高手请近

来源:百度知道 编辑:UC知道 时间:2024/05/15 23:24:49
怎样编辑以下程序,a,b,c,d,e,f,g,h,k;a<15,b<15,c<15,d<15,e<15,f<15,g<15,h<15,k<20且a,b,c,d,e,f,g,h,k不能相等;求和公式为a+b+c+d+e+f+g+h+k=m,最后要输出的结果为a+b+c+d+e+f+g+h+k=m的所有结果,请高手指点怎样编写这样的一个程序,a,b,c,d,e,f,g,h是从0到15之间的任意一个数字,不过不能相等,最后的输出结果要显示a,b,c,d,e,f,g,h,k和相对应的和值m

#include <stdio.h>
struct stack
{
int array[9];
};

char push(int elem,stack* s)
{
int i;
for(i=0;i<9;i++)
if(*(s->array+i)==elem) return 'n';
for(i=0;i<9;i++)
if(*(s->array+i)==-1) {*(s->array+i)=elem;return 'y';}
}

main()
{
int a,b,c,d,e,f,g,h,k;
stack s={-1,-1,-1,-1,-1,-1,-1,-1,-1};
for(a=0;a<15;a++) if(push(a,&s)=='y') {
for(b=a;b<15;b++) if(push(b,&s)=='y') {
for(c=b;c<15;c++) if(push(c,&s)=='y') {
for(d=c;d<15;d++) if(push(d,&s)=='y') {
for(e=d;e<15;e++) if(push(e,&s)=='y') {
for(f=e;f<15;f++) if(push(f,&s)=='y') {
for(g=f;g<15;g++) if(push(g,&s)=='y') {
for(h=g;h<15;h++) if(push(h,&s)=='y') {
for(k=h;k<20;k++) if(push(k,&s)=='y') {
printf("%d+%d+%d+",s.array[0],s.array[1],s.array[2]);