NEB Class 12 Computer Science - C Programming Solutions

NEB Grade XII: Programming in C Complete Set Solutions

Subject: Computer Science (Grade XII)  |  Topic: Unit-4 C Programming Complete Board Solutions

Table of Contents

1. Recursive Functions

1. Factorial of a Number Using Recursion

#include <stdio.h>

long int factorial(int n) {
    if (n <= 1)
        return 1;
    return n * factorial(n - 1);
}

int main() {
    int num;
    printf("Enter a positive integer: ");
    scanf("%d", &num);
    
    if (num < 0)
        printf("Factorial is not defined for negative numbers.\n");
    else
        printf("Factorial of %d = %ld\n", num, factorial(num));
        
    return 0;
}

2. Sum up to Given Number Using Recursion

#include <stdio.h>

int calculateSum(int n) {
    if (n <= 0)
        return 0;
    return n + calculateSum(n - 1);
}

int main() {
    int num;
    printf("Enter a number: ");
    scanf("%d", &num);
    printf("Sum of numbers from 1 to %d = %d\n", num, calculateSum(num));
    return 0;
}

3. Fibonacci Series Using Recursion

#include <stdio.h>

int fibonacci(int n) {
    if (n == 0) return 0;
    if (n == 1) return 1;
    return fibonacci(n - 1) + fibonacci(n - 2);
}

int main() {
    int terms, i;
    printf("Enter the number of terms: ");
    scanf("%d", &terms);
    
    printf("Fibonacci Series: ");
    for (i = 0; i < terms; i++) {
        printf("%d ", fibonacci(i));
    }
    printf("\n");
    return 0;
}

2. File Handling Programs

a) Store Name and Age of Student Until User Says 'no'

#include <stdio.h>
#include <string.h>

int main() {
    FILE *fptr = fopen("student_info.txt", "w");
    char name[50], choice[5];
    int age;

    if (fptr == NULL) {
        printf("Error opening file!\n");
        return 1;
    }

    do {
        printf("Enter student name: ");
        scanf("%s", name);
        printf("Enter age: ");
        scanf("%d", &age);

        fprintf(fptr, "%s\t%d\n", name, age);

        printf("Do you want to add another record? (type 'no' to stop): ");
        scanf("%s", choice);
    } while (strcmp(choice, "no") != 0 && strcmp(choice, "No") != 0);

    fclose(fptr);
    printf("Data stored successfully in student_info.txt\n");
    return 0;
}

f) Create score.dat to Store & Display Registration Records

#include <stdio.h>
#include <string.h>

int main() {
    FILE *fptr;
    char reg_no[20], name[50], gender[10], address[50], choice[5];

    // Writing records
    fptr = fopen("score.dat", "w");
    if (fptr == NULL) {
        printf("Error creating file!\n");
        return 1;
    }

    do {
        printf("Enter Reg No, Name, Gender, Address:\n");
        scanf("%s %s %s %s", reg_no, name, gender, address);
        fprintf(fptr, "%s\t%s\t%s\t%s\n", reg_no, name, gender, address);

        printf("Do you want to continue adding? (yes/no): ");
        scanf("%s", choice);
    } while (strcmp(choice, "no") != 0 && strcmp(choice, "No") != 0);

    fclose(fptr);

    // Reading & Displaying records
    fptr = fopen("score.dat", "r");
    if (fptr == NULL) {
        printf("Error reading file!\n");
        return 1;
    }

    printf("\n--- STUDENT RECORDS (score.dat) ---\n");
    printf("REG_NO\tNAME\tGENDER\tADDRESS\n");
    printf("----------------------------------------\n");

    while (fscanf(fptr, "%s %s %s %s", reg_no, name, gender, address) != EOF) {
        printf("%s\t%s\t%s\t%s\n", reg_no, name, gender, address);
    }

    fclose(fptr);
    return 0;
}

3. Functions, Arrays & Structures Solutions

b) Surface Area of Football (Sphere) Using User-Defined Function

#include <stdio.h>
#define PI 3.14159

float calculateArea(float radius) {
    return 4 * PI * radius * radius;
}

int main() {
    float radius, area;
    printf("Enter radius of the football: ");
    scanf("%f", &radius);

    area = calculateArea(radius);
    printf("Surface Area of the football = %.2f sq. units\n", area);
    return 0;
}

c) Staff Records Filter (Salary 25,000 to 40,000)

#include <stdio.h>

struct Staff {
    int id;
    char name[50];
    float salary;
};

int main() {
    struct Staff s[50];
    int i;

    printf("--- Input Records for 50 Staffs ---\n");
    for (i = 0; i < 50; i++) {
        printf("Enter Staff ID, Name, and Salary for staff %d:\n", i + 1);
        scanf("%d %s %f", &s[i].id, s[i].name, &s[i].salary);
    }

    printf("\n--- Staffs with Salary Between 25,000 and 40,000 ---\n");
    printf("ID\tNAME\tSALARY\n");
    printf("----------------------------------\n");
    for (i = 0; i < 50; i++) {
        if (s[i].salary >= 25000 && s[i].salary <= 40000) {
            printf("%d\t%s\t%.2f\n", s[i].id, s[i].name, s[i].salary);
        }
    }

    return 0;
}

d) Sort 10 Different Numbers Using User-Defined Function

#include <stdio.h>

void sortNumbers(int arr[], int size) {
    int i, j, temp;
    for (i = 0; i < size - 1; i++) {
        for (j = i + 1; j < size; j++) {
            if (arr[i] > arr[j]) {
                temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }
    }
}

int main() {
    int numbers[10], i;
    printf("Enter 10 different numbers:\n");
    for (i = 0; i < 10; i++) {
        scanf("%d", &numbers[i]);
    }

    sortNumbers(numbers, 10);

    printf("\nSorted Numbers in Ascending Order:\n");
    for (i = 0; i < 10; i++) {
        printf("%d ", numbers[i]);
    }
    printf("\n");
    return 0;
}

e) Input & Display 5 Students Using Structure

#include <stdio.h>

struct Student {
    int roll;
    char name[50];
    int age;
};

int main() {
    struct Student st[5];
    int i;

    for (i = 0; i < 5; i++) {
        printf("Enter Roll No, Name, and Age for student %d:\n", i + 1);
        scanf("%d %s %d", &st[i].roll, st[i].name, &st[i].age);
    }

    printf("\n--- STUDENT DETAILS ---\n");
    printf("ROLL\tNAME\tAGE\n");
    printf("-------------------------\n");
    for (i = 0; i < 5; i++) {
        printf("%d\t%s\t%d\n", st[i].roll, st[i].name, st[i].age);
    }

    return 0;
}

4. Complete 12 Students Marksheet Program

#include <stdio.h>

struct Student {
    int roll;
    char name[50];
    float sub1, sub2, sub3, total, per;
};

int main() {
    struct Student data[12];
    int i;

    // Input data for 12 students
    for (i = 0; i < 12; i++) {
        printf("Enter roll number, name, and marks for Sub1, Sub2, Sub3 of student %d:\n", i + 1);
        scanf("%d %s %f %f %f", &data[i].roll, data[i].name, &data[i].sub1, &data[i].sub2, &data[i].sub3);
    }

    // Process total and percentage
    for (i = 0; i < 12; i++) {
        data[i].total = data[i].sub1 + data[i].sub2 + data[i].sub3;
        data[i].per = data[i].total / 3.0;
    }

    // Display formatted result
    printf("\n=================================== STUDENT MARKSHEET ===================================\n");
    printf("Roll\tName\t\tSub1\tSub2\tSub3\tTotal\t\tPercentage\n");
    printf("-----------------------------------------------------------------------------------------\n");
    for (i = 0; i < 12; i++) {
        printf("%d\t%-15s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f%%\n", 
                data[i].roll, data[i].name, data[i].sub1, data[i].sub2, data[i].sub3, data[i].total, data[i].per);
    }

    return 0;
}