Practical C Code Snippets for Beginners

Quadratic Equation Solver in C

This program calculates the roots of a quadratic equation based on user-provided coefficients a, b, and c. It handles real, equal, and complex roots.

#include <stdio.h>
#include <math.h>

int main() {
    double a, b, c;
    double discriminant, root1, root2, realPart, imagPart;

    printf("Enter coefficients a, b and c: ");
    scanf("%lf %lf %lf", &a, &b, &c);

    discriminant = b * b - 4 * a * c;

    if (discriminant > 0) {
        root1 = (-b + sqrt(discriminant)) / (2 * a);
        root2 = (-b - sqrt(discriminant)) / (2 * a);
        printf("Roots are real and different.\n");
        printf("Root 1 = %.2lf\n", root1);
        printf("Root 2 = %.2lf\n", root2);
    } else if (discriminant == 0) {
        root1 = -b / (2 * a);
        printf("Roots are real and equal.\n");
        printf("Root = %.2lf\n", root1);
    } else {
        realPart = -b / (2 * a);
        imagPart = sqrt(-discriminant) / (2 * a);
        printf("Roots are complex and imaginary.\n");
        printf("Root 1 = %.2lf + %.2lfi\n", realPart, imagPart);
        printf("Root 2 = %.2lf - %.2lfi\n", realPart, imagPart);
    }

    return 0;
}

Simple Calculator Using Switch Case

This snippet demonstrates a basic calculator that performs addition, subtraction, multiplication, and division using the switch statement.

#include <stdio.h>

int main() {
    double num1, num2, result;
    char operator;

    printf("Enter first number: ");
    scanf("%lf", &num1);

    printf("Enter an operator (+, -, *, /): ");
    scanf(" %c", &operator);

    printf("Enter second number: ");
    scanf("%lf", &num2);

    switch (operator) {
        case '+':
            result = num1 + num2;
            printf("Result: %.2lf\n", result);
            break;
        case '-':
            result = num1 - num2;
            printf("Result: %.2lf\n", result);
            break;
        case '*':
            result = num1 * num2;
            printf("Result: %.2lf\n", result);
            break;
        case '/':
            if (num2 != 0) {
                result = num1 / num2;
                printf("Result: %.2lf\n", result);
            } else {
                printf("Error: Division by zero is not allowed.\n");
            }
            break;
        default:
            printf("Invalid operator.\n");
    }

    return 0;
}

Bubble Sort Algorithm Implementation

The following code implements the Bubble Sort algorithm to arrange an array of integers in ascending order.

#include <stdio.h>

int main() {
    int arr[100], n, i, j, temp;

    printf("Enter the number of elements (N): ");
    scanf("%d", &n);

    printf("Enter %d integer elements:\n", n);
    for(i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
    }

    printf("\nOriginal Array:\n");
    for(i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }

    for(i = 0; i < n - 1; i++) {
        for(j = 0; j < n - i - 1; j++) {
            if(arr[j] > arr[j + 1]) {
                temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }

    printf("\n\nSorted Array in Ascending Order:\n");
    for(i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }

    printf("\n");
    return 0;
}

Binary Search for Student ID Verification

This program utilizes the Binary Search technique to efficiently check if a student ID exists within a sorted list of registered students.

#include <stdio.h>

int main() {
    int studentIDs[100], n, i, key;
    int low, high, mid, found = 0;

    printf("Enter number of students registered: ");
    scanf("%d", &n);

    printf("Enter %d student IDs in ascending order:\n", n);
    for(i = 0; i < n; i++) {
        scanf("%d", &studentIDs[i]);
    }

    printf("Enter Student ID to search: ");
    scanf("%d", &key);

    low = 0;
    high = n - 1;

    while(low <= high) {
        mid = (low + high) / 2;

        if(studentIDs[mid] == key) {
            found = 1;
            break;
        } else if(studentIDs[mid] < key) {
            low = mid + 1;
        } else {
            high = mid - 1;
        }
    }

    if(found) {
        printf("Student with ID %d is registered (found at position %d).\n", key, mid + 1);
    } else {
        printf("Student with ID %d is NOT registered.\n", key);
    }

    return 0;
}

Matrix Multiplication Program in C

This example demonstrates how to perform matrix multiplication on two matrices, including a check for dimension compatibility.

#include <stdio.h>

int main() {
    int A[10][10], B[10][10], C[10][10] = {0};
    int r1, c1, r2, c2;
    int i, j, k;

    printf("Enter number of rows and columns of Matrix A: ");
    scanf("%d%d", &r1, &c1);

    printf("Enter number of rows and columns of Matrix B: ");
    scanf("%d%d", &r2, &c2);

    if (c1 != r2) {
        printf("Matrix multiplication not possible. Incompatible dimensions.\n");
        return 0;
    }

    printf("Enter elements of Matrix A (%dx%d):\n", r1, c1);
    for (i = 0; i < r1; i++) {
        for (j = 0; j < c1; j++) {
            scanf("%d", &A[i][j]);
        }
    }

    printf("Enter elements of Matrix B (%dx%d):\n", r2, c2);
    for (i = 0; i < r2; i++) {
        for (j = 0; j < c2; j++) {
            scanf("%d", &B[i][j]);
        }
    }

    for (i = 0; i < r1; i++) {
        for (j = 0; j < c2; j++) {
            // Initialization loop placeholder
        }
    }

    for (i = 0; i < r1; i++) {
        for (j = 0; j < c2; j++) {
            for (k = 0; k < c1; k++) {
                C[i][j] += A[i][k] * B[k][j];
            }
        }
    }

    printf("Resultant Matrix (A x B):\n");
    for (i = 0; i < r1; i++) {
        for (j = 0; j < c2; j++) {
            printf("%d\t", C[i][j]);
        }
        printf("\n");
    }

    return 0;
}