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