C Programs & Examples
C Programs & Examples
Here’s a curated and efficient set of C programs for all the listed topics. Due to
the large number of problems, I’ll provide them in batches, ensuring optimal
solutions for each. Here you go manishawww 🕺
Basic Programs
Hello World
#include <stdio.h>
int main() {
printf("Hello, World!\n");
return 0;
}
Switch Case
#include <stdio.h>
int main() {
int choice;
printf("Enter a number (1-3): ");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("You chose One.\n");
break;
case 2:
printf("You chose Two.\n");
break;
case 3:
printf("You chose Three.\n");
break;
default:
printf("Invalid choice.\n");
}
return 0;
}
int a, b, c;
void findLargestSmallest() {
int largest = (a > b) ? (a > c ? a : c) : (b > c ? b : c);
int smallest = (a < b) ? (a < c ? a : c) : (b < c ? b : c);
printf("Largest: %d, Smallest: %d\n", largest, smallest);
}
int main() {
printf("Enter three numbers: ");
scanf("%d %d %d", &a, &b, &c);
findLargestSmallest();
return 0;
}
Loops
Palindrome Program
#include <stdio.h>
int main() {
int num, reversed = 0, remainder, original;
printf("Enter an integer: ");
scanf("%d", &num);
original = num;
while (num != 0) {
remainder = num % 10;
reversed = reversed * 10 + remainder;
num /= 10;
}
if (original == reversed)
printf("Palindrome\n");
else
printf("Not a Palindrome\n");
return 0;
}
Number Crunching
Armstrong Number
#include <stdio.h>
#include <math.h>
int main() {
int num, original, remainder, result = 0, n = 0;
printf("Enter an integer: ");
scanf("%d", &num);
original = num;
while (original != 0) {
original /= 10;
n++;
}
original = num;
while (original != 0) {
remainder = original % 10;
result += pow(remainder, n);
original /= 10;
}
if (result == num)
printf("%d is an Armstrong number.\n", num);
else
printf("%d is not an Armstrong number.\n", num);
return 0;
}
Concept of Arrays
Reverse an Array
#include <stdio.h>
int main() {
int n;
printf("Enter the size of the array: ");
scanf("%d", &n);
int arr[n];
printf("Enter %d elements: ", n);
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
printf("Reversed array: ");
for (int i = n - 1; i >= 0; i--) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
Sparse Matrix
#include <stdio.h>
int main() {
int m, n, count = 0;
printf("Enter the number of rows and columns: ");
scanf("%d %d", &m, &n);
int matrix[m][n];
printf("Enter the elements of the matrix:\n");
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
scanf("%d", &matrix[i][j]);
if (matrix[i][j] == 0)
count++;
}
}
if (count > (m * n) / 2)
printf("The matrix is a sparse matrix.\n");
else
printf("The matrix is not a sparse matrix.\n");
return 0;
}
Square Matrix
#include <stdio.h>
int main() {
int n;
printf("Enter the size of the square matrix: ");
scanf("%d", &n);
int matrix[n][n];
printf("Enter the elements of the matrix:\n");
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
scanf("%d", &matrix[i][j]);
}
}
printf("The square matrix is:\n");
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
return 0;
}
Concept of Matrices
printf("Matrix addition:\n");
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
sum[i][j] = mat1[i][j] + mat2[i][j];
printf("%d ", sum[i][j]);
}
printf("\n");
}
printf("Matrix subtraction:\n");
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
diff[i][j] = mat1[i][j] - mat2[i][j];
printf("%d ", diff[i][j]);
}
printf("\n");
}
return 0;
}
Matrix Multiplication
#include <stdio.h>
int main() {
int m1, n1, m2, n2;
printf("Enter rows and columns for first matrix: ");
scanf("%d %d", &m1, &n1);
printf("Enter rows and columns for second matrix: ");
scanf("%d %d", &m2, &n2);
if (n1 != m2) {
printf("Matrix multiplication not possible.\n");
return 0;
}
printf("Product of matrices:\n");
for (int i = 0; i < m1; i++) {
for (int j = 0; j < n2; j++) {
printf("%d ", product[i][j]);
}
printf("\n");
}
return 0;
}
return 0;
}
Pointers
Simple Program
#include <stdio.h>
int main() {
int x = 10;
int *ptr = &x;
return 0;
}
free(arr);
return 0;
}
Array of Pointers
#include <stdio.h>
int main() {
const char *arr[] = {"Hello", "World", "Pointers"};
int n = sizeof(arr) / sizeof(arr[0]);
return 0;
}
return 0;
}
Pointer Comparison
#include <stdio.h>
int main() {
int x = 10, y = 20;
int *ptr1 = &x, *ptr2 = &y;
return 0;
}
Pointer to a Pointer
#include <stdio.h>
int main() {
int x = 10;
int *ptr = &x;
int **pptr = &ptr;
return 0;
}
int main() {
char str1[100] = "Hello, ";
char str2[] = "World!";
concatenate(str1, str2);
printf("Concatenated String: %s\n", str1);
return 0;
}
int main() {
char str[100];
printf("Enter a string: ");
scanf("%s", str);
reverseString(str);
printf("Reversed String: %s\n", str);
return 0;
}
int main() {
int x = 5, y = 10;
printf("Before swap: x = %d, y = %d\n", x, y);
swap(&x, &y);
printf("After swap: x = %d, y = %d\n", x, y);
return 0;
}
Pointer to a Function
#include <stdio.h>
int add(int a, int b) {
return a + b;
}
int main() {
int (*funcPtr)(int, int) = add;
int result = funcPtr(10, 20);
printf("Sum: %d\n", result);
return 0;
}
Null Pointer
#include <stdio.h>
int main() {
int *ptr = NULL;
if (ptr == NULL) {
printf("Pointer is NULL.\n");
} else {
printf("Pointer is not NULL.\n");
}
return 0;
}
Concept of Recursion
int main() {
int num1 = 5, num2 = 10;
printf("Sum of %d and %d is %d\n", num1, num2, add(num1, num2));
return 0;
}
Factorial
#include <stdio.h>
int factorial(int n) {
if (n == 0 || n == 1)
return 1;
return n * factorial(n - 1);
}
int main() {
int num;
printf("Enter a number: ");
scanf("%d", &num);
printf("Factorial of %d is %d\n", num, factorial(num));
return 0;
}
Fibonacci Series
#include <stdio.h>
int fibonacci(int n) {
if (n <= 1)
return n;
return fibonacci(n - 1) + fibonacci(n - 2);
}
int main() {
int terms;
printf("Enter the number of terms: ");
scanf("%d", &terms);
printf("Fibonacci Series: ");
for (int i = 0; i < terms; i++) {
printf("%d ", fibonacci(i));
}
printf("\n");
return 0;
}
int main() {
int num;
printf("Enter a number: ");
scanf("%d", &num);
printf("Sum of first %d numbers is %d\n", num, sumOfN(num));
return 0;
}
Sum of Digits
#include <stdio.h>
int sumOfDigits(int n) {
if (n == 0)
return 0;
return (n % 10) + sumOfDigits(n / 10);
}
int main() {
int num;
printf("Enter a number: ");
scanf("%d", &num);
printf("Sum of digits of %d is %d\n", num, sumOfDigits(num));
return 0;
}
Palindrome
#include <stdio.h>
#include <string.h>
int isPalindrome(char str[], int start, int end) {
if (start >= end)
return 1;
if (str[start] != str[end])
return 0;
return isPalindrome(str, start + 1, end - 1);
}
int main() {
char str[100];
printf("Enter a string: ");
scanf("%s", str);
if (isPalindrome(str, 0, strlen(str) - 1))
printf("The string is a palindrome.\n");
else
printf("The string is not a palindrome.\n");
return 0;
}
Power of N
#include <stdio.h>
int power(int base, int exp) {
if (exp == 0)
return 1;
return base * power(base, exp - 1);
}
int main() {
int base, exp;
printf("Enter the base: ");
scanf("%d", &base);
printf("Enter the exponent: ");
scanf("%d", &exp);
printf("%d^%d = %d\n", base, exp, power(base, exp));
return 0;
}
int main() {
int n;
printf("Enter the number of elements: ");
scanf("%d", &n);
int arr[n];
printf("Enter the elements: ");
for (int i = 0; i < n; i++)
scanf("%d", &arr[i]);
int main() {
int num;
printf("Enter a number: ");
scanf("%d", &num);
if (isPrime(num, 2))
printf("%d is a prime number.\n", num);
else
printf("%d is a composite number.\n", num);
return 0;
}
int main() {
int num1, num2;
printf("Enter two numbers: ");
scanf("%d %d", &num1, &num2);
int lcm = findLCM(num1, num2, (num1 > num2) ? num1 : num2);
printf("LCM of %d and %d is: %d\n", num1, num2, lcm);
return 0;
}
int main() {
int num1, num2;
printf("Enter two numbers: ");
scanf("%d %d", &num1, &num2);
printf("GCD of %d and %d is: %d\n", num1, num2, findGCD(num1,
num2));
return 0;
}
Reverse a String
#include <stdio.h>
#include <string.h>
void reverseString(char str[], int start, int end) {
if (start >= end)
return;
char temp = str[start];
str[start] = str[end];
str[end] = temp;
reverseString(str, start + 1, end - 1);
}
int main() {
char str[100];
printf("Enter a string: ");
scanf("%s", str);
reverseString(str, 0, strlen(str) - 1);
printf("Reversed string: %s\n", str);
return 0;
}
int main() {
struct dirent *de; // Pointer for directory entry
DIR *dr = opendir("."); // Open current directory
if (dr == NULL) {
printf("Could not open current directory.\n");
return 1;
}
closedir(dr);
return 0;
}
Size of File
#include <stdio.h>
int main() {
FILE *file;
char filename[100];
long size;
fseek(file, 0, SEEK_END);
size = ftell(file);
fclose(file);
Write in File
#include <stdio.h>
int main() {
FILE *file;
char filename[100];
char text[1000];
int main() {
FILE *file;
char filename[100];
long size;
char ch;
fseek(file, 0, SEEK_END);
size = ftell(file);
fclose(file);
return 0;
}
int main() {
FILE *source, *destination;
char sourceFile[100], destFile[100];
char ch;
fclose(source);
fclose(destination);
int main() {
int a, b, sum;
int *p1, *p2;
p1 = &a;
p2 = &b;
int main() {
float radius, area, circumference;
return 0;
}
Area of Triangle
#include <stdio.h>
int main() {
float base, height, area;
return 0;
}
int main() {
float num1, num2;
char operator;
switch (operator) {
case '+':
printf("Result: %.2f\n", num1 + num2);
break;
case '-':
printf("Result: %.2f\n", num1 - num2);
break;
case '*':
printf("Result: %.2f\n", num1 * num2);
break;
case '/':
if (num2 != 0) {
printf("Result: %.2f\n", num1 / num2);
} else {
printf("Error! Division by zero.\n");
}
break;
default:
printf("Invalid operator.\n");
}
return 0;
}
int main() {
int num, choice;
switch (choice) {
case 1:
printf("Binary: ");
for (int i = 31; i >= 0; i--) {
printf("%d", (num >> i) & 1);
}
printf("\n");
break;
case 2:
printf("Hexadecimal: %X\n", num);
break;
case 3:
printf("Octal: %o\n", num);
break;
default:
printf("Invalid choice.\n");
break;
}
return 0;
}
Celsius to Fahrenheit
#include <stdio.h>
int main() {
float celsius, fahrenheit;
return 0;
}
Simple Interest
#include <stdio.h>
int main() {
float principal, rate, time, interest;
return 0;
}
int main() {
int a, b;
int main() {
float a, b, c, discriminant, root1, root2;
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 = %.2f\n", root1);
printf("Root 2 = %.2f\n", root2);
} else if (discriminant == 0) {
root1 = -b / (2 * a);
printf("Roots are real and the same.\n");
printf("Root = %.2f\n", root1);
} else {
printf("No real roots.\n");
}
return 0;
}
int main() {
int num;
printf("Enter a number: ");
scanf("%d", &num);
if (sqrt(num) == (int)sqrt(num)) {
printf("%d is a perfect square.\n", num);
} else {
printf("%d is not a perfect square.\n", num);
}
return 0;
}
int factorial(int n) {
int fact = 1;
for (int i = 1; i <= n; i++) {
fact *= i;
}
return fact;
}
int main() {
int n, r, nPr, nCr;
return 0;
}
Windows Shutdown
#include <stdio.h>
#include <stdlib.h>
int main() {
system("shutdown /s /t 0"); // Command for Windows shutdown
return 0;
}
void _start() {
printf("This program does not have a main function.\n");
return;
}
(Note: This approach works in some compilers but is not recommended for
standard practice.)
int main() {
int choice;
do {
printf("Menu:\n");
printf("1. Print Hello World\n");
printf("2. Add Two Numbers\n");
printf("3. Exit\n");
printf("Enter your choice: ");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("Hello, World!\n");
break;
case 2:
{
float num1, num2;
printf("Enter two numbers: ");
scanf("%f %f", &num1, &num2);
printf("Sum: %.2f\n", num1 + num2);
}
break;
case 3:
printf("Exiting program.\n");
break;
default:
printf("Invalid choice. Please try again.\n");
}
} while (choice != 3);
return 0;
}
int main() {
printf("\033[1;31mThis text has a red foreground.\033[0m\n"); //
Red text
printf("\033[1;44mThis text has a blue background.\033[0m\n"); //
Blue background
return 0;
}
int main() {
time_t t;
struct tm *tm_info;
time(&t);
tm_info = localtime(&t);
return 0;
}