Tutorials Logic, IN +91 8092939553 info@tutorialslogic.com
FAQs Support
Navigation
Home About Us Contact Us Blogs FAQs
Tutorials
All Tutorials
Services
Academic Projects Resume Writing Interview Questions Website Development
Compiler Tutorials

C Programs — Practice Examples

Here are 15 classic C programs that cover fundamental programming concepts. Each program is self-contained and ready to compile with GCC.

1. Hello World
#include <stdio.h>
int main() {
    printf("Hello, World!\n");
    return 0;
}
2. Sum of Two Numbers
#include <stdio.h>
int main() {
    int a, b, sum;
    printf("Enter two integers: ");
    scanf("%d %d", &a, &b);
    sum = a + b;
    printf("Sum of %d and %d = %d\n", a, b, sum);
    return 0;
}
3. Factorial (Iterative)
#include <stdio.h>
int main() {
    int n;
    long long fact = 1;
    printf("Enter a positive integer: ");
    scanf("%d", &n);
    if (n < 0) {
        printf("Factorial not defined for negative numbers.\n");
    } else {
        for (int i = 1; i <= n; i++) fact *= i;
        printf("%d! = %lld\n", n, fact);
    }
    return 0;
}
/* Output: 5! = 120 */
4. Factorial (Recursive)
#include <stdio.h>
long long factorial(int n) {
    if (n == 0 || n == 1) return 1;
    return n * factorial(n - 1);
}
int main() {
    int n;
    printf("Enter a positive integer: ");
    scanf("%d", &n);
    printf("%d! = %lld\n", n, factorial(n));
    return 0;
}
5. Fibonacci Series
#include <stdio.h>
int main() {
    int n;
    printf("Enter number of terms: ");
    scanf("%d", &n);
    long long a = 0, b = 1, c;
    printf("Fibonacci series: ");
    for (int i = 0; i < n; i++) {
        printf("%lld ", a);
        c = a + b;
        a = b;
        b = c;
    }
    printf("\n");
    return 0;
}
/* Output (n=8): 0 1 1 2 3 5 8 13 */
6. Check Prime Number
#include <stdio.h>
#include <math.h>
int isPrime(int n) {
    if (n < 2) return 0;
    if (n == 2) return 1;
    if (n % 2 == 0) return 0;
    for (int i = 3; i <= (int)sqrt(n); i += 2) {
        if (n % i == 0) return 0;
    }
    return 1;
}
int main() {
    int n;
    printf("Enter a number: ");
    scanf("%d", &n);
    printf("%d is %s\n", n, isPrime(n) ? "prime" : "not prime");

    // Print all primes up to 50
    printf("Primes up to 50: ");
    for (int i = 2; i <= 50; i++) {
        if (isPrime(i)) printf("%d ", i);
    }
    printf("\n");
    return 0;
}
/* Compile: gcc prime.c -o prime -lm */
7. Check Palindrome (Number)
#include <stdio.h>
int main() {
    int n, original, reversed = 0, digit;
    printf("Enter a number: ");
    scanf("%d", &n);
    original = n;
    while (n != 0) {
        digit    = n % 10;
        reversed = reversed * 10 + digit;
        n       /= 10;
    }
    if (original == reversed)
        printf("%d is a palindrome\n", original);
    else
        printf("%d is not a palindrome\n", original);
    return 0;
}
/* 121 -> palindrome, 123 -> not palindrome */
8. Reverse a String
#include <stdio.h>
#include <string.h>
void reverseString(char str[]) {
    int len = strlen(str);
    for (int i = 0; i < len / 2; i++) {
        char temp       = str[i];
        str[i]          = str[len - 1 - i];
        str[len - 1 - i] = temp;
    }
}
int main() {
    char str[100];
    printf("Enter a string: ");
    fgets(str, sizeof(str), stdin);
    str[strcspn(str, "\n")] = '\0';  // remove newline
    printf("Original: %s\n", str);
    reverseString(str);
    printf("Reversed: %s\n", str);
    return 0;
}
/* "Hello" -> "olleH" */
9. Check Palindrome (String)
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int isPalindrome(char str[]) {
    int len = strlen(str);
    for (int i = 0; i < len / 2; i++) {
        if (tolower(str[i]) != tolower(str[len - 1 - i])) return 0;
    }
    return 1;
}
int main() {
    char words[][20] = {"racecar", "hello", "madam", "level", "world"};
    for (int i = 0; i < 5; i++) {
        printf("%-10s -> %s\n", words[i],
               isPalindrome(words[i]) ? "palindrome" : "not palindrome");
    }
    return 0;
}
/* racecar -> palindrome, hello -> not palindrome */
10. Bubble Sort
#include <stdio.h>
void bubbleSort(int arr[], int n) {
    for (int i = 0; i < n - 1; i++) {
        int swapped = 0;
        for (int j = 0; j < n - 1 - i; j++) {
            if (arr[j] > arr[j + 1]) {
                int temp   = arr[j];
                arr[j]     = arr[j + 1];
                arr[j + 1] = temp;
                swapped    = 1;
            }
        }
        if (!swapped) break;  // already sorted
    }
}
int main() {
    int arr[] = {64, 34, 25, 12, 22, 11, 90};
    int n = sizeof(arr) / sizeof(arr[0]);
    printf("Before: ");
    for (int i = 0; i < n; i++) printf("%d ", arr[i]);
    bubbleSort(arr, n);
    printf("\nAfter:  ");
    for (int i = 0; i < n; i++) printf("%d ", arr[i]);
    printf("\n");
    return 0;
}
/* After: 11 12 22 25 34 64 90 */
11. Binary Search
#include <stdio.h>
int binarySearch(int arr[], int n, int target) {
    int low = 0, high = n - 1;
    while (low <= high) {
        int mid = low + (high - low) / 2;
        if (arr[mid] == target) return mid;
        else if (arr[mid] < target) low  = mid + 1;
        else                        high = mid - 1;
    }
    return -1;  // not found
}
int main() {
    int arr[] = {2, 5, 8, 12, 16, 23, 38, 56, 72, 91};
    int n = sizeof(arr) / sizeof(arr[0]);
    int target = 23;
    int idx = binarySearch(arr, n, target);
    if (idx != -1)
        printf("%d found at index %d\n", target, idx);
    else
        printf("%d not found\n", target);
    return 0;
}
/* 23 found at index 5 */
12. Swap Two Numbers (3 Methods)
#include <stdio.h>
int main() {
    int a = 5, b = 10;
    printf("Original: a=%d, b=%d\n", a, b);

    // Method 1: Using temp variable
    int temp = a; a = b; b = temp;
    printf("After temp swap: a=%d, b=%d\n", a, b);

    // Method 2: Using XOR (no temp variable)
    a = 5; b = 10;
    a = a ^ b;
    b = a ^ b;
    a = a ^ b;
    printf("After XOR swap:  a=%d, b=%d\n", a, b);

    // Method 3: Using pointers
    void swapPtr(int *x, int *y);
    a = 5; b = 10;
    swapPtr(&a, &b);
    printf("After ptr swap:  a=%d, b=%d\n", a, b);
    return 0;
}
void swapPtr(int *x, int *y) {
    int t = *x; *x = *y; *y = t;
}
13. Find Largest in Array
#include <stdio.h>
int main() {
    int arr[] = {34, 78, 12, 56, 90, 23, 45};
    int n = sizeof(arr) / sizeof(arr[0]);
    int largest = arr[0], smallest = arr[0];
    int largestIdx = 0, smallestIdx = 0;

    for (int i = 1; i < n; i++) {
        if (arr[i] > largest)  { largest  = arr[i]; largestIdx  = i; }
        if (arr[i] < smallest) { smallest = arr[i]; smallestIdx = i; }
    }

    printf("Array: ");
    for (int i = 0; i < n; i++) printf("%d ", arr[i]);
    printf("\nLargest:  %d (index %d)\n", largest,  largestIdx);
    printf("Smallest: %d (index %d)\n", smallest, smallestIdx);
    return 0;
}
/* Largest: 90 (index 4), Smallest: 12 (index 2) */
14. Matrix Multiplication
#include <stdio.h>
#define N 3
int main() {
    int a[N][N] = {{1,2,3},{4,5,6},{7,8,9}};
    int b[N][N] = {{9,8,7},{6,5,4},{3,2,1}};
    int c[N][N] = {0};

    // Matrix multiplication: c[i][j] = sum of a[i][k] * b[k][j]
    for (int i = 0; i < N; i++)
        for (int j = 0; j < N; j++)
            for (int k = 0; k < N; k++)
                c[i][j] += a[i][k] * b[k][j];

    printf("Result of A x B:\n");
    for (int i = 0; i < N; i++) {
        for (int j = 0; j < N; j++) printf("%5d", c[i][j]);
        printf("\n");
    }
    return 0;
}
/*
   30   24   18
   84   69   54
  138  114   90
*/
15. Count Vowels and Consonants
#include <stdio.h>
#include <ctype.h>
#include <string.h>
int isVowel(char c) {
    c = tolower(c);
    return c=='a' || c=='e' || c=='i' || c=='o' || c=='u';
}
int main() {
    char str[200];
    printf("Enter a string: ");
    fgets(str, sizeof(str), stdin);
    int vowels = 0, consonants = 0, spaces = 0, digits = 0;
    for (int i = 0; str[i] != '\0'; i++) {
        if (isalpha(str[i])) {
            if (isVowel(str[i])) vowels++;
            else                 consonants++;
        } else if (isspace(str[i])) spaces++;
        else if (isdigit(str[i]))   digits++;
    }
    printf("Vowels:     %d\n", vowels);
    printf("Consonants: %d\n", consonants);
    printf("Spaces:     %d\n", spaces);
    printf("Digits:     %d\n", digits);
    return 0;
}
/* "Hello World 123" -> Vowels:3, Consonants:7, Spaces:2, Digits:3 */

Ready to Level Up Your Skills?

Explore 500+ free tutorials across 20+ languages and frameworks.