Complete C Programs for All Practical Exercises
// ==================== PRACTICAL 1 FUNCTIONS ====================
void practical1() {
int choice;
printf("\n--- Practical 1 - Basic Programs ---\n");
printf("1. Print name and address\n");
printf("2. Arithmetic operations\n");
printf("3. Area and circumference of circle\n");
printf("4. Swap two numbers\n");
printf("5. Fahrenheit to Celsius conversion\n");
printf("6. Pay slip calculation\n");
printf("0. Back to main menu\n");
printf("Enter your choice: ");
scanf("%d", &choice);
switch(choice) {
case 0: return;
case 1: {
// Program to print name and address
printf("Name: John Doe\n");
printf("Address: 123 Main Street, City, State, 12345\n");
break;
case 2: {
// Program for arithmetic operations
float num1, num2;
printf("Enter two numbers: ");
scanf("%f %f", &num1, &num2);
printf("Addition: %.2f\n", num1 + num2);
printf("Subtraction: %.2f\n", num1 - num2);
printf("Multiplication: %.2f\n", num1 * num2);
if(num2 != 0) {
printf("Division: %.2f\n", num1 / num2);
printf("Modulo: %d\n", (int)num1 % (int)num2);
} else {
printf("Division by zero is not allowed.\n");
break;
case 3: {
// Program for area and circumference of circle
float radius;
printf("Enter the radius of the circle: ");
scanf("%f", &radius);
printf("Area: %.2f\n", 3.14159 * radius * radius);
printf("Circumference: %.2f\n", 2 * 3.14159 * radius);
break;
case 4: {
// Program to swap two numbers
int a, b;
printf("Enter two numbers: ");
scanf("%d %d", &a, &b);
printf("Before swap: a = %d, b = %d\n", a, b);
// With extra variable
int temp = a;
a = b;
b = temp;
printf("After swap with extra variable: a = %d, b = %d\n", a, b);
// Without extra variable
a = a + b;
b = a - b;
a = a - b;
printf("After swap without extra variable: a = %d, b = %d\n", a, b);
break;
case 5: {
// Program to convert Celsius to Fahrenheit
float celsius;
printf("Enter temperature in Celsius: ");
scanf("%f", &celsius);
float fahrenheit = 1.8 * celsius + 32;
printf("Temperature in Fahrenheit: %.2f\n", fahrenheit);
break;
case 6: {
// Program for pay slip calculation
float basic;
printf("Enter basic salary: ");
scanf("%f", &basic);
float da = 0.10 * basic;
float hra = 0.075 * basic;
float ma = 300;
float pf = 0.125 * basic;
float gross = basic + da + hra + ma;
float net = gross - pf;
printf("\nPay Slip:\n");
printf("Basic: %.2f\n", basic);
printf("DA: %.2f\n", da);
printf("HRA: %.2f\n", hra);
printf("MA: %.2f\n", ma);
printf("PF: %.2f\n", pf);
printf("Gross: %.2f\n", gross);
printf("Net: %.2f\n", net);
break;
default:
printf("Invalid choice!\n");
// ==================== PRACTICAL 2 FUNCTIONS ====================
void practical2() {
int choice;
printf("\n--- Practical 2 - Conditional Programs ---\n");
printf("1. Check even or odd\n");
printf("2. Find maximum of three numbers\n");
printf("3. Check character type\n");
printf("4. Menu-based calculator\n");
printf("5. Grade calculation\n");
printf("0. Back to main menu\n");
printf("Enter your choice: ");
scanf("%d", &choice);
switch(choice) {
case 0: return;
case 1: {
// Check even or odd
int num;
printf("Enter a number: ");
scanf("%d", &num);
if(num % 2 == 0)
printf("%d is even.\n", num);
else
printf("%d is odd.\n", num);
break;
case 2: {
// Find maximum of three numbers
int a, b, c;
printf("Enter three numbers: ");
scanf("%d %d %d", &a, &b, &c);
if(a >= b && a >= c)
printf("%d is the maximum.\n", a);
else if(b >= a && b >= c)
printf("%d is the maximum.\n", b);
else
printf("%d is the maximum.\n", c);
break;
case 3: {
// Check character type
char ch;
printf("Enter a character: ");
scanf(" %c", &ch);
if(ch >= 'A' && ch <= 'Z')
printf("%c is a capital letter.\n", ch);
else if(ch >= 'a' && ch <= 'z')
printf("%c is a small letter.\n", ch);
else if(ch >= '0' && ch <= '9')
printf("%c is a digit.\n", ch);
else
printf("%c is a special character.\n", ch);
break;
case 4: {
// Menu-based calculator
int op;
float num1, num2;
printf("Menu:\n");
printf("1. Addition\n");
printf("2. Subtraction\n");
printf("3. Multiplication\n");
printf("4. Division\n");
printf("Enter your choice: ");
scanf("%d", &op);
printf("Enter two numbers: ");
scanf("%f %f", &num1, &num2);
switch(op) {
case 1: printf("Result: %.2f\n", num1 + num2); break;
case 2: printf("Result: %.2f\n", num1 - num2); break;
case 3: printf("Result: %.2f\n", num1 * num2); break;
case 4:
if(num2 != 0)
printf("Result: %.2f\n", num1 / num2);
else
printf("Division by zero is not allowed.\n");
break;
default: printf("Invalid choice!\n");
break;
case 5: {
// Grade calculation
int marks;
printf("Enter marks: ");
scanf("%d", &marks);
// Using if-else ladder
printf("Using if-else ladder: ");
if(marks >= 80 && marks <= 100)
printf("Distinction\n");
else if(marks >= 60 && marks <= 79)
printf("First Class\n");
else if(marks >= 40 && marks <= 59)
printf("Second Class\n");
else if(marks < 40)
printf("Fail\n");
else
printf("Invalid marks\n");
// Using switch case
printf("Using switch case: ");
switch(marks/10) {
case 10:
case 9:
case 8: printf("Distinction\n"); break;
case 7:
case 6: printf("First Class\n"); break;
case 5:
case 4: printf("Second Class\n"); break;
case 3:
case 2:
case 1:
case 0: printf("Fail\n"); break;
default: printf("Invalid marks\n");
break;
default:
printf("Invalid choice!\n");
// ==================== PRACTICAL 3 FUNCTIONS ====================
void practical3() {
int choice;
printf("\n--- Practical 3 - Loop Programs ---\n");
printf("1. Check first and last digit\n");
printf("2. Factorial of a number\n");
printf("3. Reverse a number\n");
printf("4. Fibonacci series\n");
printf("5. Check prime number\n");
printf("6. Sum of squares series\n");
printf("7. Sum of reciprocal factorials\n");
printf("0. Back to main menu\n");
printf("Enter your choice: ");
scanf("%d", &choice);
switch(choice) {
case 0: return;
case 1: {
// Check first and last digit
int num, first, last;
printf("Enter a number: ");
scanf("%d", &num);
last = num % 10;
while(num >= 10) {
num /= 10;
first = num;
printf("First digit: %d is %s\n", first, (first % 2 == 0) ? "even" : "odd");
printf("Last digit: %d is %s\n", last, (last % 2 == 0) ? "even" : "odd");
break;
case 2: {
// Factorial of a number
int n;
printf("Enter a number: ");
scanf("%d", &n);
long fact = 1;
for(int i = 1; i <= n; i++) {
fact *= i;
printf("Factorial of %d is %ld\n", n, fact);
break;
case 3: {
// Reverse a number
int num, reversed = 0;
printf("Enter a number: ");
scanf("%d", &num);
int original = num;
while(num != 0) {
int digit = num % 10;
reversed = reversed * 10 + digit;
num /= 10;
printf("Reverse of %d is %d\n", original, reversed);
break;
case 4: {
// Fibonacci series
int n, t1 = 0, t2 = 1, nextTerm;
printf("Enter the number of terms: ");
scanf("%d", &n);
printf("Fibonacci Series: ");
for(int i = 1; i <= n; i++) {
printf("%d ", t1);
nextTerm = t1 + t2;
t1 = t2;
t2 = nextTerm;
printf("\n");
break;
case 5: {
// Check prime number
int n;
printf("Enter a number: ");
scanf("%d", &n);
if(check_prime(n))
printf("%d is a prime number.\n", n);
else
printf("%d is not a prime number.\n", n);
break;
}
case 6: {
// Sum of squares series
int n;
long sum = 0;
printf("Enter the value of n: ");
scanf("%d", &n);
for(int i = 1; i <= n; i++) {
sum += i * i;
printf("Sum of squares series: %ld\n", sum);
break;
case 7: {
// Sum of reciprocal factorials
int n;
double sum = 0.0;
printf("Enter the value of n: ");
scanf("%d", &n);
for(int i = 1; i <= n; i++) {
sum += 1.0 / factorial(i);
printf("Sum of reciprocal factorials: %.6f\n", sum);
break;
default:
printf("Invalid choice!\n");
// ==================== PRACTICAL 4 FUNCTIONS ====================
void practical4() {
int choice;
printf("\n--- Practical 4 - Pattern Programs ---\n");
printf("1. Pattern 1\n");
printf("2. Pattern 2\n");
printf("3. Pattern 3\n");
printf("4. Pattern 4\n");
printf("5. Pattern 5\n");
printf("6. Pattern 6\n");
printf("7. Pattern 7\n");
printf("8. Pattern 8\n");
printf("9. Pattern 9\n");
printf("10. Pattern 10\n");
printf("11. Pattern 11\n");
printf("12. Pattern 12\n");
printf("0. Back to main menu\n");
printf("Enter your choice: ");
scanf("%d", &choice);
int rows, i, j;
switch(choice) {
case 0: return;
case 1: {
// Pattern 1
printf("Enter number of rows: ");
scanf("%d", &rows);
for(i = 1; i <= rows; i++) {
for(j = 1; j <= i; j++) {
printf("*");
printf("\n");
break;
case 2: {
// Pattern 2
printf("Enter number of rows: ");
scanf("%d", &rows);
for(i = 1; i <= rows; i++) {
for(j = 1; j <= i; j++) {
printf("%d", j);
printf("\n");
break;
case 3: {
// Pattern 3
printf("Enter number of rows: ");
scanf("%d", &rows);
for(i = 1; i <= rows; i++) {
for(j = 1; j <= i; j++) {
printf("%d", i);
printf("\n");
break;
case 4: {
// Pattern 4
printf("Enter number of rows: ");
scanf("%d", &rows);
for(i = 1; i <= rows; i++) {
for(j = 1; j <= i; j++) {
printf("%c", 'A' + j - 1);
printf("\n");
break;
case 5: {
// Pattern 5
printf("Enter number of rows: ");
scanf("%d", &rows);
int num = 1;
for(i = 1; i <= rows; i++) {
for(j = 1; j <= i; j++) {
printf("%d ", num++);
printf("\n");
break;
case 6: {
// Pattern 6 (same as Pattern 1)
printf("Enter number of rows: ");
scanf("%d", &rows);
for(i = 1; i <= rows; i++) {
for(j = 1; j <= i; j++) {
printf("*");
printf("\n");
break;
case 7: {
// Pattern 7 (same as Pattern 3)
printf("Enter number of rows: ");
scanf("%d", &rows);
for(i = 1; i <= rows; i++) {
for(j = 1; j <= i; j++) {
printf("%d", i);
printf("\n");
break;
case 8: {
// Pattern 8
printf("Enter number of rows: ");
scanf("%d", &rows);
for(i = rows; i >= 1; i--) {
for(j = 1; j <= i; j++) {
printf("*");
printf("\n");
break;
case 9: {
// Pattern 9
printf("Enter number of rows: ");
scanf("%d", &rows);
for(i = rows; i >= 1; i--) {
for(j = 1; j <= i; j++) {
printf("%d", j);
printf("\n");
break;
case 10: {
// Pattern 10
printf("Enter number of rows: ");
scanf("%d", &rows);
for(i = rows; i >= 1; i--) {
for(j = 1; j <= i; j++) {
printf("%d", i);
printf("\n");
break;
case 11: {
// Pattern 11
printf("Enter number of rows: ");
scanf("%d", &rows);
for(i = 0; i < rows; i++) {
for(j = 0; j < rows - i; j++) {
printf("%c", 'A' + i);
printf("\n");
break;
case 12: {
// Pattern 12
printf("Enter number of rows: ");
scanf("%d", &rows);
for(i = rows; i >= 1; i--) {
for(j = 1; j <= i; j++) {
printf("%c", 'A' + j - 1);
printf("\n");
break;
default:
printf("Invalid choice!\n");
// ==================== PRACTICAL 5 FUNCTIONS ====================
void practical5() {
int choice;
printf("\n--- Practical 5 - Array & String Programs ---\n");
printf("1. Find max and min from array\n");
printf("2. Sort array in ascending order\n");
printf("3. Count people by height and weight\n");
printf("4. Student marks average and total\n");
printf("5. Matrix addition\n");
printf("6. Find character in string\n");
printf("7. Copy string without function\n");
printf("8. String handling functions\n");
printf("0. Back to main menu\n");
printf("Enter your choice: ");
scanf("%d", &choice);
switch(choice) {
case 0: return;
case 1: {
// Find max and min from array
int arr[10], i, max, min;
printf("Enter 10 numbers:\n");
for(i = 0; i < 10; i++) {
scanf("%d", &arr[i]);
max = min = arr[0];
for(i = 1; i < 10; i++) {
if(arr[i] > max)
max = arr[i];
if(arr[i] < min)
min = arr[i];
printf("Maximum: %d\n", max);
printf("Minimum: %d\n", min);
break;
case 2: {
// Sort array in ascending order
int arr[10], i, j, temp;
printf("Enter 10 numbers:\n");
for(i = 0; i < 10; i++) {
scanf("%d", &arr[i]);
for(i = 0; i < 9; i++) {
for(j = 0; j < 9 - i; j++) {
if(arr[j] > arr[j+1]) {
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
printf("Sorted array: ");
for(i = 0; i < 10; i++) {
printf("%d ", arr[i]);
printf("\n");
break;
case 3: {
// Count people by height and weight
struct Person {
float height;
float weight;
} people[5];
int count = 0;
printf("Enter height and weight for 5 people:\n");
for(int i = 0; i < 5; i++) {
printf("Person %d: ", i+1);
scanf("%f %f", &people[i].height, &people[i].weight);
if(people[i].height > 170 && people[i].weight < 50)
count++;
printf("Number of people with height > 170 and weight < 50: %d\n", count);
break;
case 4: {
// Student marks average and total
int marks[5][3], i, j;
float total, average;
printf("Enter marks for 5 students in 3 subjects:\n");
for(i = 0; i < 5; i++) {
printf("Student %d: ", i+1);
for(j = 0; j < 3; j++) {
scanf("%d", &marks[i][j]);
printf("\nStudent\tTotal\tAverage\n");
for(i = 0; i < 5; i++) {
total = 0;
for(j = 0; j < 3; j++) {
total += marks[i][j];
average = total / 3;
printf("%d\t%.2f\t%.2f\n", i+1, total, average);
break;
case 5: {
// Matrix addition
int A[3][3], B[3][3], C[3][3], i, j;
printf("Enter elements of matrix A (3x3):\n");
for(i = 0; i < 3; i++) {
for(j = 0; j < 3; j++) {
scanf("%d", &A[i][j]);
printf("Enter elements of matrix B (3x3):\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++) {
C[i][j] = A[i][j] + B[i][j];
printf("Resultant matrix C:\n");
for(i = 0; i < 3; i++) {
for(j = 0; j < 3; j++) {
printf("%d ", C[i][j]);
printf("\n");
break;
}
case 6: {
// Find character in string
char str[100], ch;
int found = 0;
printf("Enter a string: ");
scanf(" %[^\n]s", str);
printf("Enter a character to search: ");
scanf(" %c", &ch);
for(int i = 0; str[i] != '\0'; i++) {
if(str[i] == ch) {
printf("Character '%c' found at position %d\n", ch, i+1);
found = 1;
break;
if(!found)
printf("Character '%c' not found in the string\n", ch);
break;
case 7: {
// Copy string without function
char src[100], dest[100];
int i;
printf("Enter a string: ");
scanf(" %[^\n]s", src);
for(i = 0; src[i] != '\0'; i++) {
dest[i] = src[i];
dest[i] = '\0';
printf("Original string: %s\n", src);
printf("Copied string: %s\n", dest);
break;
case 8: {
// String handling functions
char str1[100], str2[100];
printf("Enter first string: ");
scanf(" %[^\n]s", str1);
printf("Enter second string: ");
scanf(" %[^\n]s", str2);
// strlen
printf("Length of first string: %lu\n", strlen(str1));
// strcpy
char copy[100];
strcpy(copy, str1);
printf("Copy of first string: %s\n", copy);
// strcat
strcat(str1, " ");
strcat(str1, str2);
printf("Concatenated string: %s\n", str1);
// strcmp
int result = strcmp(copy, str2);
if(result == 0)
printf("Strings are equal\n");
else if(result < 0)
printf("First string is less than second string\n");
else
printf("First string is greater than second string\n");
break;
default:
printf("Invalid choice!\n");
// ==================== PRACTICAL 6 FUNCTIONS ====================
void practical6() {
int choice;
printf("\n--- Practical 6 - Function Programs ---\n");
printf("1. Add first n numbers\n");
printf("2. Check prime number\n");
printf("3. Swap values\n");
printf("4. Calculate nCr\n");
printf("5. Factorial using recursion\n");
printf("6. Convert to uppercase\n");
printf("7. Menu-based calculator using functions\n");
printf("0. Back to main menu\n");
printf("Enter your choice: ");
scanf("%d", &choice);
switch(choice) {
case 0: return;
case 1: {
// Add first n numbers
int n;
printf("Enter n: ");
scanf("%d", &n);
int sum = 0;
for(int i = 1; i <= n; i++) {
sum += i;
printf("Sum of first %d numbers: %d\n", n, sum);
break;
case 2: {
// Check prime number
int n;
printf("Enter a number: ");
scanf("%d", &n);
if(check_prime(n))
printf("%d is a prime number.\n", n);
else
printf("%d is not a prime number.\n", n);
break;
case 3: {
// Swap values
int a, b;
printf("Enter two numbers: ");
scanf("%d %d", &a, &b);
printf("Before swap: a = %d, b = %d\n", a, b);
// Call by value
swap_call_by_value(a, b);
printf("After call by value: a = %d, b = %d\n", a, b);
// Call by reference
swap_call_by_reference(&a, &b);
printf("After call by reference: a = %d, b = %d\n", a, b);
break;
case 4: {
// Calculate nCr
int n, r;
printf("Enter n and r: ");
scanf("%d %d", &n, &r);
if(n >= r && n >= 0 && r >= 0)
printf("%dC%d = %ld\n", n, r, nCr(n, r));
else
printf("Invalid input for nCr calculation.\n");
break;
case 5: {
// Factorial using recursion
int n;
printf("Enter a number: ");
scanf("%d", &n);
printf("Factorial of %d is %ld\n", n, factorial_recursive(n));
break;
case 6: {
// Convert to uppercase
char str[100];
printf("Enter a string: ");
scanf(" %[^\n]s", str);
to_uppercase(str);
printf("Uppercase string: %s\n", str);
break;
case 7: {
// Menu-based calculator using functions
int op;
float num1, num2, result;
printf("Menu:\n");
printf("1. Addition\n");
printf("2. Subtraction\n");
printf("3. Multiplication\n");
printf("4. Division\n");
printf("Enter your choice: ");
scanf("%d", &op);
printf("Enter two numbers: ");
scanf("%f %f", &num1, &num2);
switch(op) {
case 1: result = num1 + num2; break;
case 2: result = num1 - num2; break;
case 3: result = num1 * num2; break;
case 4:
if(num2 != 0)
result = num1 / num2;
else {
printf("Division by zero is not allowed.\n");
return;
break;
default:
printf("Invalid choice!\n");
return;
printf("Result: %.2f\n", result);
break;
default:
printf("Invalid choice!\n");
// ==================== PRACTICAL 7 FUNCTIONS ====================
void practical7() {
int choice;
printf("\n--- Practical 7 - Structure Programs ---\n");
printf("1. Personal information\n");
printf("2. Student records\n");
printf("3. Student marks and total\n");
printf("0. Back to main menu\n");
printf("Enter your choice: ");
scanf("%d", &choice);
switch(choice) {
case 0: return;
case 1: {
// Personal information
struct personal {
char name[50];
char doj[20];
float salary;
} people[5];
printf("Enter information for 5 people:\n");
for(int i = 0; i < 5; i++) {
printf("Person %d:\n", i+1);
printf("Name: ");
scanf(" %[^\n]s", people[i].name);
printf("Date of Joining: ");
scanf(" %[^\n]s", people[i].doj);
printf("Salary: ");
scanf("%f", &people[i].salary);
printf("\nPersonal Information:\n");
for(int i = 0; i < 5; i++) {
printf("Person %d: %s, %s, %.2f\n", i+1, people[i].name, people[i].doj, people[i].salary);
break;
case 2: {
// Student records
struct student {
char name[50];
char branch[50];
float total_marks;
} students[10];
printf("Enter information for 10 students:\n");
for(int i = 0; i < 10; i++) {
printf("Student %d:\n", i+1);
printf("Name: ");
scanf(" %[^\n]s", students[i].name);
printf("Branch: ");
scanf(" %[^\n]s", students[i].branch);
printf("Total Marks: ");
scanf("%f", &students[i].total_marks);
printf("\nStudent Records:\n");
for(int i = 0; i < 10; i++) {
printf("Student %d: %s, %s, %.2f\n", i+1, students[i].name, students[i].branch, students[i].total_marks);
break;
case 3: {
// Student marks and total
struct marks {
int rollno;
int subject1;
int subject2;
int subject3;
int total;
} students[3];
printf("Enter marks for 3 students:\n");
for(int i = 0; i < 3; i++) {
printf("Student %d:\n", i+1);
students[i].rollno = i+1;
printf("Subject 1: ");
scanf("%d", &students[i].subject1);
printf("Subject 2: ");
scanf("%d", &students[i].subject2);
printf("Subject 3: ");
scanf("%d", &students[i].subject3);
students[i].total = students[i].subject1 + students[i].subject2 + students[i].subject3;
printf("\nStudent Marks:\n");
printf("Roll No\tSubject1\tSubject2\tSubject3\tTotal\n");
for(int i = 0; i < 3; i++) {
printf("%d\t%d\t\t%d\t\t%d\t\t%d\n",
students[i].rollno,
students[i].subject1,
students[i].subject2,
students[i].subject3,
students[i].total);
break;
default:
printf("Invalid choice!\n");
}
}
// ==================== PRACTICAL 8 FUNCTIONS ====================
void practical8() {
int choice;
printf("\n--- Practical 8 - Pointer & File Programs ---\n");
printf("1. Swap using pointers\n");
printf("2. Copy file\n");
printf("3. Sorting using pointer\n");
printf("4. Separate odd and even numbers in file\n");
printf("0. Back to main menu\n");
printf("Enter your choice: ");
scanf("%d", &choice);
switch(choice) {
case 0: return;
case 1: {
// Swap using pointers
int a, b;
printf("Enter two numbers: ");
scanf("%d %d", &a, &b);
printf("Before swap: a = %d, b = %d\n", a, b);
int *p1 = &a, *p2 = &b, temp;
temp = *p1;
*p1 = *p2;
*p2 = temp;
printf("After swap: a = %d, b = %d\n", a, b);
break;
case 2: {
// Copy file
FILE *source, *target;
char sourceFile[100], targetFile[100], ch;
printf("Enter source file name: ");
scanf("%s", sourceFile);
printf("Enter target file name: ");
scanf("%s", targetFile);
source = fopen(sourceFile, "r");
if(source == NULL) {
printf("Cannot open source file.\n");
return;
target = fopen(targetFile, "w");
if(target == NULL) {
printf("Cannot open target file.\n");
fclose(source);
return;
while((ch = fgetc(source)) != EOF) {
fputc(ch, target);
printf("File copied successfully.\n");
fclose(source);
fclose(target);
break;
case 3: {
// Sorting using pointer
int arr[10], n, i, j, temp;
int *ptr = arr;
printf("Enter number of elements (max 10): ");
scanf("%d", &n);
printf("Enter %d numbers:\n", n);
for(i = 0; i < n; i++) {
scanf("%d", ptr + i);
// Bubble sort using pointers
for(i = 0; i < n-1; i++) {
for(j = 0; j < n-i-1; j++) {
if(*(ptr + j) > *(ptr + j + 1)) {
temp = *(ptr + j);
*(ptr + j) = *(ptr + j + 1);
*(ptr + j + 1) = temp;
printf("Sorted array: ");
for(i = 0; i < n; i++) {
printf("%d ", *(ptr + i));
printf("\n");
break;
case 4: {
// Separate odd and even numbers in file
FILE *source, *oddFile, *evenFile;
int num;
// Create a sample data file
source = fopen("data.txt", "w");
if(source == NULL) {
printf("Cannot create data file.\n");
return;
printf("Enter numbers to store in data file (-1 to stop):\n");
while(1) {
scanf("%d", &num);
if(num == -1) break;
fprintf(source, "%d ", num);
fclose(source);
// Read from data file and separate odd and even
source = fopen("data.txt", "r");
oddFile = fopen("odd.txt", "w");
evenFile = fopen("even.txt", "w");
if(source == NULL || oddFile == NULL || evenFile == NULL) {
printf("Cannot open files.\n");
return;
while(fscanf(source, "%d", &num) != EOF) {
if(num % 2 == 0)
fprintf(evenFile, "%d ", num);
else
fprintf(oddFile, "%d ", num);
fclose(source);
fclose(oddFile);
fclose(evenFile);
// Display contents of all files
printf("\nContents of data file: ");
source = fopen("data.txt", "r");
while(fscanf(source, "%d", &num) != EOF) {
printf("%d ", num);
fclose(source);
printf("\nContents of odd file: ");
oddFile = fopen("odd.txt", "r");
while(fscanf(oddFile, "%d", &num) != EOF) {
printf("%d ", num);
fclose(oddFile);
printf("\nContents of even file: ");
evenFile = fopen("even.txt", "r");
while(fscanf(evenFile, "%d", &num) != EOF) {
printf("%d ", num);
fclose(evenFile);
printf("\n");
break;
default:
printf("Invalid choice!\n");
// ==================== PRACTICAL 9 FUNCTIONS ====================
void practical9() {
int choice;
printf("\n--- Practical 9 - Debugging & Testing ---\n");
printf("1. Find error in program\n");
printf("2. Rewrite code efficiently\n");
printf("3. Test case for hall management\n");
printf("0. Back to main menu\n");
printf("Enter your choice: ");
scanf("%d", &choice);
switch(choice) {
case 0: return;
case 1: {
// Find error in program
printf("Original code with errors:\n");
printf("void main() {\n");
printf(" int i;\n");
printf(" system(\"cls\")\n");
printf(" for(i=1;i>=10;i++) {\n");
printf(" printf(\"/n value of i is:%d\",&i);\n");
printf(" }\n");
printf("}\n\n");
printf("Errors found:\n");
printf("1. Missing semicolon after system(\"cls\")\n");
printf("2. Loop condition is incorrect (i>=10 will be false initially)\n");
printf("3. Incorrect format specifier in printf (should be %%d without &)\n");
printf("4. Use of \\n instead of /n for newline\n\n");
printf("Corrected code:\n");
printf("#include <stdio.h>\n");
printf("#include <stdlib.h>\n");
printf("int main() {\n");
printf(" int i;\n");
printf(" system(\"cls\");\n");
printf(" for(i=1;i<=10;i++) {\n");
printf(" printf(\"\\n value of i is: %d\", i);\n");
printf(" }\n");
printf(" return 0;\n");
printf("}\n");
break;
case 2: {
// Rewrite code efficiently
printf("Original code:\n");
printf("void main() {\n");
printf(" int a=5,b=2;\n");
printf(" a=a+b;\n");
printf(" b=b+1;\n");
printf(" printf(\"a=%d and b=%d\",a,b);\n");
printf("}\n\n");
printf("More efficient version:\n");
printf("#include <stdio.h>\n");
printf("int main() {\n");
printf(" int a=5, b=2;\n");
printf(" a += b; // Compound assignment\n");
printf(" b++; // Increment operator\n");
printf(" printf(\"a=%d and b=%d\", a, b);\n");
printf(" return 0;\n");
printf("}\n");
break;
}
case 3: {
// Test case for hall management
printf("Test cases for listofhall() and allocatehall() functions:\n\n");
printf("Test Case 1: listofhall()\n");
printf("Input: None\n");
printf("Expected Output: List of all available halls with their capacities and facilities\n\n");
printf("Test Case 2: allocatehall() with valid request\n");
printf("Input: Hall number, date, time slot, purpose\n");
printf("Expected Output: Hall allocated successfully, confirmation message\n\n");
printf("Test Case 3: allocatehall() with already booked hall\n");
printf("Input: Hall number that is already booked for the requested time\n");
printf("Expected Output: Error message, suggestion of alternative halls\n\n");
printf("Test Case 4: allocatehall() with invalid hall number\n");
printf("Input: Non-existent hall number\n");
printf("Expected Output: Error message, list of valid hall numbers\n\n");
printf("Test Case 5: allocatehall() with invalid time slot\n");
printf("Input: Time slot outside working hours\n");
printf("Expected Output: Error message, information about valid time slots\n");
break;
default:
printf("Invalid choice!\n");
}
// ==================== HELPER FUNCTIONS ====================
int check_prime(int n) {
if(n <= 1) return 0;
if(n <= 3) return 1;
if(n % 2 == 0 || n % 3 == 0) return 0;
for(int i = 5; i * i <= n; i += 6) {
if(n % i == 0 || n % (i + 2) == 0)
return 0;
return 1;
long factorial(int n) {
long fact = 1;
for(int i = 1; i <= n; i++) {
fact *= i;
return fact;
long nCr(int n, int r) {
return factorial(n) / (factorial(r) * factorial(n - r));
long factorial_recursive(int n) {
if(n == 0 || n == 1)
return 1;
else
return n * factorial_recursive(n - 1);
void to_uppercase(char *str) {
for(int i = 0; str[i] != '\0'; i++) {
if(str[i] >= 'a' && str[i] <= 'z') {
str[i] = str[i] - 'a' + 'A';
void swap_call_by_value(int a, int b) {
int temp = a;
a = b;
b = temp;
// Changes are local to this function
void swap_call_by_reference(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
// Changes affect the original variables
```