0
0
Cprogramming~20 mins

Header and source file organization - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Header and Source File Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Output of program with separated header and source files
Given the following files, what is the output when the program is compiled and run?
C
// file: math_ops.h
#ifndef MATH_OPS_H
#define MATH_OPS_H

int add(int a, int b);
int multiply(int a, int b);

#endif

// file: math_ops.c
#include "math_ops.h"

int add(int a, int b) {
    return a + b;
}

int multiply(int a, int b) {
    return a * b;
}

// file: main.c
#include <stdio.h>
#include "math_ops.h"

int main() {
    int x = 3, y = 4;
    printf("Sum: %d\n", add(x, y));
    printf("Product: %d\n", multiply(x, y));
    return 0;
}
ACompilation error due to missing function definitions
BSum: 12\nProduct: 7
CSum: 34\nProduct: 12
DSum: 7\nProduct: 12
Attempts:
2 left
💡 Hint
Remember that the header file declares functions and the source file defines them.
Predict Output
intermediate
2:00remaining
Result of including header file multiple times
What will happen if a header file without include guards is included multiple times in a source file?
C
// file: utils.h
int square(int x) { return x * x; }

// file: main.c
#include "utils.h"
#include "utils.h"

int main() {
    int val = 5;
    return square(val);
}
ACompilation error due to multiple definitions of square
BProgram runs and returns 25
CRuntime error due to duplicate function
DWarning but program compiles and runs
Attempts:
2 left
💡 Hint
Think about what happens when the same function is defined twice in one translation unit.
🔧 Debug
advanced
2:00remaining
Identify the cause of linker error in multi-file project
You have these files. Why does the linker give an 'undefined reference' error for function greet() when compiling main.c?
C
// file: greet.h
#ifndef GREET_H
#define GREET_H

void greet(void);

#endif

// file: main.c
#include "greet.h"

int main() {
    greet();
    return 0;
}
Agreet() function is declared but not defined in any source file linked
BMissing include guard in greet.h causes multiple definitions
Cgreet() is defined static in another source file
Dmain.c is missing #include <stdio.h>
Attempts:
2 left
💡 Hint
Check if the function greet() has a definition linked during compilation.
📝 Syntax
advanced
2:00remaining
Correct syntax for include guards in header files
Which option shows the correct way to write include guards in a header file named config.h?
A#define CONFIG_H\n#ifndef CONFIG_H\n// declarations\n#endif
B#ifndef CONFIG_H\n// declarations\n#define CONFIG_H\n#endif
C#ifndef CONFIG_H\n#define CONFIG_H\n// declarations\n#endif
D#ifdef CONFIG_H\n#define CONFIG_H\n// declarations\n#endif
Attempts:
2 left
💡 Hint
Include guards start with #ifndef and then #define the same macro.
🧠 Conceptual
expert
2:00remaining
Best practice for function definitions in header files
Which statement about placing function definitions in header files is correct?
AFunction definitions must always be in header files to allow inlining by the compiler.
BFunction definitions should be in source files; header files only have declarations to avoid multiple definition errors.
CIt's best to put all function definitions in header files to simplify compilation.
DHeader files should contain only macro definitions and no functions.
Attempts:
2 left
💡 Hint
Think about what happens if a function is defined in a header included by multiple source files.