Tutorials Logic, IN info@tutorialslogic.com
Navigation
Home About Us Contact Us Blogs FAQs
Tutorials
All Tutorials
Services
Academic Projects Resume Writing Website Development
Practice
Quiz Challenge Interview Questions Certification Practice
Tools
Online Compiler JSON Formatter Regex Tester CSS Unit Converter Color Picker
Compiler Tools

C Programs Practice Solutions: Tutorial, Examples, FAQs & Interview Tips

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.