C++:从口袋中抓三个不同颜色的球,求有多少种取法

题目:口袋里有红、黄、蓝、绿、白、黑六种颜色的球,从口袋中先后随机拿出三个不同颜色的球,求有多少种取法,要求排列出每种可能出现的情况。(利用枚举类型表示颜色)

分析:首先在enum中写好所有的颜色,这里我的思路是从头开始找,具体实现方式就是:先定义三个整型变量i,k,j(后面会声明为什么),先用for循环找到一个颜色,并把颜色的数字赋值给i,再用另一个for循环再找到一个颜色给k,如果i!=k那就接着找第三个颜色,依然是使用for循环,如果k!=i&&k!=j;那么这一组就找好了

步骤:1、用枚举类型列举出所有颜色并定义变量

          

          2、然后依据分析写出三个for循环

        3、然后这是关键,前提知识(上面的i,j,k只是存储的颜色的序号比如red是0,yellow是1以此类推),之前我定义了一个整型loop是要依次把i,k,l转换成ball类型

    4、然后根据不同的color利用switch语句来输出颜色

      5、注意最后换个行

最后是运行结果

 

第一次发博客,如有哪块儿不对,请尽情批判我(手动滑稽)

 

 

```c #include <stdio.h> int main() { int red, yellow, blue, black, white; printf("请输入口袋颜色的数量(用空格隔开):\n"); scanf("%d %d %d %d %d", &red, &yellow, &blue, &black, &white); int count = 0; for (int i = 1; i <= red; i++) { for (int j = 1; j <= yellow; j++) { for (int k = 1; k <= blue; k++) { if (i != j && i != k && j != k) { count++; } } } } for (int i = 1; i <= red; i++) { for (int j = 1; j <= yellow; j++) { for (int k = 1; k <= black; k++) { if (i != j && i != k && j != k) { count++; } } } } for (int i = 1; i <= red; i++) { for (int j = 1; j <= yellow; j++) { for (int k = 1; k <= white; k++) { if (i != j && i != k && j != k) { count++; } } } } for (int i = 1; i <= red; i++) { for (int j = 1; j <= blue; j++) { for (int k = 1; k <= black; k++) { if (i != j && i != k && j != k) { count++; } } } } for (int i = 1; i <= red; i++) { for (int j = 1; j <= blue; j++) { for (int k = 1; k <= white; k++) { if (i != j && i != k && j != k) { count++; } } } } for (int i = 1; i <= red; i++) { for (int j = 1; j <= black; j++) { for (int k = 1; k <= white; k++) { if (i != j && i != k && j != k) { count++; } } } } for (int i = 1; i <= yellow; i++) { for (int j = 1; j <= blue; j++) { for (int k = 1; k <= black; k++) { if (i != j && i != k && j != k) { count++; } } } } for (int i = 1; i <= yellow; i++) { for (int j = 1; j <= blue; j++) { for (int k = 1; k <= white; k++) { if (i != j && i != k && j != k) { count++; } } } } for (int i = 1; i <= yellow; i++) { for (int j = 1; j <= black; j++) { for (int k = 1; k <= white; k++) { if (i != j && i != k && j != k) { count++; } } } } for (int i = 1; i <= blue; i++) { for (int j = 1; j <= black; j++) { for (int k = 1; k <= white; k++) { if (i != j && i != k && j != k) { count++; } } } } printf("口袋三个不同颜色有 %d 取法。\n", count); return 0; } ``` 该程序使用了多层嵌套的循环,分别计算口袋三个不同颜色的所有可能性,最后将所有可能性相加得到总数。其,为了避免重复计数,每次循环都添加了颜色之间不相等的限制条件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值