C语言任选
㈠ C语言编程10选6全组合并且满足6个数字和问题
代码如下:
#include <stdio.h>
//要求六个数字相加的和
#define AIM 39
int main(){
int number[10]; //用来存放1到10
int su[6];
int i,sum,j=0,k,flag=1;
for(i=0;i<10;i++)
number[i]=i+1;
for(i=0;i<6;i++)
su[i]=0;
for(su[0]=0;su[0]<10;su[0]++)
for(su[1]=0;su[1]<10;su[1]++)
for(su[2]=0;su[2]<10;su[2]++)
for(su[3]=0;su[3]<10;su[3]++)
for(su[4]=0;su[4]<10;su[4]++)
for(su[5]=0;su[5]<10;su[5]++)
{
//j++;
//printf("%d ",j);
sum=0;
for(i=0;i<6;i++)
sum+=number[su[i]];
//printf("%d ",sum);
//如果相加的和满足要求则输出组合
if(sum==AIM){
//判断六个数字之中是否有重复的,并且排除排列顺序不同的组合
for(k=0;k<6;k++)
for(i=k+1;i<6;i++)
if(number[su[i]]<=number[su[k]])
flag=0;
if(flag==1){
for(i=0;i<6;i++)
printf("%d ",number[su[i]]);
j++;
printf(" ");
}
flag=1;
}
}
printf("总共有%d个满足要求的组合 ",j);
return 0;
}
其中宏定义#define AIM后面的数字为需要的总和
本代码选出的组合中数字不能重复
和为39的组合运行结果如下: