【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

目录
打赏
0
4
4
0
114
分享
相关文章
|
3月前
|
【C语言程序设计——函数】递归求斐波那契数列的前n项(头歌实践教学平台习题)【合集】
本关任务是编写递归函数求斐波那契数列的前n项。主要内容包括: 1. **递归的概念**:递归是一种函数直接或间接调用自身的编程技巧,通过“俄罗斯套娃”的方式解决问题。 2. **边界条件的确定**:边界条件是递归停止的条件,确保递归不会无限进行。例如,计算阶乘时,当n为0或1时返回1。 3. **循环控制与跳转语句**:介绍`for`、`while`循环及`break`、`continue`语句的使用方法。 编程要求是在右侧编辑器Begin--End之间补充代码,测试输入分别为3和5,预期输出为斐波那契数列的前几项。通关代码已给出,需确保正确实现递归逻辑并处理好边界条件,以避免栈溢出或结果
129 16
【C语言程序设计——函数】分数数列求和2(头歌实践教学平台习题)【合集】
函数首部:按照 C 语言语法,函数的定义首部表明这是一个自定义函数,函数名为fun,它接收一个整型参数n,用于指定要求阶乘的那个数,并且函数的返回值类型为float(在实际中如果阶乘结果数值较大,用float可能会有精度损失,也可以考虑使用double等更合适的数据类型,这里以float为例)。例如:// 函数体代码将放在这里函数体内部变量定义:在函数体中,首先需要定义一些变量来辅助完成阶乘的计算。比如需要定义一个变量(通常为float或double类型,这里假设用float。
67 3
【C语言程序设计——函数】分数数列求和1(头歌实践教学平台习题)【合集】
if 语句是最基础的形式,当条件为真时执行其内部的语句块;switch 语句则适用于针对一个表达式的多个固定值进行判断,根据表达式的值与各个 case 后的常量值匹配情况,执行相应 case 分支下的语句,直到遇到 break 语句跳出 switch 结构,若没有匹配值则执行 default 分支(可选)。例如,在判断一个数是否大于 10 的场景中,条件表达式为 “num> 10”,这里的 “num” 是程序中的变量,通过比较其值与 10 的大小关系来确定条件的真假。常量的值必须是唯一的,且在同一个。
52 2
《C语言程序设计》一 第 1 章 程序设计概述
本节书摘来自华章出版社《C语言程序设计》一 书中的第1章,第1.1节,作者:赵宏 陈旭东 马迪芳,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1196 0
《C语言程序设计与实践(第2版)》——第1章 C语言与程序设计概述 1.1初见C语言程序
我国古代数学家张邱建在其编写的《算经》里提出了历史上著名的“百钱买百鸡”问题:今有鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。凡百钱买鸡百只,问鸡翁、母、雏各几何?对于这个问题,很多读者在小学或初中的竞赛中可能都见到过,而且通常都采用不定方程求解。
1166 0
【C语言程序设计——函数】素数判定(头歌实践教学平台习题)【合集】
本内容介绍了编写一个判断素数的子函数的任务,涵盖循环控制与跳转语句、算术运算符(%)、以及素数的概念。任务要求在主函数中输入整数并输出是否为素数的信息。相关知识包括 `for` 和 `while` 循环、`break` 和 `continue` 语句、取余运算符 `%` 的使用及素数定义、分布规律和应用场景。编程要求根据提示补充代码,测试说明提供了输入输出示例,最后给出通关代码和测试结果。 任务核心:编写判断素数的子函数并在主函数中调用,涉及循环结构和条件判断。
145 23
一文彻底搞清楚C语言的函数
本文介绍C语言函数:函数是程序模块化的工具,由函数头和函数体组成,涵盖定义、调用、参数传递及声明等内容。值传递确保实参不受影响,函数声明增强代码可读性。君志所向,一往无前!
24 1
一文彻底搞清楚C语言的函数
|
3月前
|
【C语言程序设计——函数】利用函数求解最大公约数和最小公倍数(头歌实践教学平台习题)【合集】
本文档介绍了如何编写两个子函数,分别求任意两个整数的最大公约数和最小公倍数。内容涵盖循环控制与跳转语句的使用、最大公约数的求法(包括辗转相除法和更相减损术),以及基于最大公约数求最小公倍数的方法。通过示例代码和测试说明,帮助读者理解和实现相关算法。最终提供了完整的通关代码及测试结果,确保编程任务的成功完成。
137 15
|
3月前
|
【C语言程序设计——函数】亲密数判定(头歌实践教学平台习题)【合集】
本文介绍了通过编程实现打印3000以内的全部亲密数的任务。主要内容包括: 1. **任务描述**:实现函数打印3000以内的全部亲密数。 2. **相关知识**: - 循环控制和跳转语句(for、while循环,break、continue语句)的使用。 - 亲密数的概念及历史背景。 - 判断亲密数的方法:计算数A的因子和存于B,再计算B的因子和存于sum,最后比较sum与A是否相等。 3. **编程要求**:根据提示在指定区域内补充代码。 4. **测试说明**:平台对代码进行测试,预期输出如220和284是一组亲密数。 5. **通关代码**:提供了完整的C语言代码实现
75 24
【C语言程序设计——函数】回文数判定(头歌实践教学平台习题)【合集】
算术运算于 C 语言仿若精密 “齿轮组”,驱动着数值处理流程。编写函数求区间[100,500]中所有的回文数,要求每行打印10个数。根据提示在右侧编辑器Begin--End之间的区域内补充必要的代码。如果操作数是浮点数,在 C 语言中是不允许直接进行。的结果是 -1,因为 -7 除以 3 商为 -2,余数为 -1;注意:每一个数据输出格式为 printf("%4d", i);的结果是 1,因为 7 除以 -3 商为 -2,余数为 1。取余运算要求两个操作数必须是整数类型,包括。开始你的任务吧,祝你成功!
79 1