Analysis and Prediction of
Frequently Asked Questions in
"MCS-011: Problem Solving and
Programming" Exams
Abstract
This report analyzes past examination papers for the "MCS-011: Problem Solving and
Programming" course to identify frequently asked questions and recurring topics. The
objective is to help students prepare effectively for their exams by focusing on the most
significant and repeatedly tested areas. Based on the findings, a structured guess paper is
provided to guide exam preparation.
Table of Contents
1. Introduction
o Purpose of the Report
o Methodology
2. Analysis of Past Exam Papers
o Data Collection
o Frequency Analysis
o Trends and Observations
3. Frequently Asked Questions
o Detailed List of High-Frequency Questions
o Yearly Occurrences
4. Structured Guess Paper
o Theory Questions
o Programming Questions
o Additional Practice Problems
5. Conclusion
o Summary of Findings
o Recommendations for Exam Preparation
6. References
Introduction
Purpose of the Report: The purpose of this report is to provide a comprehensive
analysis of past exam papers for the "MCS-011: Problem Solving and Programming"
course. By identifying frequently asked questions and recurring topics, the report aims to
assist students in prioritizing their study efforts and improving their exam performance.
Methodology: The analysis was conducted using past exam papers from 2010 to 2013.
Questions were categorized, and their frequencies were calculated to determine the most
commonly tested topics.
PAGE 1
Analysis of Past Exam Papers
Data Collection: Exam papers from 2010, 2011, 2012, and 2013 were collected and
reviewed. Each question was recorded along with the year it appeared.
Frequency Analysis: Questions were analyzed for their frequency of occurrence. Topics
that appeared multiple times across different years were identified as key areas of focus.
Trends and Observations: The analysis revealed specific topics that were consistently
tested, indicating their importance in the course curriculum.
Frequently Asked Questions
The following are the most frequently asked questions, along with their occurrences:
1. Write a program in C to check whether a given string is a palindrome.
o Frequency: 3 times
o Years: 2010, 2011, 2013
2. Explain the concept of pointers and their usage in C programming.
o Frequency: 3 times
o Years: 2010, 2012, 2013
3. Differentiate between structure and union in C.
o Frequency: 3 times
o Years: 2010, 2012, 2013
4. Write a program in C to add two matrices of size 3x3 using arrays.
o Frequency: 2 times
o Years: 2011, 2013
5. Write a recursive program to calculate the factorial of a given number.
o Frequency: 2 times
o Years: 2010, 2012
6. Explain various storage classes in C.
o Frequency: 2 times
o Years: 2010, 2012
7. Write a program in C to copy the contents of one file to another.
o Frequency: 2 times
o Years: 2012, 2013
8. Write a program and flowchart to display a specific pattern.
o Frequency: 2 times
o Years: 2010, 2012
9. What is a pointer to an array? Write a program using pointer to array to
calculate sum of n numbers.
o Frequency: 2 times
o Years: 2012, 2013
PAGE 2
Structured Guess Paper
Theory Questions:
1. Explain the concept of pointers and their usage in C programming.
2. Differentiate between structure and union in C.
3. Explain various storage classes in C.
4. Write a program in C to copy the contents of one file to another.
Programming Questions:
1. Write a program in C to check whether a given string is a palindrome.
2. Write a program in C to add two matrices of size 3x3 using arrays.
3. Write a recursive program to calculate the factorial of a given number.
4. Write a program and flowchart to display a specific pattern.
Additional Practice Problems:
1. Write a program to demonstrate pointer arithmetic in C.
2. Write a program to dynamically allocate memory for an array and find its largest
element.
3. Write a program to create a singly linked list and perform insertion and deletion
operations.
Conclusion
Summary of Findings: The analysis identified key topics that are frequently tested in the
"MCS-011: Problem Solving and Programming" exams. These topics include pointers,
structures, recursion, and file handling.
Recommendations for Exam Preparation: Students should focus on understanding and
practicing the identified key topics. Regular coding practice and solving previous years'
papers are recommended to improve proficiency and confidence.
References
• Past Exam Papers (2010-2013) for MCS-011: Problem Solving and Programming
PAGE 3
Frequently Asked Questions and
Their Answers
1. Write a program in C to check whether a given string is a palindrome.
Answer:
#include <stdio.h>
#include <string.h>
int main() {
char str[100], rev[100];
int len, i, flag = 0;
printf("Enter a string: ");
gets(str);
len = strlen(str);
for (i = 0; i < len; i++) {
rev[i] = str[len - i - 1];
}
rev[len] = '\0';
flag = strcmp(str, rev);
if (flag == 0) {
printf("%s is a palindrome.\n", str);
} else {
printf("%s is not a palindrome.\n", str);
}
return 0;
}
2. Explain the concept of pointers and their usage in C programming.
Answer: Pointers are variables that store the memory address of another variable. They
provide a way to access and manipulate data stored in memory directly. The main usages
of pointers in C programming include:
PAGE 4
• Dynamic Memory Allocation: Pointers are used with functions like malloc(),
calloc(), and free() to allocate and deallocate memory dynamically.
• Arrays and Strings: Pointers can be used to access and manipulate array elements
and strings efficiently.
• Function Arguments: Pointers allow functions to modify variables passed by
reference.
• Data Structures: Pointers are essential in implementing data structures like
linked lists, trees, and graphs.
Example:
#include <stdio.h>
int main() {
int var = 20;
int *ptr;
ptr = &var;
printf("Value of var: %d\n", var);
printf("Address of var: %p\n", &var);
printf("Value pointed to by ptr: %d\n", *ptr);
printf("Address stored in ptr: %p\n", ptr);
return 0;
}
3. Differentiate between structure and union in C.
Answer:
• Structure:
o A structure is a user-defined data type that allows grouping variables of
different types.
o Each member has its own memory space.
o The total memory required is the sum of the memory of all members.
• Union:
o A union is a user-defined data type that allows storing different data types
in the same memory location.
o All members share the same memory space.
o The total memory required is equal to the memory required by the largest
member.
PAGE 5
Example of Structure:
#include <stdio.h>
struct Student {
int id;
char name[50];
float percentage;
};
int main() {
struct Student student1 = {1, "John Doe", 85.5};
printf("ID: %d\n", [Link]);
printf("Name: %s\n", [Link]);
printf("Percentage: %.2f\n", [Link]);
return 0;
}
Example of Union:
#include <stdio.h>
union Data {
int i;
float f;
char str[20];
};
int main() {
union Data data;
data.i = 10;
printf("data.i : %d\n", data.i);
data.f = 220.5;
printf("data.f : %.2f\n", data.f);
strcpy([Link], "C Programming");
printf("[Link] : %s\n", [Link]);
return 0;
}
4. Write a program in C to add two matrices of size 3x3 using arrays.
Answer:
PAGE 6
#include <stdio.h>
int main() {
int matrix1[3][3], matrix2[3][3], sum[3][3];
int i, j;
// Input matrix1
printf("Enter elements of matrix1:\n");
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
scanf("%d", &matrix1[i][j]);
}
}
// Input matrix2
printf("Enter elements of matrix2:\n");
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
scanf("%d", &matrix2[i][j]);
}
}
// Adding matrices
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
sum[i][j] = matrix1[i][j] + matrix2[i][j];
}
}
// Output sum matrix
printf("Sum of the two matrices:\n");
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
printf("%d ", sum[i][j]);
}
printf("\n");
}
return 0;
}
5. Write a recursive program to calculate the factorial of a given number.
Answer:
#include <stdio.h>
int factorial(int n) {
if (n == 0) {
return 1;
} else {
return n * factorial(n - 1);
}
PAGE 7
}
int main() {
int num;
printf("Enter a number: ");
scanf("%d", &num);
printf("Factorial of %d is %d\n", num, factorial(num));
return 0;
}
6. Explain various storage classes in C.
Answer: C provides four storage classes:
1. Automatic (auto):
o Default storage class for local variables.
o Lifetime is within the block where it is declared.
o Scope is local to the block.
2. External (extern):
o Used to declare a global variable or function.
o Lifetime is the entire program execution.
o Scope is global.
3. Static:
o For local variables, lifetime extends for the entire program.
o For global variables, the scope is limited to the file where it is declared.
o Retains value between function calls.
4. Register:
o Suggests storing the variable in a register for faster access.
o Limited scope and lifetime similar to auto.
Example:
#include <stdio.h>
void function() {
static int count = 0; // Static variable
count++;
printf("Count: %d\n", count);
}
int main() {
for (int i = 0; i < 5; i++) {
function();
}
return 0;
}
PAGE 8
7. Write a program in C to copy the contents of one file to another.
Answer:
#include <stdio.h>
int main() {
FILE *sourceFile, *targetFile;
char ch;
sourceFile = fopen("[Link]", "r");
if (sourceFile == NULL) {
printf("Source file not found.\n");
return 1;
}
targetFile = fopen("[Link]", "w");
if (targetFile == NULL) {
printf("Error opening target file.\n");
return 1;
}
while ((ch = fgetc(sourceFile)) != EOF) {
fputc(ch, targetFile);
}
printf("File copied successfully.\n");
fclose(sourceFile);
fclose(targetFile);
return 0;
}
8. Write a program and flowchart to display a specific pattern.
Answer:
#include <stdio.h>
int main() {
int i, j, rows;
printf("Enter the number of rows: ");
scanf("%d", &rows);
for (i = 1; i <= rows; i++) {
for (j = 1; j <= i; j++) {
printf("* ");
}
printf("\n");
}
PAGE 9
return 0;
}
Flowchart:
1. Start
2. Input number of rows
3. Loop from i = 1 to rows
o Loop from j = 1 to i
▪ Print "* "
o Print newline
4. End
9. What is a pointer to an array? Write a program using a pointer to an array to
calculate the sum of n numbers.
Answer: A pointer to an array is a pointer that points to the first element of an array. It
can be used to iterate through the array elements.
Example Program:
#include <stdio.h>
int main() {
int arr[100], n, sum = 0;
int *ptr;
printf("Enter the number of elements: ");
scanf("%d", &n);
printf("Enter the elements:\n");
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
ptr = arr; // Pointer to the array
for (int i = 0; i < n; i++) {
sum += *(ptr + i);
}
printf("Sum of the array elements: %d\n", sum);
return 0;
}
PAGE 10
Theory Questions:
1. Explain the concept of pointers and their usage in C programming.
Pointers are variables that store the memory address of another variable. They are used
for various purposes such as dynamic memory allocation, arrays, functions, and data
structures. Pointers enable direct memory access and manipulation, making programs
more efficient. They are declared using the asterisk (*) symbol.
Example:
int a = 10;
int *p = &a; // p is a pointer to an integer and stores the address of
a
2. Differentiate between structure and union in C.
• Structure: A structure in C is a user-defined data type that allows grouping
different data types together. Each member has its own memory location.
Example:
struct Student {
int roll_no;
char name[50];
float marks;
};
• Union: A union is similar to a structure but with a key difference: all members
share the same memory location. It can hold only one of its members at a time.
Example:
union Data {
int i;
float f;
char str[20];
};
3. Explain various storage classes in C.
C has four storage classes:
PAGE 11
• Automatic (auto): The default storage class for local variables. They are created
when the block is entered and destroyed upon exit.
• Register: Suggests that the variable be stored in a register instead of RAM for
faster access.
• Static: Maintains the value of a variable across multiple function calls within the
same file or translation unit.
• Extern: Declares a global variable or function that is defined in another file.
4. Write a program in C to copy the contents of one file to another.
#include <stdio.h>
int main() {
FILE *src, *dest;
char ch;
src = fopen("[Link]", "r");
if (src == NULL) {
printf("Cannot open source file.\n");
return 1;
}
dest = fopen("[Link]", "w");
if (dest == NULL) {
printf("Cannot open destination file.\n");
fclose(src);
return 1;
}
while ((ch = fgetc(src)) != EOF) {
fputc(ch, dest);
}
printf("File copied successfully.\n");
fclose(src);
fclose(dest);
return 0;
}
Programming Questions:
1. Write a program in C to check whether a given string is a palindrome.
PAGE 12
#include <stdio.h>
#include <string.h>
int isPalindrome(char str[]) {
int l = 0;
int h = strlen(str) - 1;
while (h > l) {
if (str[l++] != str[h--]) {
return 0;
}
}
return 1;
}
int main() {
char str[100];
printf("Enter a string: ");
gets(str);
if (isPalindrome(str)) {
printf("%s is a palindrome.\n", str);
} else {
printf("%s is not a palindrome.\n", str);
}
return 0;
}
2. Write a program in C to add two matrices of size 3x3 using arrays.
#include <stdio.h>
int main() {
int a[3][3], b[3][3], sum[3][3];
int 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++) {
PAGE 13
scanf("%d", &b[i][j]);
}
}
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
sum[i][j] = a[i][j] + b[i][j];
}
}
printf("Sum of matrices A and B:\n");
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
printf("%d ", sum[i][j]);
}
printf("\n");
}
return 0;
}
3. Write a recursive program to calculate the factorial of a given number.
#include <stdio.h>
int factorial(int n) {
if (n == 0) {
return 1;
} else {
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;
}
4. Write a program and flowchart to display a specific pattern.
#include <stdio.h>
PAGE 14
int main() {
char str[] = "HeLLO";
int len = strlen(str);
int i, j;
for (i = 0; i <= len; i++) {
for (j = 0; j < i; j++) {
printf("%c", str[j]);
}
printf("\n");
}
for (i = len - 1; i >= 0; i--) {
for (j = 0; j < i; j++) {
printf("%c", str[j]);
}
printf("\n");
}
return 0;
}
Additional Practice Problems:
1. Write a program to demonstrate pointer arithmetic in C.
#include <stdio.h>
int main() {
int arr[] = {10, 20, 30, 40, 50};
int *ptr = arr;
int i;
for (i = 0; i < 5; i++) {
printf("Value of arr[%d] = %d\n", i, *(ptr + i));
}
return 0;
}
2. Write a program to dynamically allocate memory for an array and find its largest
element.
#include <stdio.h>
#include <stdlib.h>
int main() {
PAGE 15
int n, i;
int *arr, max;
printf("Enter number of elements: ");
scanf("%d", &n);
arr = (int *)malloc(n * sizeof(int));
if (arr == NULL) {
printf("Memory allocation failed.\n");
return 1;
}
printf("Enter %d elements:\n", n);
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
max = arr[0];
for (i = 1; i < n; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
printf("Largest element: %d\n", max);
free(arr);
return 0;
}
3. Write a program to create a singly linked list and perform insertion and deletion
operations.
#include <stdio.h>
#include <stdlib.h>
struct Node {
int data;
struct Node* next;
};
void insertAtBeginning(struct Node** head_ref, int new_data) {
struct Node* new_node = (struct Node*)malloc(sizeof(struct Node));
new_node->data = new_data;
new_node->next = (*head_ref);
(*head_ref) = new_node;
}
PAGE 16
void deleteNode(struct Node** head_ref, int key) {
struct Node *temp = *head_ref, *prev;
if (temp != NULL && temp->data == key) {
*head_ref = temp->next;
free(temp);
return;
}
while (temp != NULL && temp->data != key) {
prev = temp;
temp = temp->next;
}
if (temp == NULL) return;
prev->next = temp->next;
free(temp);
}
void printList(struct Node* node) {
while (node != NULL) {
printf("%d -> ", node->data);
node = node->next;
}
printf("NULL\n");
}
int main() {
struct Node* head = NULL;
insertAtBeginning(&head, 1);
insertAtBeginning(&head, 2);
insertAtBeginning(&head, 3);
printf("Created Linked list: ");
printList(head);
deleteNode(&head, 2);
printf("Linked list after deletion of 2: ");
printList(head);
return 0;
}
PAGE 17