C-Program
- IntroductionSetting Up the EnvironmentBasic Syntax of CPrintf and Scanf in cComments in CVariables and Data TypesOperators in CControl StatementsDecision Making statementLoops in CNested Loops and Pattern ProgramsJump StatementFunctions in CArrays in cStrings in cPointers in cFunctions and PointersStructures and UnionsDynamic Memory AllocationFile Handling in CImportant Programs and Problem SolvingMini Projects in CC Interview Questions and AnswersC Practice Question Bank
Decision-Making Statements in C: From Basics to Advanced
Last Updated on: 24th Jul 2025 18:27:12 PM
Decision-making statements are the heart of any C program, allowing it to make choices based on conditions. Whether you're building a simple calculator or a complex game, these statements guide your code’s flow like a GPS for your program. In this tutorial, we’ll explore Simple if, if-else, Nested if-else, Ladder if (else-if ladder), and switch case, with examples ranging from beginner-friendly to advanced. Each example includes code, output, and a detailed explanation to make learning engaging and clear. Let’s get started!
1. Simple if Statement
The if statement evaluates a condition. If the condition is true, the code inside the if block executes. It’s like deciding to bring an umbrella if it’s raining.
Explanation: The condition temp >= 15 && temp <= 30 checks if the temperature is within a comfortable range. The && operator ensures both conditions are true. If false, the else block warns the user.
Syntax:
if (condition) {
// Code executes if condition is true
}
Basic Example: Check Voting Eligibility
#include <stdio.h>
int main() {
int age = 19;
if (age >= 18) {
printf("You are eligible to vote!\n");
}
return 0;
}
Output:
You are eligible to vote!
Explanation: The condition age >= 18 is true for age = 19, so the message is printed. If age were less than 18, nothing would happen.
Advanced Example: Password Strength Check
This example checks if a password length is sufficient for basic security.
#include <stdio.h>
#include <string.h>
int main() {
char password[50];
printf("Enter your password: ");
scanf("%s", password);
if (strlen(password) >= 8) {
printf("Password is long enough for basic security.\n");
}
printf("Program ends.\n");
return 0;
}
Output (if user enters "mysecretpass"):
Enter your password: mysecretpass
Password is long enough for basic security.
Program ends.
Output (if user enters "short"):
Enter your password: short
Program ends.
Explanation: The if statement checks if the password length (strlen(password)) is at least 8 characters. If true, it confirms the password’s length is sufficient. The program continues regardless, printing "Program ends."
2. if-else Statement
The if-else statement provides an alternative path when the if condition is false. It’s like choosing between coffee or tea based on availability.
Syntax:
if (condition) {
// Code if condition is true
} else {
// Code if condition is false
}
Basic Example: Check if a Number is Positive or Negative
#include <stdio.h>
int main() {
int num = -5;
if (num >= 0) {
printf("%d is positive or zero.\n", num);
} else {
printf("%d is negative.\n", num);
}
return 0;
}
Output:
-5 is negative.
Explanation: Since num is -5, the condition num >= 0 is false, so the else block executes.
Advanced Example: Temperature Alert System
This program checks if the temperature is safe for outdoor activities.
#include <stdio.h>
int main() {
float temp;
printf("Enter current temperature (Celsius): ");
scanf("%f", &temp);
if (temp >= 15 && temp <= 30) {
printf("Temperature %.1f°C is ideal for outdoor activities.\n", temp);
} else {
printf("Warning: Temperature %.1f°C is not ideal. Stay cautious!\n", temp);
}
return 0;
}
Output (if user enters 25):
Enter current temperature (Celsius): 25
Temperature 25.0°C is ideal for outdoor activities.
Output (if user enters 35):
Enter current temperature (Celsius): 35
Warning: Temperature 35.0°C is not ideal. Stay cautious!
3. Nested if-else Statement
Nested if-else statements allow you to check multiple conditions hierarchically, like a decision tree.
Syntax:
if (condition1) {
if (condition2) {
// Code if both are true
} else {
// Code if condition1 is true but condition2 is false
}
} else {
// Code if condition1 is false
}
Basic Example: Student Grade Check
#include <stdio.h>
int main() {
int score = 85;
if (score >= 60) {
if (score >= 80) {
printf("Excellent! You got an A.\n");
} else {
printf("Good job! You got a B.\n");
}
} else {
printf("You need to improve. Grade below B.\n");
}
return 0;
}
Output:
Excellent! You got an A.
Explanation: The outer if checks if score >= 60. Since it’s true, the inner if checks if score >= 80. Since 85 satisfies both, the program prints an A grade.
Advanced Example: Loan Eligibility System
This program determines loan eligibility based on credit score and income.
#include <stdio.h>
int main() {
int credit_score;
float annual_income;
printf("Enter your credit score (300-850): ");
scanf("%d", &credit_score);
printf("Enter your annual income ($): ");
scanf("%f", &annual_income);
if (credit_score >= 700) {
if (annual_income >= 50000) {
printf("Congratulations! You are eligible for a premium loan.\n");
} else {
printf("You qualify for a standard loan due to lower income.\n");
}
} else {
if (credit_score >= 600) {
printf("You may qualify for a limited loan.\n");
} else {
printf("Sorry, you are not eligible for a loan at this time.\n");
}
}
return 0;
}
Output (if user enters 750, 60000):
Enter your credit score (300-850): 750
Enter your annual income ($): 60000
Congratulations! You are eligible for a premium loan.
Output (if user enters 650, 40000):
Enter your credit score (300-850): 650
Enter your annual income ($): 40000
You may qualify for a limited loan.
Explanation: The outer if checks if credit_score >= 700. If true, it checks annual_income >= 50000 to decide between premium or standard loans. If the credit score is below 700, it checks if it’s at least 600 for a limited loan, otherwise denies eligibility.
4. Ladder if (else-if Ladder)
The else-if ladder checks multiple conditions sequentially, stopping at the first true condition. It’s like a flowchart with multiple branches.
Syntax:
if (condition1) {
// Code for condition1
} else if (condition2) {
// Code for condition2
} else if (condition3) {
// Code for condition3
} else {
// Code if no condition is true
}
Basic Example: Traffic Light System
#include <stdio.h>
int main() {
char color = 'R';
if (color == 'R') {
printf("Stop! Red light.\n");
} else if (color == 'Y') {
printf("Caution! Yellow light.\n");
} else if (color == 'G') {
printf("Go! Green light.\n");
} else {
printf("Invalid light color.\n");
}
return 0;
}
Output:
Stop! Red light.
Explanation: The program checks the value of color. Since it’s 'R', the first if block executes, and the rest are skipped.
Advanced Example: Restaurant Discount System
This program applies discounts based on the bill amount and customer type.
#include <stdio.h>
int main() {
float bill_amount;
char customer_type; // R = Regular, V = VIP, S = Student
printf("Enter bill amount ($): ");
scanf("%f", &bill_amount);
printf("Enter customer type (R for Regular, V for VIP, S for Student): ");
scanf(" %c", &customer_type);
float discount = 0;
if (bill_amount > 200 && customer_type == 'V') {
discount = bill_amount * 0.20; // 20% for VIPs over $200
printf("VIP Discount: $%.2f\n", discount);
} else if (bill_amount > 100 && customer_type == 'R') {
discount = bill_amount * 0.10; // 10% for Regulars over $100
printf("Regular Discount: $%.2f\n", discount);
} else if (bill_amount > 50 && customer_type == 'S') {
discount = bill_amount * 0.15; // 15% for Students over $50
printf("Student Discount: $%.2f\n", discount);
} else {
printf("No discount applicable.\n");
}
printf("Final bill after discount: $%.2f\n", bill_amount - discount);
return 0;
}
Output (if user enters 250, 'V'):
Enter bill amount ($): 250
Enter customer type (R for Regular, V for VIP, S for Student): V
VIP Discount: $50.00
Final bill after discount: $200.00
Output (if user enters 80, 'R'):
Enter bill amount ($): 80
Enter customer type (R for Regular, V for VIP, S for Student): R
No discount applicable.
Final bill after discount: $80.00
Explanation: The ladder checks conditions in order:
-
VIPs with bills over $200 get a 20% discount.
-
Regulars with bills over $100 get a 10% discount.
-
Students with bills over $50 get a 15% discount. If none apply, no discount is given. The final bill reflects the discount.
5. switch Case
The switch statement is ideal for selecting one option from multiple possible values of a variable, like choosing a menu item.
Syntax:
switch (expression) {
case value1:
// Code
break;
case value2:
// Code
break;
default:
// Code if no case matches
}
Basic Example: Month Name Display
#include <stdio.h>
int main() {
int month = 4;
switch (month) {
case 1:
printf("January\n");
break;
case 2:
printf("February\n");
break;
case 3:
printf("March\n");
break;
case 4:
printf("April\n");
break;
default:
printf("Invalid month\n");
}
return 0;
}
Output:
April
Explanation: The value of month (4) matches case 4, so "April" is printed. The break ensures the program exits the switch block.
Advanced Example: Calculator with Error Handling
This program creates a simple calculator using switch with input validation.
#include <stdio.h>
int main() {
float num1, num2, result;
char operator;
printf("Enter two numbers (e.g., 5 3): ");
scanf("%f %f", &num1, &num2);
printf("Enter operator (+, -, *, /): ");
scanf(" %c", &operator);
switch (operator) {
case '+':
result = num1 + num2;
printf("%.2f + %.2f = %.2f\n", num1, num2, result);
break;
case '-':
result = num1 - num2;
printf("%.2f - %.2f = %.2f\n", num1, num2, result);
break;
case '*':
result = num1 * num2;
printf("%.2f * %.2f = %.2f\n", num1, num2, result);
break;
case '/':
if (num2 != 0) {
result = num1 / num2;
printf("%.2f / %.2f = %.2f\n", num1, num2, result);
} else {
printf("Error: Division by zero is not allowed.\n");
}
break;
default:
printf("Error: Invalid operator.\n");
}
return 0;
}
Output (if user enters 10, 5, '+'):
Enter two numbers (e.g., 5 3): 10 5
Enter operator (+, -, *, /): +
10.00 + 5.00 = 15.00
Output (if user enters 8, 0, '/'):
Enter two numbers (e.g., 5 3): 8 0
Enter operator (+, -, *, /): /
Error: Division by zero is not allowed.
Explanation: The switch evaluates the operator. For +, -, *, it performs the calculation. For /, it checks for division by zero to avoid errors. The default case handles invalid operators. The %.2f format ensures two decimal places in output.
Why Decision-Making Statements Are Powerful
Decision-making statements let your program:
-
Respond dynamically to user inputs or data.
-
Handle complex logic with nested conditions or ladders.
-
Create user-friendly applications like calculators or eligibility systems.
Pro Tip: Combine these statements to build real-world projects, like:
-
A quiz app using switch for question selection.
-
A billing system with discounts using else-if ladders.
-
A game with nested conditions for player decisions.
Try tweaking these examples (e.g., add more cases to the calculator or new discount rules) to deepen your understanding. Happy coding!
.png)