C语言求和高手进

来源:百度知道 编辑:UC知道 时间:2024/05/29 15:56:14
如何将下列程序修改成输出结果为相加的数字是从小到大的顺序,谢谢高手帮忙!如果回答满意另外加分.
#include "stdio.h"

int num[10];
int same(int i,int pos)
{
int j;
for(j=1;j<pos;j+=1)
{
if(i==num[j])
return 1;
}
return 0;
}
int cal(int depth)
{
int i;
if(depth<=8)
for(i=0;i<15;i+=1)
{
if(same(i,depth))
continue;
num[depth]=i;
cal(depth+1);
}
else
{
for(i=0;i<20;i+=1)
{
if(same(i,depth))
continue;
printf("%d+%d+%d+%d+%d+%d+%d+%d+%d=%d\n",num[1],num[2],num[3],num[4],num[5],num[6],num[7],num[8],i,num[1]+num[2]+num[3]+num[4]+num[5]+num[6]+num[7]+num[8]+i);
}
}
return 0;
}
main()
{
cal(1);
}
9个数字定义为a,b,c,d,e,f,g,h,i,也就是说要求输出的求和结果为a+b+c+d+e+f+g+h+i,但是必须a<b<c<d<e<f<g<h,而i的值可以是小于20的区间内的任何一个数字.

#include "stdio.h"

int num[10];
int same(int i,int pos)
{
int j;
for(j=1;j<pos;j+=1)
{
if(i==num[j])
return 1;
}
return 0;
}
int cal(int depth)
{
int i;
if(depth<=8)
for(i=0;i<15;i+=1)
{
if(same(i,depth))
continue;
num[depth]=i;
cal(depth+1);
}
else
{
for(i=0;i<20;i+=1)
{
if(same(i,depth))
continue;
if(num[1]<=num[2]&&num[2]<=num[3])
{
if(num[3]<=num[4]&&num[4]<=num[5])
{
if(num[5]<=num[6]&&num[6]<=num[7])
{
if(num[7]<=num[8])
printf("%d+%d+%d+%d+%d+%d+%d+%d+%d=%d\n",num[1],num[2],num[3],num[4],num[5],num[6],num[7],num[8],i,num[1]+num[2]+num[3]+num[4]+num[5]+num[6]+num[7]+num[8]+i);
}
}
}
}
}