Bird
Raised Fist0
Cprogramming~20 mins

Why enumerations are used in C - Challenge Your Understanding

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Enumeration Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
1:30remaining
Purpose of Enumerations in C
Why do programmers use enumerations (enum) in C?
ATo allocate memory dynamically during program execution.
BTo create a set of named integer constants that improve code readability and maintainability.
CTo perform arithmetic operations faster than using regular integers.
DTo define functions that can be called multiple times.
Attempts:
2 left
💡 Hint
Think about how naming values helps when reading code.
❓ Predict Output
intermediate
1:30remaining
Output of Enum Values
What is the output of this C code snippet?
C
#include <stdio.h>

enum Color { RED, GREEN, BLUE };

int main() {
    enum Color c = GREEN;
    printf("%d", c);
    return 0;
}
A1
B0
C2
DCompilation error
Attempts:
2 left
💡 Hint
By default, enum values start at 0 and increase by 1.
❓ Predict Output
advanced
1:30remaining
Enum with Custom Values Output
What will this program print?
C
#include <stdio.h>

enum Status { OK = 5, WARNING = 10, ERROR = 15 };

int main() {
    enum Status s = WARNING;
    printf("%d", s);
    return 0;
}
A15
B0
C10
D5
Attempts:
2 left
💡 Hint
Look at the assigned values in the enum.
🧠 Conceptual
advanced
1:30remaining
Benefits of Using Enumerations
Which of the following is NOT a benefit of using enumerations in C?
AThey automatically allocate memory for large data structures.
BThey help prevent invalid values by limiting options to predefined constants.
CThey improve code readability by using meaningful names instead of numbers.
DThey make it easier to maintain and update code by centralizing related constants.
Attempts:
2 left
💡 Hint
Think about what enums do and what they don't do.
❓ Predict Output
expert
2:00remaining
Enum and Switch Statement Output
What is the output of this C program?
C
#include <stdio.h>

enum Direction { NORTH = 1, EAST, SOUTH = 5, WEST };

int main() {
    enum Direction d = WEST;
    switch(d) {
        case NORTH:
            printf("North");
            break;
        case EAST:
            printf("East");
            break;
        case SOUTH:
            printf("South");
            break;
        case WEST:
            printf("West");
            break;
        default:
            printf("Unknown");
    }
    return 0;
}
AUnknown
BCompilation error
CSouth
DWest
Attempts:
2 left
💡 Hint
Check the enum values and which case matches WEST.

Practice

(1/5)
1. Why are enumerations (enums) used in C programming?
easy
A. To give meaningful names to a set of related integer constants
B. To create floating-point variables
C. To allocate memory dynamically
D. To perform input/output operations

Solution

  1. Step 1: Understand the purpose of enums

    Enums assign names to integer values, making code easier to read and maintain.
  2. Step 2: Compare with other options

    Options B, C, and D describe unrelated tasks like floating-point variables, memory allocation, and I/O operations.
  3. Final Answer:

    To give meaningful names to a set of related integer constants -> Option A
  4. Quick Check:

    Enums = Named integer constants [OK]
Hint: Enums name numbers for clarity and safety [OK]
Common Mistakes:
  • Thinking enums create new data types like floats
  • Confusing enums with memory management
  • Assuming enums handle input/output
2. Which of the following is the correct way to declare an enumeration in C?
easy
A. enum Color { RED, GREEN, BLUE };
B. enum Color = { RED, GREEN, BLUE };
C. enum Color ( RED, GREEN, BLUE );
D. enum Color [ RED, GREEN, BLUE ];

Solution

  1. Step 1: Recall enum declaration syntax

    In C, enums are declared using the syntax: enum Name { list_of_constants };
  2. Step 2: Check each option

    enum Color { RED, GREEN, BLUE }; matches the correct syntax. Options B, C, and D use invalid assignment or brackets.
  3. Final Answer:

    enum Color { RED, GREEN, BLUE }; -> Option A
  4. Quick Check:

    Correct enum syntax uses braces {} [OK]
Hint: Use braces {} to list enum values [OK]
Common Mistakes:
  • Using = instead of braces
  • Using parentheses or brackets instead of braces
  • Missing semicolon at the end
3. What will be the output of the following C code?
enum Day { MON=1, TUE, WED };
int main() {
    enum Day today = TUE;
    printf("%d", today);
    return 0;
}
medium
A. 0
B. 2
C. 1
D. 3

Solution

  1. Step 1: Understand enum value assignment

    MON is assigned 1 explicitly, so TUE becomes 2, WED becomes 3 automatically.
  2. Step 2: Identify the value of 'today'

    Variable today is set to TUE, which has the value 2.
  3. Final Answer:

    2 -> Option B
  4. Quick Check:

    Enum auto-increments from assigned start [OK]
Hint: Enum values auto-increment unless set [OK]
Common Mistakes:
  • Assuming enum starts at 0 when explicitly set
  • Confusing enum names with values
  • Forgetting auto-increment behavior
4. Identify the error in this enum declaration:
enum Status {
    OK = 0,
    ERROR = 1,
    UNKNOWN = 1
};
medium
A. Duplicate enum values are not allowed
B. Enum values must start from 0
C. No error, this is valid code
D. Enum names cannot be uppercase

Solution

  1. Step 1: Check enum value rules

    In C, enum values can be duplicated; it's allowed to have multiple names with the same value.
  2. Step 2: Verify other options

    Enum values do not have to start at 0, and names can be uppercase. So no syntax error here.
  3. Final Answer:

    No error, this is valid code -> Option C
  4. Quick Check:

    Duplicate enum values allowed [OK]
Hint: Duplicate enum values are allowed in C [OK]
Common Mistakes:
  • Thinking duplicate values cause errors
  • Assuming enum must start at zero
  • Believing enum names must be lowercase
5. You want to use an enum to represent traffic light colors with values RED=0, YELLOW=5, GREEN=10. Which enum declaration correctly achieves this?
hard
A. enum TrafficLight { RED=0, YELLOW, GREEN=10 };
B. enum TrafficLight { RED=1, YELLOW=5, GREEN=10 };
C. enum TrafficLight { RED=0, YELLOW=5, GREEN };
D. enum TrafficLight { RED=0, YELLOW=5, GREEN=10 };

Solution

  1. Step 1: Assign explicit values to enum members

    To get RED=0, YELLOW=5, GREEN=10, each must be assigned explicitly.
  2. Step 2: Analyze each option

    enum TrafficLight { RED=0, YELLOW=5, GREEN=10 }; assigns all values explicitly. enum TrafficLight { RED=1, YELLOW=5, GREEN=10 }; assigns RED=1 (not 0), YELLOW=5, GREEN=10. enum TrafficLight { RED=0, YELLOW, GREEN=10 }; assigns RED=0, YELLOW unassigned (would be 1), GREEN=10. enum TrafficLight { RED=0, YELLOW=5, GREEN }; assigns RED=0, YELLOW=5, but GREEN unassigned (would be 6).
  3. Final Answer:

    enum TrafficLight { RED=0, YELLOW=5, GREEN=10 }; -> Option D
  4. Quick Check:

    Explicit values ensure correct enum numbers [OK]
Hint: Assign all enum values explicitly for specific numbers [OK]
Common Mistakes:
  • Assuming unassigned enums auto-skip to next explicit value
  • Forgetting to assign all values explicitly
  • Expecting enums to auto-increment from last explicit value
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard