Language: C

#include <stdio.h>

typedef struct{
  char suit;
  int value;
} Card;

void bubble(Card,int);
void selection(Card,int);
void print(Card,int);
void stable(Card,Card,int);

void bubble(Card A[], int N){
  int i, j;
  Card t;
  for(i=0; i<N; i++){
    for(j=N-1; j>=i+1; j--){
      if(A[j].value<A[j-1].value){
        t = A[j];
        A[j] = A[j-1];
        A[j-1] = t;
      }
    }
  }
}

void selection(Card A[], int N){
  int i, j, minj=0;
  Card t;
  for(i=0; i<N; i++){
    minj = i;
    for(j=i; j<N; j++){
      if(A[j].value < A[minj].value)
        minj = j;
    }
    t = A[i];
    A[i] = A[minj];
    A[minj] = t;
  }
}

void print(Card A[], int N){
  int i;
  for(i=0; i<N; i++){
    if(i>0) printf(" ");
    printf("%c&d", A[i].suit, A[i].value);
  }
  printf("\n");
}

int stable(Card c1[], Card c2[], int N){
  int i;
  for(i=0; i<N; i++){
    if(c1[i].suit != c2[i].suit) return 0;
  }
  return 1;
}

int main(){
  Card i, c1[100], c2[100];
  int N;
  char ch;

  scanf("%d", &N);
  for(i=0; i<N; i++){
    scanf("%c%d", &c1[i].suit, &c1[i].value);
  }
  for(i=0; i<N; i++) c2[i] = c1[i];

  bubble(c1,N);
  selection(c2,N);

  print(c1,N);
  printf("Stable\n");
  print(c2,N);
  if(stable(c1,c2,N) == 1){
    printf("Stable\n");
  } else {
    printf("Not stable\n")
  }

  return 0;
}

Compiler output:
main.c:13:6: error: conflicting types for 'bubble'; have 'void(Card *, int)'
   13 | void bubble(Card A[], int N){
      |      ^~~~~~
main.c:8:6: note: previous declaration of 'bubble' with type 'void(Card,  int)'
    8 | void bubble(Card,int);
      |      ^~~~~~
main.c:27:6: error: conflicting types for 'selection'; have 'void(Card *, int)'
   27 | void selection(Card A[], int N){
      |      ^~~~~~~~~
main.c:9:6: note: previous declaration of 'selection' with type 'void(Card,  int)'
    9 | void selection(Card,int);
      |      ^~~~~~~~~
main.c:42:6: error: conflicting types for 'print'; have 'void(Card *, int)'
   42 | void print(Card A[], int N){
      |      ^~~~~
main.c:10:6: note: previous declaration of 'print' with type 'void(Card,  int)'
   10 | void print(Card,int);
      |      ^~~~~
main.c:51:5: error: conflicting types for 'stable'; have 'int(Card *, Card *, int)'
   51 | int stable(Card c1[], Card c2[], int N){
      |     ^~~~~~
main.c:11:6: note: previous declaration of 'stable' with type 'void(Card,  Card,  int)'
   11 | void stable(Card,Card,int);
      |      ^~~~~~
main.c: In function 'main':
main.c:65:9: error: incompatible types when assigning to type 'Card' from type 'int'
   65 |   for(i=0; i<N; i++){
      |         ^
main.c:65:13: error: invalid operands to binary < (have 'Card' and 'int')
   65 |   for(i=0; i<N; i++){
      |             ^
main.c:65:18: error: wrong type argument to increment
   65 |   for(i=0; i<N; i++){
      |                  ^~
main.c:66:22: error: array subscript is not an integer
   66 |     scanf("%c%d", &c1[i].suit, &c1[i].value);
      |                      ^
main.c:66:35: error: array subscript is not an integer
   66 |     scanf("%c%d", &c1[i].suit, &c1[i].value);
      |                                   ^
main.c:68:9: error: incompatible types when assigning to type 'Card' from type 'int'
   68 |   for(i=0; i<N; i++) c2[i] = c1[i];
      |         ^
main.c:68:13: error: invalid operands to binary < (have 'Card' and 'int')
   68 |   for(i=0; i<N; i++) c2[i] = c1[i];
      |             ^
main.c:68:18: error: wrong type argument to increment
   68 |   for(i=0; i<N; i++) c2[i] = c1[i];
      |                  ^~
main.c:68:24: error: array subscript is not an integer
   68 |   for(i=0; i<N; i++) c2[i] = c1[i];
      |                        ^
main.c:68:32: error: array subscript is not an integer
   68 |   for(i=0; i<N; i++) c2[i] = c1[i];
      |                                ^
main.c:79:27: error: expected ';' before '}' token
   79 |     printf("Not stable\n")
      |                           ^
      |                           ;
   80 |   }
      |   ~