Practical C Language Code Snippets and Exercises

1. Simple Program (Hello World)

#include <stdio.h>
int main() {
    printf("Hello World");
    return 0;
}

2. Celsius to Fahrenheit

#include <stdio.h>
int main() {
    float c, f;
    printf("Enter C: ");
    scanf("%f", &c);
    f = (1.8 * c) + 32;
    printf("F = %f", f);
    return 0;
}

3. Largest of Three Numbers (Nested if-else)

#include <stdio.h>
int main() {
    int a, b, c;
    printf("Enter 3 numbers: ");
    scanf("%d%d%d", &a, &b, &c);
    if (a > b) {
        if (a > c) printf("%d", a); else printf("%d", c);
    } else {
        if (b > c) printf("%d", b); else printf("%d", c);
    }
    return 0;
}

4. Roots of a Quadratic Equation

#include <stdio.h>
#include <math.h>
int main() {
    float a, b, c, d;
    printf("Enter a, b, c: ");
    scanf("%f%f%f", &a, &b, &c);
    d = (b * b) - (4 * a * c);
    if (d == 0) printf("Equal: %f", -b / (2 * a));
    else if (d > 0) printf("Real: %f %f", (-b + sqrt(d)) / (2 * a), (-b - sqrt(d)) / (2 * a));
    else printf("Imaginary: %f +/- %fi", -b / (2 * a), sqrt(-d) / (2 * a));
    return 0;
}

5. Calculator (switch-case)

#include <stdio.h>
int main() {
    int a, b; char op;
    printf("Enter exp (e.g. 4 * 2): ");
    scanf("%d %c %d", &a, &op, &b);
    switch(op) {
        case '+': printf("%d", a + b); break;
        case '-': printf("%d", a - b); break;
        case '*': printf("%d", a * b); break;
        case '/': printf("%d", a / b); break;
        case '%': printf("%d", a % b); break;
    }
    return 0;
}

6. Prime Number Checker (for loop)

#include <stdio.h>
int main() {
    int n, i, p = 1;
    printf("Enter number: ");
    scanf("%d", &n);
    for (i = 2; i <= n / 2; i++) {
        if (n % i == 0) p = 0;
    }
    if (p && n > 1) printf("Prime"); else printf("Not Prime");
    return 0;
}

7. Character Pattern Layout

#include <stdio.h>
int main() {
    int i, j, k, n = 4;
    for (i = 1; i <= n; i++) {
        for (j = 1; j < i; j++) printf(" ");
        for (k = 65; k <= 65 + n - i; k++) printf("%c ", k);
        for (k = 65 + n - i - 1; k >= 65; k--) printf("%c ", k);
        printf("\n");
    }
    return 0;
}

8. Armstrong Number Checker (while loop)

#include <stdio.h>
int main() {
    int n, r, s = 0, t;
    printf("Enter 3-digit number: ");
    scanf("%d", &n);
    t = n;
    while (t > 0) {
        r = t % 10;
        s += r * r * r;
        t /= 10;
    }
    if (s == n) printf("Armstrong"); else printf("Not");
    return 0;
}

9. Decimal to Binary Conversion

#include <stdio.h>
int main() {
    int n, r, b = 0, p = 1;
    printf("Enter decimal: ");
    scanf("%d", &n);
    do {
        r = n % 2;
        b += r * p;
        p *= 10;
        n /= 2;
    } while (n > 0);
    printf("Binary: %d", b);
    return 0;
}

10. Largest and Second Largest in Array

#include <stdio.h>
int main() {
    int a[20], n, i, j, t;
    printf("Enter size: ");
    scanf("%d", &n);
    printf("Enter elements:\n");
    for(i = 0; i < n; i++) scanf("%d", &a[i]);
    for(i = 0; i < n - 1; i++) {
        for(j = 0; j < n - 1 - i; j++) {
            if(a[j] > a[j+1]) {
                t = a[j]; a[j] = a[j+1]; a[j+1] = t;
            }
        }
    }
    printf("Max: %d, 2nd Max: %d", a[n-1], a[n-2]);
    return 0;
}

11. Matrix Multiplication (3×3)

#include <stdio.h>
int main() {
    int a[3][3], b[3][3], c[3][3] = {0}, i, j, k;
    printf("Enter Matrix A:\n");
    for(i=0; i<3; i++) for(j=0; j<3; j++) scanf("%d", &a[i][j]);
    printf("Enter Matrix B:\n");
    for(i=0; i<3; i++) for(j=0; j<3; j++) scanf("%d", &b[i][j]);
    for(i=0; i<3; i++)
        for(j=0; j<3; j++)
            for(k=0; k<3; k++) c[i][j] += a[i][k] * b[k][j];
    printf("Result Matrix:\n");
    for(i=0; i<3; i++) {
        for(j=0; j<3; j++) printf("%d ", c[i][j]);
        printf("\n");
    }
    return 0;
}

12. Function Parameter Passing (Factorial)

#include <stdio.h>
void fact(int n) {
    int f = 1, i;
    for(i = 1; i <= n; i++) f *= i;
    printf("Factorial: %d", f);
}
int main() {
    int n;
    printf("Enter number: ");
    scanf("%d", &n);
    fact(n);
    return 0;
}

13. GCD and LCM (Recursive)

#include <stdio.h>
int gcd(int a, int b) {
    return (a == b) ? a : (a > b ? gcd(a - b, b) : gcd(a, b - a));
}
int main() {
    int a, b, g, l;
    printf("Enter 2 numbers: ");
    scanf("%d%d", &a, &b);
    g = gcd(a, b);
    l = (a * b) / g;
    printf("GCD: %d, LCM: %d", g, l);
    return 0;
}

14. String Palindrome

#include <stdio.h>
#include <string.h>
int main() {
    char s[50]; int i, len, p = 1;
    printf("Enter string: ");
    scanf("%s", s);
    len = strlen(s);
    for(i = 0; i < len / 2; i++) {
        if(s[i] != s[len - 1 - i]) p = 0;
    }
    if(p) printf("Palindrome"); else printf("Not Palindrome");
    return 0;
}

15. Array Sorting and Matrix Operations

  • Part 1: Array Ascending Sorting
#include <stdio.h>
void sort(int a[], int n) {
    int i, j, t;
    for(i = 0; i < n - 1; i++) {
        for(j = i + 1; j < n; j++) {
            if(a[i] > a[j]) {
                t = a[i]; a[i] = a[j]; a[j] = t;
            }
        }
    }
}
int main() {
    int a[20], n, i;
    printf("Enter size: ");
    scanf("%d", &n);
    printf("Enter numbers:\n");
    for(i = 0; i < n; i++) scanf("%d", &a[i]);
    sort(a, n);
    printf("Sorted array: ");
    for(i = 0; i < n; i++) printf("%d ", a[i]);
    return 0;
}
  • Part 2: Sum of Non-Diagonal Elements
#include <stdio.h>
int main() {
    int a[10][10], r, c, i, j, sum = 0;
    printf("Enter rows and columns: ");
    scanf("%d%d", &r, &c);
    printf("Enter matrix elements:\n");
    for(i = 0; i < r; i++) {
        for(j = 0; j < c; j++) {
            scanf("%d", &a[i][j]);
            if(i != j) sum += a[i][j];
        }
    }
    printf("Sum of non-diagonals: %d", sum);
    return 0;
}

16. Name Concatenation

#include <stdio.h>
#include <string.h>
int main() {
    char f[20], m[20], l[20], full[60] = "";
    printf("Enter First, Middle, Last names: ");
    scanf("%s%s%s", f, m, l);
    strcat(full, f); strcat(full, " ");
    strcat(full, m); strcat(full, " ");
    strcat(full, l);
    printf("Full Name: %s", full);
    return 0;
}

17. Swap Two Numbers (Call by Address)

#include <stdio.h>
void swap(int *x, int *y) {
    int t = *x; *x = *y; *y = t;
}
int main() {
    int a, b;
    printf("Enter a and b: ");
    scanf("%d%d", &a, &b);
    swap(&a, &b);
    printf("Swapped: a = %d, b = %d", a, b);
    return 0;
}

18. Reverse Array using Pointers

#include <stdio.h>
int main() {
    int a[20], n, i, *p;
    printf("Enter size: ");
    scanf("%d", &n);
    printf("Enter elements:\n");
    for(i = 0; i < n; i++) scanf("%d", &a[i]);
    p = &a[n - 1];
    printf("Reverse order: ");
    for(i = 0; i < n; i++) {
        printf("%d ", *p); p--;
    }
    return 0;
}

19. Player Structure (Sorted by Average)

#include <stdio.h>
struct Player {
    char n[20], t[20];
    float av;
};
int main() {
    int n, i, j; struct Player p[10], tmp;
    printf("Enter number of players: ");
    scanf("%d", &n);
    for(i = 0; i < n; i++) {
        printf("Enter Name, Team, Average for player %d: ", i + 1);
        scanf("%s%s%f", p[i].n, p[i].t, &p[i].av);
    }
    for(i = 0; i < n - 1; i++) {
        for(j = i + 1; j < n; j++) {
            if(p[i].av < p[j].av) {
                tmp = p[i]; p[i] = p[j]; p[j] = tmp;
            }
        }
    }
    printf("\nSorted Players:\n");
    for(i = 0; i < n; i++) printf("%s | %.2f\n", p[i].n, p[i].av);
    return 0;
}

20. Copy One File to Another

#include <stdio.h>
int main() {
    FILE *s, *d; char ch;
    s = fopen("s.txt", "r");
    d = fopen("d.txt", "w");
    if (s == NULL || d == NULL) {
        printf("Error opening files.");
        return 1;
    }
    while ((ch = fgetc(s)) != EOF) fputc(ch, d);
    printf("Copied successfully.");
    fclose(s); fclose(d);
    return 0;
}

21. Create File and Count Characters

#include <stdio.h>
int main() {
    FILE *fp; char ch; int c = 0;
    fp = fopen("t.txt", "w");
    printf("Enter text (Type '~' and press Enter to save):\n");
    while ((ch = getchar()) != '~') fputc(ch, fp);
    fclose(fp);
    fp = fopen("t.txt", "r");
    while ((ch = fgetc(fp)) != EOF) c++;
    fclose(fp);
    printf("Total characters: %d", c);
    return 0;
}