Answer:
C code is explained below
Explanation:
Sets.h:
#ifndef SETS_H
#define SETS_H
class Sets
{
     private:
          static const int s = 4;
          int na[s];
     public:
          //for constructor
          Sets();
          //function declaration for add the element
          void addElement(int);
          //function declaration for get the element
          int getElement(int);
          //function declaration for get size
          int getSize();
          //function declaration for check sub set
          bool isSubset(const Sets &);
          //function declaration for check the proper subset
          bool isProper(const Sets &);
          //function declaration for display the set
          void printSet();
          //function declaration for display the ordered set
          void Sets::printOrderedPairs( const Sets &);
};
#endif
Main.cpp:
#include "Sets.h"
#include <iostream>
using namespace std;
//constructor
Sets::Sets(){
    for (int i = 0; i < s; i++){
        na[i] = -1;
    }
}
//function definition for get size
int Sets::getSize(){
    return s;
}
//function definition for add the elements
void Sets::addElement(int l){
    for (int i = 0; i < s; i++){
        if (na[i] == -1){
            na[i] = l;
            break;
        }
    }
}
//function definition for get element
int Sets::getElement(int j){
    if (j < s){
        return (-1);
    }
    else{
        int t;
        t = na[j];
        return t;
    }
}
//function definition for check the subset
bool Sets::isSubset( const Sets &b ) {
   for (int i = 0, j = 0; i < b.s; i++ ) {
           while ( j < s && na[j] < b.na[i] ) ++j;
        if ( j == s || na[j] > b.na[i] )
            return false;
    }
    return true;
}
//function definition for check the proper subset
bool Sets::isProper( const Sets &b ) {
    int ne = 0;
    for (int i = 0, j = 0; i < b.s; i++ ) {
        while ( j < s && na[j] < b.na[i] ) ++j;
        if ( j == s || na[j] > b.na[i] )
            return false;
        ++ne;
    }
    return ne < s;
}
//function definition for display the ordered set
void Sets::printOrderedPairs( const Sets &b){
    cout << "A X B = {";
    for (int i = 0; i < s; i++){
        for (int j = 0; j < b.s; j++){
            cout << '(' << na[i] << ", " << b.na[j] << "), ";
      }
    }
    cout << "\b\b} ";
}
//function definition for display the set
void Sets::printSet(){
    cout << "{";
    for (int i = 0; i < s; i++){
        cout << na[i] << ",";
    }
    cout << "}";
}
//main function
int main()
{
    //object for Set A
    Sets a;
    //object for Set B
    Sets b;
    //add the element for Set A
    a.addElement(1);
    a.addElement(2);
    a.addElement(3);
    a.addElement(4);
     //add the element for Set B
    b.addElement(3);
    b.addElement(4);
    b.addElement(5);
    b.addElement(6);
    //display the set A
    cout << "Set A: ";
    a.printSet();
    cout << endl;
    //display the set B
    cout << "Set B: ";
    b.printSet();
    cout << "\n" << endl;
    //display the A X B
     a.printOrderedPairs(b);
    cout << "\n" << endl;
     //chrck the subset
    if (a.isSubset(b) == true){
        cout << "Set B is subset of set A" << endl;
    }
    else{
        cout << "Set B is not a subset of set A" << endl;
    }
     //check the proper subset
    if (a.isProper(b) == true){
        cout << "Set B is proper subset of set A" << endl;
    }
    else{
         cout << "Set B is not a proper subset of set A" << endl;
    }
    system("PAUSE");
    return 0;
}