Challenge - 5 Problems
Function Prototype Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate2:00remaining
Output of function call with prototype
What is the output of this C program?
C
#include <stdio.h> int add(int a, int b); // function prototype int main() { int result = add(3, 4); printf("%d\n", result); return 0; } int add(int a, int b) { return a + b; }
Attempts:
2 left
💡 Hint
Remember what the add function does and how prototypes help the compiler.
✗ Incorrect
The function prototype declares add before main, so the call add(3,4) is valid. The function returns the sum 3 + 4 = 7, which is printed.
❓ Predict Output
intermediate2:00remaining
Effect of missing function prototype
What error or output occurs when calling a function without a prototype in C99 or later?
C
#include <stdio.h> int main() { int x = multiply(2, 3); printf("%d\n", x); return 0; } int multiply(int a, int b) { return a * b; }
Attempts:
2 left
💡 Hint
Check if the compiler knows about multiply before main.
✗ Incorrect
In C99 and later, calling a function without a prototype causes a compilation error about implicit declaration.
🔧 Debug
advanced2:00remaining
Identify the prototype mismatch error
Which option shows a prototype that will cause a mismatch error with the function definition below?
C
int compute(int x, int y); int compute(int a, float b) { return a + (int)b; }
Attempts:
2 left
💡 Hint
Compare parameter types in prototype and definition carefully.
✗ Incorrect
The prototype declares two ints, but the definition has int and float. This mismatch causes a compilation error.
🧠 Conceptual
advanced1:30remaining
Purpose of function prototypes
What is the main purpose of a function prototype in C?
Attempts:
2 left
💡 Hint
Think about what the compiler needs before a function is called.
✗ Incorrect
Function prototypes tell the compiler the function's return type and parameter types before the function is used, enabling type checking.
❓ Predict Output
expert2:30remaining
Output with mismatched prototype and definition
What is the output of this program?
C
#include <stdio.h> int foo(int a, int b); // prototype int main() { int result = foo(5, 2); printf("%d\n", result); return 0; } int foo(int a, int b) { return a - b; }
Attempts:
2 left
💡 Hint
Check if prototype and definition match and what foo returns.
✗ Incorrect
The prototype and definition match perfectly. foo returns 5 - 2 = 3, which is printed.