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;
}