【C语言程序设计——枚举】得到 3 种不同颜色的球的可能取法(头歌实践教学平台习题)【合集】

简介: 本关任务要求从红、黄、蓝、白、黑五种颜色的球中,每次取出3个不同颜色的球,列举所有可能的排列情况。通过定义枚举类型和使用嵌套循环语句实现。枚举类型用于表示球的颜色,循环语句用于生成并输出所有符合条件的排列编程要求:在指定区域内补充代码,确保输出格式正确且完整。测试说明:平台将验证代码输出是否与预期一致,包括每种排列的具体顺序和总数。示例输出:```Output:1 red yellow blue2 red yellow white...60 black white bluetotal: 60```

 

目录😋

任务描述

相关知识

枚举类型定义

通过循环语句列举可能的排列

编程要求

测试说明

我的通关代码:

测试结果:


任务描述

本关任务:本关任务:口袋中有红、黄、蓝、白、黑 5 种颜色的球若干个。每次从口袋中先后取出 3 个球,问得到 3 种不同颜色的球的可能取法,输出每种排列的情况。

相关知识

为了完成本关任务,你需要掌握:

  1. 枚举类型定义
  2. 通过循环语句列举可能的排列
  • 枚举类型定义

       在程序设计过程中,如果一个变量仅在很小的范围内取值,则可以把它定义为枚举类型。使用枚举类型的变量能够提高程序的可读性。

       所谓“枚举”就是把所有可能的取值情况列举出来。例如,真和假表示了逻辑值的两种情况,男和女是性别的两种取值情况,选修课成绩有“优”“良”“中”“及格”“不及格”5种取值情况。


定义枚举类型的一般格式为:

       enum 枚举类型名{标识符1,标识符2,……,标识符n};

例如:
       enum bool{ false , true } ;


枚举变量的定义有3种形式(与结构体类似):

1.先定义枚举类型,再定义枚举变量

enum color
{
 red , green , blue , yellow , white 
} ;
enum color select , change ;
image.gif

2.定义枚举类型的同时定义枚举变量

enum color
{
 red , green , blue , yellow , white 
} select , change ;
image.gif

3.不指定枚举类型名,直接定义枚举变量

enum 
{
 red , green , blue , yellow , white 
} select , change ;
image.gif

(变量select是枚举类型enum color,它的值只能是red , green , blue , yellow , white)

  • 通过循环语句列举可能的排列
for(i=red;i<=black;i++)
    for(j=red;j<=black;j++)
    if(i!=j)
    {
        for(k=red;k<=black;k++)
        if((k!=i)&&(k!=j))
        {
            n=n+1;
            printf("%-4d",n);
            for(loop=1;loop<=3;loop++)
            {
                switch(loop)
                {
                    case 1:pri=i;break;
                    case 2:pri=j;break;
                    case 3:pri=k;break;
                }
                switch(pri)
                {
                    case red:printf("%-10s","red");break;
                    case yellow:printf("%-10s","yellow");break;
                    case blue:printf("%-10s","blue");break;
                    case white:printf("%-10s","white");break;
                    case black:printf("%-10s","black");break;
                }
            }
            printf("\n");
        }
    }
image.gif

编程要求

根据提示,在右侧编辑器代码文件中的 Begin-End 区间内补充代码,输出每种排列的情况。

测试说明

平台会对你编写的代码进行测试:

预期输出:

`Output:

1   red       yellow    blue

2   red       yellow    white

3   red       yellow    black

4   red       blue      yellow

5   red       blue      white

6   red       blue      black

7   red       white     yellow

8   red       white     blue

9   red       white     black

10  red       black     yellow

11  red       black     blue

12  red       black     white

13  yellow    red       blue

14  yellow    red       white

15  yellow    red       black

16  yellow    blue      red

17  yellow    blue      white

18  yellow    blue      black

19  yellow    white     red

20  yellow    white     blue

21  yellow    white     black

22  yellow    black     red

23  yellow    black     blue

24  yellow    black     white

25  blue      red       yellow

26  blue      red       white

27  blue      red       black

28  blue      yellow    red

29  blue      yellow    white

30  blue      yellow    black

31  blue      white     red

32  blue      white     yellow

33  blue      white     black

34  blue      black     red

35  blue      black     yellow

36  blue      black     white

37  white     red       yellow

38  white     red       blue

39  white     red       black

40  white     yellow    red

41  white     yellow    blue

42  white     yellow    black

43  white     blue      red

44  white     blue      yellow

45  white     blue      black

46  white     black     red

47  white     black     yellow

48  white     black     blue

49  black     red       yellow

50  black     red       blue

51  black     red       white

52  black     yellow    red

53  black     yellow    blue

54  black     yellow    white

55  black     blue      red

56  black     blue      yellow

57  black     blue      white

58  black     white     red

59  black     white     yellow

60  black     white     blue      

total:   60`

开始你的任务吧,祝你成功!


我的通关代码:

#include<stdio.h>
int main()
{
    enum Color{red,yellow,blue,white,black};
    enum Color i,j,k,pri;
    int n,loop;
    n=0;
    printf("Output:\n");
    // 请在这里补充代码
    /********** Begin *********/
    for(i = red;i<=black;i++){
        for(j = red;j<=black;j++){
            if(i != j){
                for(k = red;k <= black;k++){
                    if((k != i) && (k != j)){
                        n++;
  printf("%-4d",n);
    for(loop = 1;loop <=3;loop++){
        switch (loop){
            case 1:pri = i;break;
            case 2:pri = j; break;
            case 3:pri = k; break;
                    }
                    switch(pri){
                        case red:printf("%-10s","red");break;
                        case yellow:printf("%-10s","yellow");break;
                        case blue:printf("%-10s","blue");break;
                        case white:printf("%-10s","white");break;
                        case black:printf("%-10s","black");break;       
                    }
                 }
                 printf("\n");
             }
         }
      }
  }
}
    /********** End **********/
    printf("\ntotal:%5d\n",n);
    return 0;
}

image.gif


测试结果:

image.gif

image.gif

目录
相关文章
|
8月前
|
存储 C语言
【C语言程序设计——函数】递归求斐波那契数列的前n项(头歌实践教学平台习题)【合集】
本关任务是编写递归函数求斐波那契数列的前n项。主要内容包括: 1. **递归的概念**:递归是一种函数直接或间接调用自身的编程技巧,通过“俄罗斯套娃”的方式解决问题。 2. **边界条件的确定**:边界条件是递归停止的条件,确保递归不会无限进行。例如,计算阶乘时,当n为0或1时返回1。 3. **循环控制与跳转语句**:介绍`for`、`while`循环及`break`、`continue`语句的使用方法。 编程要求是在右侧编辑器Begin--End之间补充代码,测试输入分别为3和5,预期输出为斐波那契数列的前几项。通关代码已给出,需确保正确实现递归逻辑并处理好边界条件,以避免栈溢出或结果
348 16
|
8月前
|
存储 编译器 C语言
【C语言程序设计——函数】分数数列求和2(头歌实践教学平台习题)【合集】
函数首部:按照 C 语言语法,函数的定义首部表明这是一个自定义函数,函数名为fun,它接收一个整型参数n,用于指定要求阶乘的那个数,并且函数的返回值类型为float(在实际中如果阶乘结果数值较大,用float可能会有精度损失,也可以考虑使用double等更合适的数据类型,这里以float为例)。例如:// 函数体代码将放在这里函数体内部变量定义:在函数体中,首先需要定义一些变量来辅助完成阶乘的计算。比如需要定义一个变量(通常为float或double类型,这里假设用float。
194 3
|
8月前
|
存储 算法 安全
【C语言程序设计——函数】分数数列求和1(头歌实践教学平台习题)【合集】
if 语句是最基础的形式,当条件为真时执行其内部的语句块;switch 语句则适用于针对一个表达式的多个固定值进行判断,根据表达式的值与各个 case 后的常量值匹配情况,执行相应 case 分支下的语句,直到遇到 break 语句跳出 switch 结构,若没有匹配值则执行 default 分支(可选)。例如,在判断一个数是否大于 10 的场景中,条件表达式为 “num> 10”,这里的 “num” 是程序中的变量,通过比较其值与 10 的大小关系来确定条件的真假。常量的值必须是唯一的,且在同一个。
165 2
|
C语言
《C语言及程序设计》实践参考——简单循环的流程图
返回:贺老师课程教学链接  项目要求 简单循环的流程图(提示:m是一个变量,在程序中输入)(1)求1到m的倒数和,即  [参考解答] (2)求1到m的平方和[参考解答] (3)求1到m间所有奇数的和[参考解答] (4)求值:  [参考解答] (5)求m!,即  [参考解答]
2021 0
|
C语言
《C语言及程序设计》实践参考——双分支结构流程图-大值
返回:贺老师课程教学链接  项目要求 【双分支结构流程图-大值】问题:画流程图,输入两个整数a和b,输出其中的大值。提示:采用双分支结构,输入a、b后,将大值赋值给另外一个变量,最后输出结果。 参考解答:
1706 0
|
C语言 知识图谱
《C语言及程序设计》实践参考——流程图综合-体重监测器
返回:贺老师课程教学链接  项目要求 【流程图综合-体重监测器】(1)成年男性的标准体重,标准体重(kg)= 身高(cm)-100,请画流程图,输入身高,输出标准体重。 (2)超标准体重20%为超重,请画流程图,先计算出标准体重,当超重时,请给出提示 (3)体重监测器需要在不超重时也给提示,请画流程图。 (4)若体重低于标准体重20%为超低,将这种情况也做出处理。 (5)除了为男生服务,还要
1496 0
|
C语言
《C语言及程序设计》实践参考——被3或者5整除的数
返回:贺老师课程教学链接  项目要求 【项目:被3或者5整除的数】编程序,输入一个数,判断它能否被3或者被5整除。如至少能被这两个数中的一个整除,则将此数打印出来,否则不打印。[参考解答] 解法1: #include &lt;stdio.h&gt; int main ( ) { int x; scanf("%d", &amp;x); if(x%3==0||x%5==
1354 0
|
C语言
《C语言及程序设计》实践参考——乱玩数字
返回:贺老师课程教学链接  项目要求 【项目2:乱玩数字】编程输入整数a和b,若两数之和大于100,则输出两数和百位以上的数字,否则输出两数之和。[参考解答] #include &lt;stdio.h&gt; int main ( ) { int a, b, c; scanf("%d %d", &amp;a, &amp;b); c = a + b; if (
996 0
|
C语言
《C语言及程序设计》实践参考——我的加班费
返回:贺老师课程教学链接  项目要求 【项目:我的加班费】小贺刚上班,按工作时间小时制领取周工资,工资标准是,每小时rate元RMB。每周工作时间40小时,如果要加班,超出部分按正常工资的1.5倍计(老板还算不错喔!)。这周小贺上班的时间为hour小时,请编程序,输入rate和hour,输出小贺本周的薪水。[参考解答] #include &lt;stdio.h&gt; int main (
1089 0
|
C语言
《C语言及程序设计》实践参考——个人所得税计算器if语句版
返回:贺老师课程教学链接  项目要求 【项目:个人所得税计算器if语句版】编写选择结构程序,输入个人月收入总额,计算出他本月应缴税款和税后收入(计算办法见附:关于个人所得税的有关背景知识)。(1)用if语句的嵌套完成;(2)可以在下面程序的基本框架基础上完成,如需其他变量自行增加 #include &lt;stdio.h&gt; int main ( ) { double dSalary
1985 0