一、题目
给出5种颜色,取出3种颜色进行组合,计算组合的个数。
如图:
?
二、思路分析
1、3层循环,每一层循环5次(有5个球)
2、排除掉三个球具有同种颜色的情况
三、代码截图【带注释】
?
四、源代码【带注释】
#include <stdio.h>
struct color5
{
? ? int id;
? ? char col[10];//注意,这里是一个数组!用[]
} color[5];
int main()
{
? ? int count=0;
? ? struct color5 color[5]= {{1,"black"},{2,"red"},
? ? ? ? {3,"orange"},{4,"yellow"},{5,"blue"}
? ? };
? ? for(int i=0; i<5; i++)
? ? {
? ? ? ? for(int j=0; j<5; j++)
? ? ? ? {
? ? ? ? ? ? for(int z=0; z<5; z++)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? //当三个组合都不相等的时候,打印。
? ? ? ? ? ? ? ? //相等,则继续循环
? ? ? ? ? ? ? ? if((i!=j)&&(i!=z)&&(j!=z))
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? count++;//统计循环的次数
? ? ? ? ? ? ? ? ? ? printf("%4d ?%8s ?%8s ?%8s",
? ? ? ? ? ? ? ? ? ? ? ? ? ?count,color[i].col,color[j]
? ? ? ? ? ? ? ? ? ? ? ? ? ?.col,color[z].col);
? ? ? ? ? ? ? ? ? ? printf("\n");
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? continue;//继续循环
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? }
? ? }
? ? printf("\n总共有 ?%d ?种不同的组合",count);
}
五、运行效果
?
关注我,每天分享编程知识
?