Estimated read time: ... min
            
            Long Answer Questions (8 Marks Each) (Part 1)
......................
1. Write a C program using structure to ask the information of any 12 students with roll number, name, and marks scored in sub1, sub2, and sub3. Also, display them in a proper format along with the calculation of total and percentage. (Note: The full marks of each subject is 100)
c#include <stdio.h>
struct student {
    int roll_no;
    char name[50];
    int sub1, sub2, sub3;
    int total;
    float percentage;
};
int main() {
    struct student s[12];
    for (int i = 0; i < 12; i++) {
        printf("Enter information for student %d:\n", i + 1);
        printf("Roll No: ");
        scanf("%d", &s[i].roll_no);
        printf("Name: ");
        scanf("%s", s[i].name);
        printf("Marks in Subject 1: ");
        scanf("%d", &s[i].sub1);
        printf("Marks in Subject 2: ");
        scanf("%d", &s[i].sub2);
        printf("Marks in Subject 3: ");
        scanf("%d", &s[i].sub3);
        
        s[i].total = s[i].sub1 + s[i].sub2 + s[i].sub3;
        s[i].percentage = (float)s[i].total / 3;
    }
    printf("\nStudent Information:\n");
    for (int i = 0; i < 12; i++) {
        printf("Roll No: %d | Name: %s | Total: %d | Percentage: %.2f\n", 
                s[i].roll_no, s[i].name, s[i].total, s[i].percentage);
    }
    return 0;
}
2. Demonstrate a program in C to create a data file named score.dat to store students' information with Reg_no, name, gender, and address. The program should ask the user to continue or not. When finished, the program should also display all the records in the proper format.
c#include <stdio.h>
struct student {
    int reg_no;
    char name[50];
    char gender[10];
    char address[100];
};
int main() {
    FILE *fp;
    struct student s;
    char choice;
    fp = fopen("score.dat", "w");
    do {
        printf("Enter registration number: ");
        scanf("%d", &s.reg_no);
        printf("Enter name: ");
        scanf("%s", s.name);
        printf("Enter gender: ");
        scanf("%s", s.gender);
        printf("Enter address: ");
        scanf("%s", s.address);
        fprintf(fp, "%d %s %s %s\n", s.reg_no, s.name, s.gender, s.address);
        printf("Do you want to continue? (y/n): ");
        scanf(" %c", &choice);
    } while (choice == 'y' || choice == 'Y');
    fclose(fp);
    fp = fopen("score.dat", "r");
    printf("\nStudent Records:\n");
    while (fscanf(fp, "%d %s %s %s", &s.reg_no, s.name, s.gender, s.address) != EOF) {
        printf("Reg No: %d | Name: %s | Gender: %s | Address: %s\n", 
                s.reg_no, s.name, s.gender, s.address);
    }
    fclose(fp);
    return 0;
}
3. Write a C program to store the names, roll numbers, and marks of 10 students using a structure and display the records properly.
c#include <stdio.h>
struct student {
    int roll_no;
    char name[50];
    int marks;
};
int main() {
    struct student s[10];
    for (int i = 0; i < 10; i++) {
        printf("Enter information for student %d:\n", i + 1);
        printf("Roll No: ");
        scanf("%d", &s[i].roll_no);
        printf("Name: ");
        scanf("%s", s[i].name);
        printf("Marks: ");
        scanf("%d", &s[i].marks);
    }
    printf("\nStudent Records:\n");
    for (int i = 0; i < 10; i++) {
        printf("Roll No: %d | Name: %s | Marks: %d\n", s[i].roll_no, s[i].name, s[i].marks);
    }
    return 0;
}
4. Explain the three modes of file opening in C. Write a program to read names and roll numbers from a file named exam.dat and display them.
- Modes of file opening:
r: Read mode, opens a file for reading. The file must exist.w: Write mode, creates a new file or overwrites an existing file.a: Append mode, opens a file for writing, appending data to the end.
 
c#include <stdio.h>
int main() {
    FILE *fp;
    char name[50];
    int roll_no;
    fp = fopen("exam.dat", "r");
    if (fp == NULL) {
        printf("File not found.\n");
        return 1;
    }
    printf("Reading from exam.dat:\n");
    while (fscanf(fp, "%s %d", name, &roll_no) != EOF) {
        printf("Name: %s | Roll No: %d\n", name, roll_no);
    }
    fclose(fp);
    return 0;
}
5. Write a C program to store employee details (ID, name, and salary) in a file named emp.txt and display each record on the screen in an appropriate format.
c#include <stdio.h>
struct employee {
    int id;
    char name[50];
    float salary;
};
int main() {
    FILE *fp;
    struct employee e;
    fp = fopen("emp.txt", "w");
    printf("Enter employee details:\n");
    for (int i = 0; i < 3; i++) {
        printf("Enter ID: ");
        scanf("%d", &e.id);
        printf("Enter Name: ");
        scanf("%s", e.name);
        printf("Enter Salary: ");
        scanf("%f", &e.salary);
        fprintf(fp, "%d %s %.2f\n", e.id, e.name, e.salary);
    }
    fclose(fp);
    fp = fopen("emp.txt", "r");
    printf("\nEmployee Records:\n");
    while (fscanf(fp, "%d %s %f", &e.id, e.name, &e.salary) != EOF) {
        printf("ID: %d | Name: %s | Salary: %.2f\n", e.id, e.name, e.salary);
    }
    fclose(fp);
    return 0;
}
6. Describe file handling concepts in C. Write a C program to enter names and addresses of students and store them in a file named student.dat.
- File Handling Concepts:
- Opening a file using modes (
r,w,a). - Reading and writing data using functions like 
fscanf,fprintf,fread, andfwrite. - Closing the file with 
fclose. 
 - Opening a file using modes (
 
c#include <stdio.h>
struct student {
    char name[50];
    char address[100];
};
int main() {
    FILE *fp;
    struct student s;
    fp = fopen("student.dat", "w");
    printf("Enter student details:\n");
    for (int i = 0; i < 3; i++) {
        printf("Enter Name: ");
        scanf("%s", s.name);
        printf("Enter Address: ");
        scanf("%s", s.address);
        fprintf(fp, "%s %s\n", s.name, s.address);
    }
    fclose(fp);
    fp = fopen("student.dat", "r");
    printf("\nStudent Records:\n");
    while (fscanf(fp, "%s %s", s.name, s.address) != EOF) {
        printf("Name: %s | Address: %s\n", s.name, s.address);
    }
    fclose(fp);
    return 0;
}
7. Define function in C. Write a program to generate the factorial of a given number using a recursive function.
c#include <stdio.h>
int factorial(int n) {
    if (n == 0)
        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;
}
8. Write a C program to enter an array of integers, sort them in ascending order, and display the sorted list.
c#include <stdio.h>
int main() {
    int n;
    printf("Enter the number of elements: ");
    scanf("%d", &n);
    int arr[n];
    printf("Enter the elements:\n");
    for (int i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
    }
    // Sorting the array
    for (int i = 0; i < n - 1; i++) {
        for (int j = i + 1; j < n; j++) {
            if (arr[i] > arr[j]) {
                int temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }
    }
    printf("Sorted Array:\n");
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
    return 0;
}
9. Explain the concept of pointers in C. Write a program to input the radius of a football and find the area using a user-defined function.
- Pointers in C:
- A pointer is a variable that stores the address of another variable. Pointers are used for dynamic memory allocation and function argument passing by reference.
 
 
c#include <stdio.h>
#define PI 3.14
void calculate_area(float *r) {
    float area = PI * (*r) * (*r);
    printf("Area of football with radius %.2f is: %.2f\n", *r, area);
}
int main() {
    float radius;
    printf("Enter the radius of the football: ");
    scanf("%f", &radius);
    calculate_area(&radius);
    return 0;
}
10. Define structure in C. Write a program using structure to input staff ID, name, and salary of 50 staff members. Display the staff ID, name, and salary of those whose salary ranges from 25,000 to 40,000.
c#include <stdio.h>
struct staff {
    int id;
    char name[50];
    float salary;
};
int main() {
    struct staff s[50];
    printf("Enter details of 50 staff members:\n");
    for (int i = 0; i < 50; i++) {
        printf("Staff %d - ID: ", i + 1);
        scanf("%d", &s[i].id);
        printf("Name: ");
        scanf("%s", s[i].name);
        printf("Salary: ");
        scanf("%f", &s[i].salary);
    }
    printf("\nStaff members with salary between 25,000 and 40,000:\n");
    for (int i = 0; i < 50; i++) {
        if (s[i].salary >= 25000 && s[i].salary <= 40000) {
            printf("ID: %d | Name: %s | Salary: %.2f\n", s[i].id, s[i].name, s[i].salary);
        }
    }
    return 0;
}11. Write a C program to input student marks for 5 subjects, calculate the total and average marks, and display the results using structures.
c#include <stdio.h>
struct Student {
    char name[50];
    int marks[5];
    int total;
    float average;
};
int main() {
    struct Student student;
    
    printf("Enter student name: ");
    fgets(student.name, sizeof(student.name), stdin);
    
    student.total = 0;
    for (int i = 0; i < 5; i++) {
        printf("Enter marks for subject %d: ", i + 1);
        scanf("%d", &student.marks[i]);
        student.total += student.marks[i];
    }
    
    student.average = student.total / 5.0;
    printf("\nStudent Name: %s", student.name);
    printf("Total Marks: %d\n", student.total);
    printf("Average Marks: %.2f\n", student.average);
    
    return 0;
}
12. Write a C program to enter 10 integer numbers into an array, sort them in descending order, and display the result.
c#include <stdio.h>
int main() {
    int arr[10], temp;
    
    printf("Enter 10 integers:\n");
    for (int i = 0; i < 10; i++) {
        scanf("%d", &arr[i]);
    }
    for (int i = 0; i < 10 - 1; i++) {
        for (int j = i + 1; j < 10; j++) {
            if (arr[i] < arr[j]) {
                temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }
    }
    printf("Sorted array in descending order:\n");
    for (int i = 0; i < 10; i++) {
        printf("%d ", arr[i]);
    }
    return 0;
}
13. Write a C program to enter the name, age, and salary of an employee and store it in a file named employee.dat. Display the stored records properly.
c#include <stdio.h>
struct Employee {
    char name[50];
    int age;
    float salary;
};
int main() {
    struct Employee emp;
    FILE *file;
    file = fopen("employee.dat", "w");
    if (file == NULL) {
        printf("Error opening file.\n");
        return 1;
    }
    printf("Enter employee name: ");
    fgets(emp.name, sizeof(emp.name), stdin);
    printf("Enter employee age: ");
    scanf("%d", &emp.age);
    printf("Enter employee salary: ");
    scanf("%f", &emp.salary);
    fwrite(&emp, sizeof(struct Employee), 1, file);
    fclose(file);
    file = fopen("employee.dat", "r");
    if (file == NULL) {
        printf("Error opening file.\n");
        return 1;
    }
    printf("\nStored Record:\n");
    fread(&emp, sizeof(struct Employee), 1, file);
    printf("Name: %s", emp.name);
    printf("Age: %d\n", emp.age);
    printf("Salary: %.2f\n", emp.salary);
    fclose(file);
    return 0;
}
14. Explain the importance of file handling in C. Write a program to enter employee names and salaries and write them to a file named employee.txt.
File handling is important in C for managing data persistence, which allows programs to save data between runs. File handling enables operations like reading, writing, appending, and modifying files.
c#include <stdio.h>
struct Employee {
    char name[50];
    float salary;
};
int main() {
    struct Employee emp;
    FILE *file;
    
    file = fopen("employee.txt", "w");
    if (file == NULL) {
        printf("Error opening file.\n");
        return 1;
    }
    printf("Enter employee name: ");
    fgets(emp.name, sizeof(emp.name), stdin);
    printf("Enter employee salary: ");
    scanf("%f", &emp.salary);
    fwrite(&emp, sizeof(struct Employee), 1, file);
    fclose(file);
    printf("Employee record saved.\n");
    return 0;
}
15. Write a C program to store the student roll number, name, and marks in a file and retrieve the stored information.
c#include <stdio.h>
struct Student {
    int roll_no;
    char name[50];
    int marks;
};
int main() {
    struct Student student;
    FILE *file;
    file = fopen("student.dat", "w");
    if (file == NULL) {
        printf("Error opening file.\n");
        return 1;
    }
    printf("Enter student roll number: ");
    scanf("%d", &student.roll_no);
    printf("Enter student name: ");
    getchar();  // To consume newline character left by previous scanf
    fgets(student.name, sizeof(student.name), stdin);
    printf("Enter student marks: ");
    scanf("%d", &student.marks);
    fwrite(&student, sizeof(struct Student), 1, file);
    fclose(file);
    file = fopen("student.dat", "r");
    if (file == NULL) {
        printf("Error opening file.\n");
        return 1;
    }
    printf("\nStored Record:\n");
    fread(&student, sizeof(struct Student), 1, file);
    printf("Roll Number: %d\n", student.roll_no);
    printf("Name: %s", student.name);
    printf("Marks: %d\n", student.marks);
    fclose(file);
    return 0;
}
16. Describe the advantages of pointers in C. Write a C program to demonstrate the relationship between arrays and pointers.
Advantages of pointers:
- Efficient memory access.
 - Ability to pass large data structures by reference.
 - Dynamic memory allocation.
 
c#include <stdio.h>
int main() {
    int arr[] = {10, 20, 30, 40, 50};
    int *ptr = arr;
    printf("Array elements using pointers:\n");
    for (int i = 0; i < 5; i++) {
        printf("%d ", *(ptr + i));
    }
    return 0;
}
17. Write a program in C to find the sum of n integers using a function.
c#include <stdio.h>
int sum(int n) {
    int sum = 0, num;
    for (int i = 0; i < n; i++) {
        printf("Enter number %d: ", i + 1);
        scanf("%d", &num);
        sum += num;
    }
    return sum;
}
int main() {
    int n;
    printf("Enter the number of integers: ");
    scanf("%d", &n);
    int result = sum(n);
    printf("Sum of the numbers: %d\n", result);
    return 0;
}
18. Write a program in C to input employee ID, name, address, and post for 20 employees and display them properly using structures.
c#include <stdio.h>
struct Employee {
    int id;
    char name[50];
    char address[100];
    char post[50];
};
int main() {
    struct Employee emp[20];
    
    for (int i = 0; i < 20; i++) {
        printf("Enter details for employee %d:\n", i + 1);
        printf("ID: ");
        scanf("%d", &emp[i].id);
        printf("Name: ");
        getchar();  // To consume newline character left by previous scanf
        fgets(emp[i].name, sizeof(emp[i].name), stdin);
        printf("Address: ");
        fgets(emp[i].address, sizeof(emp[i].address), stdin);
        printf("Post: ");
        fgets(emp[i].post, sizeof(emp[i].post), stdin);
    }
    printf("\nEmployee Records:\n");
    for (int i = 0; i < 20; i++) {
        printf("ID: %d\n", emp[i].id);
        printf("Name: %s", emp[i].name);
        printf("Address: %s", emp[i].address);
        printf("Post: %s\n", emp[i].post);
    }
    return 0;
}
19. Explain the concept of recursion in C. Write a program to find the factorial of a given number using recursion.
Recursion is a process where a function calls itself to solve a smaller instance of the same problem.
c#include <stdio.h>
int factorial(int n) {
    if (n == 0 || n == 1)
        return 1;
    return n * factorial(n - 1);
}
int main() {
    int n;
    printf("Enter a number: ");
    scanf("%d", &n);
    printf("Factorial of %d is %d\n", n, factorial(n));
    return 0;
}
20. Write a C program to differentiate between structure and union by taking an example of an employee’s data storage.
c#include <stdio.h>
struct EmployeeStruct {
    int id;
    char name[50];
    float salary;
};
union EmployeeUnion {
    int id;
    char name[50];
    float salary;
};
int main() {
    struct EmployeeStruct empStruct;
    union EmployeeUnion empUnion;
    printf("Size of Structure: %lu\n", sizeof(empStruct));
    printf("Size of Union: %lu\n", sizeof(empUnion));
    return 0;
}
21. Write a C program to input student records (name, roll number, and department) and store them in a file named student.dat. Read and display the stored records properly.
c#include <stdio.h>
struct Student {
    char name[50];
    int roll_no;
    char department[50];
};
int main() {
    struct Student student;
    FILE *file;
    file = fopen("student.dat", "w");
    if (file == NULL) {
        printf("Error opening file.\n");
        return 1;
    }
    printf("Enter student details:\n");
    printf("Name: ");
    fgets(student.name, sizeof(student.name), stdin);
    printf("Roll Number: ");
    scanf("%d", &student.roll_no);
    getchar();  // To consume newline character
    printf("Department: ");
    fgets(student.department, sizeof(student.department), stdin);
    fwrite(&student, sizeof(struct Student), 1, file);
    fclose(file);
    file = fopen("student.dat", "r");
    if (file == NULL) {
        printf("Error opening file.\n");
        return 1;
    }
    fread(&student, sizeof(struct Student), 1, file);
    printf("\nStored Student Record:\n");
    printf("Name: %s", student.name);
    printf("Roll Number: %d\n", student.roll_no);
    printf("Department: %s", student.department);
    fclose(file);
    return 0;
}
22. Differentiate between an array and a structure. Write a C program to store employee data (name, post, and salary) using structures and display the stored records.
An array stores multiple elements of the same type, while a structure can store different data types together under one name.
c#include <stdio.h>
struct Employee {
    char name[50];
    char post[50];
    float salary;
};
int main() {
    struct Employee emp;
    
    printf("Enter employee name: ");
    fgets(emp.name, sizeof(emp.name), stdin);
    printf("Enter employee post: ");
    fgets(emp.post, sizeof(emp.post), stdin);
    printf("Enter employee salary: ");
    scanf("%f", &emp.salary);
    printf("\nEmployee Record:\n");
    printf("Name: %s", emp.name);
    printf("Post: %s", emp.post);
    printf("Salary: %.2f\n", emp.salary);
    return 0;
}
23. Write a program to enter the ID, name, and salary of 100 employees using structures and display the employee details.
c#include <stdio.h>
struct Employee {
    int id;
    char name[50];
    float salary;
};
int main() {
    struct Employee emp[100];
    for (int i = 0; i < 100; i++) {
        printf("Enter details for employee %d:\n", i + 1);
        printf("ID: ");
        scanf("%d", &emp[i].id);
        getchar();  // To consume newline character left by previous scanf
        printf("Name: ");
        fgets(emp[i].name, sizeof(emp[i].name), stdin);
        printf("Salary: ");
        scanf("%f", &emp[i].salary);
    }
    printf("\nEmployee Details:\n");
    for (int i = 0; i < 100; i++) {
        printf("ID: %d\n", emp[i].id);
        printf("Name: %s", emp[i].name);
        printf("Salary: %.2f\n", emp[i].salary);
    }
    return 0;
}
24. Write a C program to store names and marks of 20 students, sort them in descending order, and display the sorted list.
c#include <stdio.h>
#include <string.h>
struct Student {
    char name[50];
    int marks;
};
int main() {
    struct Student students[20], temp;
    
    for (int i = 0; i < 20; i++) {
        printf("Enter name of student %d: ", i + 1);
        fgets(students[i].name, sizeof(students[i].name), stdin);
        printf("Enter marks for student %d: ", i + 1);
        scanf("%d", &students[i].marks);
        getchar();  // To consume newline character
    }
    for (int i = 0; i < 19; i++) {
        for (int j = i + 1; j < 20; j++) {
            if (students[i].marks < students[j].marks) {
                temp = students[i];
                students[i] = students[j];
                students[j] = temp;
            }
        }
    }
    printf("\nSorted list of students by marks:\n");
    for (int i = 0; i < 20; i++) {
        printf("%sMarks: %d\n", students[i].name, students[i].marks);
    }
    return 0;
}
25. Describe the different types of operators in C with examples.
C has several types of operators, including:
- Arithmetic operators: 
+,-,*,/,% - Relational operators: 
==,!=,<,>,<=,>= - Logical operators: 
&&,||,! - Bitwise operators: 
&,|,^,<<,>> - Assignment operators: 
=,+=,-=,*=,/= - Increment/Decrement operators: 
++,-- - Conditional (ternary) operator: 
condition ? expr1 : expr2