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的組合運行結果如下: