(Computer Science) CBSE Class XII Important Questions Computer Science (2008)
Disclaimer: This website is NOT associated with CBSE, for official website of CBSE visit - www.cbse.gov.in
Computer Science : CBSE Class XII Important Questions Computer Science (2008)
Chapter 6 – Inheritance
Q. 21. What is Containership? How does it differ from Inheritance?
Ans: When a class contains objects of another class as its members, this kind of relationship is called containership or nesting. Inheritance lets you create or define a specialized object of a class that shares the properties of the class and at the same time adds new features to it. But containership is just a way to define an object which itself is collection of objects of other classes.
Q .22. Given the following class definitions answer the questions that follow:
class book
{
char title[20];
char author[20];
int no_of_pages;
public:
void read( );
void show( );
};
class textbook:private book
{
int no_of_chapters, no_of_assignments;
protected:
int standard;
public:
void readtextbook( );
void showtextbook( );
};
class physicsbook:public textbook
{
char topic[20];
public:
void readphysicsbook( );
void showphysicsbook( );
};
- 
    Name the members, which can be accessed from the member functions of class physicsbook. 
- 
    Name the members, which can be accessed by an object of class textbook. 
- 
    Name the members, which can be accessed by an object of class physicsbook. 
- 
    What will be the size of an object (in bytes) of class physicsbook. 
Ans:
- 
    Data Members: standard, topic 
 Member Functions: readtextbook( ), showtextbook( ), readphysicsbook( ); showphysicsbook( ).
- 
    Member Functions: readtextbook( ), showtextbook( ). 
- 
    Member Functions: readtextbook( ), showtextbook( ), readphysicsbook( ), showphysicsbook( ). 
- 
    68 bytes. 
Chapter 7 – Data File Handling
Q. 23. Write a user defined function in C++ to read the content from a text file STORY.TXT, count and display the number of alphabets present in it.
Ans:
           
#include<fstream.h>
            void main( )
            {
                       
ifstream fin(“STORY.TXT”);
                       
char ch;
                       
int count = 0;
                       
if(!fin)
                       
{
                                   
cout<<”\n File does not exist”;
                                   
return;
                       
}
                       
while(1)
                       
{
                                   
fin.get(ch);
                                   
if(ch = = EOF)
                                               
break;
                                   
if((ch>=’A’ && ch<=’Z’)||(ch>=’a’&&
ch<=’z’))
                                               
count++;
                       
}
                       
cout<<”\nNumber of alphabets are:”<<count;
                       
fin.close( );
            }
Q. 24. Name two member functions common to the classes ifstream and ofstream.
Ans: open ( ), close ( ).
Q. 25. Assuming the class Computer as follows:
class computer
{
char chiptype[10];
int speed;
public:
void getdata( )
{
gets(chiptype);
cin>>speed;
}
void showdata( )
{
cout<<”Chip”<<chiptype<<”Speed=”<<speed;
}
};
Write a function readfile( ) to read all the records present in an already existing binary file SHIP.DAT and display them on the screen, also count the number of records present in the file.
Ans:
            void
readfile( )
            {
                       
ifstream fin;
                       
fin.open(“SHIP.DAT”,ios::in|ios::binary);
                       
computer c;
                       
while(!fin.eof( ))
                       
{
                                   
fin.read((char*)&c, sizeof(c));
                                   
count++;
                                   
c.showdata( );
                       
}
                       
cout<<”Total Number of Records are”<<count;
            }
Q. 26. Differentiate between write and put functions of ostream class.
Ans:
The prototypes of put ( ) and write ( ) are:
            ostream &
put (char ch);
            ostream &
write ((char *) & buf, int sizeof(buf));
The put ( ) writes the value of ch(one character) to the stream and returns a reference to the stream. The write ( ) function writes sizeof (buf) bytes to the associated stream from the buffer pointed to by buf. The data written to a file using write( ) can only be read accurately using read( ).
Q. 27. Write a program that displays the size of a file in bytes:
Ans:
           
#include<fstream.h>
           
#include<process.h>
           
#include<conio.h>
           
          void main( )
            {
                       
clrscr( );
                       
char filename[13];
                       
cout<<”Enter filename:\n”;
                       
cin.getline(filename, 13);
                       
ifstream infile(filename);
                       
if(!infile)
                       
{
                                   
cout<<”Cannot open “<<filename<<” file”;
                                   
exit(-1);
                       
}
                       
int no_bytes = 0;
                       
char ch;
                       
while(cin.get(ch))
                                   
no_bytes++;
                       
cout<<”File size is”< no_bytes<<” bytes”;
                       
getch( );
}
Chapter 8 – Pointers
Q. 28. Distinguish between:
int * ptr = new int(5);
int *ptr = new int[5];
Ans:
The first statement allocates memory of one integer to ptr and initializes it with value 5. The second statement allocates memory of 5 contiguous integers (i.e. an array of 5 integers) and stores beginning address in pointer ptr.
Q. 29. What will be the output of the following code fragment:
#include<iostream.h>
#include<conio.h>
void main( )
{
clrscr( );
int a[ ] = {3, 5, 6, 7};
int *p, **q, ***r, *s, *t, **ss;
p = a;
s = p + 1;
q = &s;
t = (*q + 1);
ss = &t;
r = &ss;
cout<<*p<<’\t’<<**q<<’\t’<<***r<<endl;
}
Ans: 3, 5, 6.
Q. 30. Identify syntax errors, if any, in the following program. Also give reason for errors.
void main( )
{
const int i = 20;
const int * const ptr = &i;
*ptr ++;
int j = 15;
ptr = &j;
}
Ans:
| Erroneous statements | Errors and corrections | 
| *ptr ++ | Cannot modify const object | 
| ptr = &j | Cannot
        modify const object | 
Chapter 9 –Array
Q. 31. How is computer memory allotted for a 2D array?
Ans: For two-dimensional array, the computer memory is allocated either in row-major form or in column-major form.
Row Major form stores the 2-D array row wise i.e., firstly the first row is stored, then the second row, then third row, and so forth.
Column Major form stores the 2-D array column wise i.e. firstly the first column, then the second column, then third and so forth. The default form is Row-Major.
Q. 32. Binary search is to be used on the following sorted array to search for 30 and 60.
Array
| Index: | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 
| Value: | 11 | 22 | 30 | 33 | 40 | 44 | 55 | 60 | 66 | 70 | 
Give the index of the element that would be compared with at every step. Repeat the process replacing 30 by 60.
Ans:
For
30
Step                            
Index                          
Result
1.                                
4                                 
Unsuccessful
2.                                
1                                 
Unsuccessful
3.                                
2                                 
Successful
For
60
Step                            
Index                          
Result
1.                                
4                                 
Unsuccessful
2.                                
7                                 
Successful.
Q. 33. Consider the single dimensional array AAA [45] having base address 300 and 4 bytes is the size of each element of the array. Find the address of AAA [10], AAA [25] and AAA [40].
Ans:
lb=0,
b=300, s=4 bytes.
AAA [I] = b + (l – lb)*s
AAA [10] = 300 + (10-0)*4 = 340
AAA [25] = 300 + (25-0)*4 = 400
AAA [40] = 300 + (40-0)*4 = 460.
The addresses of AAA [10], AAA [25], AAA [40] are 340, 400 and 460 respectively.
Q .34. Given two dimensional array A[10][20], base address of A being 100 and width of each element is 4 bytes, find the location of A[8][15] when the array is stored as a) column wise b) Row wise.
Ans:
1. Column wise
           
Address[i][j] = B + w[n(J-0)+(I-0)]
            Address
A[8][15] = 100 + 4[10(15-0) + (8-0)] = 100 + 4[150 + 8] = 100 + 632 = 732.
2. Row wise
Address[i,j]
=   B + w[n(I-0) + (J-0)]
Address A[8][15]=100 + 4[20(8 – 0) + (15 – 0)]= 100 + 4[160 + 15]= 100 + 700
= 800
Q. 35. Write a C++ function to find and display the sum of each row and each column of a 2 dimensional array of type float. Use the array and its size as parameters with float as the return type.
Ans:
            void
rowcolsum(float a[10][10], int r, int c)
                       
{
                                   
int i,j;
                                   
float rs[10], cs[10];
                                   
for(i=0;i<r;i++)
                                   
{
                                               
rs[i] = 0;
                                               
for(j=0;j<c;j++)
                                                           
rs[i] = rs[i] + a[i][j];
                                   
}
for(j=0;j<c;j++)
                                   
{
                                               
cs[j] = 0;
                                               
for(i=0;i<r;i++)
                                                           
cs[j] = cs[j] + a[i][j];
                                   
}
                       
//Display 2 D array with row sum and column sum
                                   
for(i=0;i<r;i++)
                                   
{
                                               
for(j=0;j<c;j++)
                                                           
cout<<a[i][j]<<” “;
                                               
cout<<rs[i]<<endl;
                                   
}
                       
for(j=0;j<c;j++)
                                   
cout<<cs[j]<<” “;
                       
cout<<endl;
}