Here's my first entry. Hope you like it

Use Dev-Cpp to compile it, executable attached.
/*
  ASCII Matrix
  Code: Rbraz - 2006
*/
#include <stdio.h>
#include <conio.h>
#include <windows.h>
using namespace std;
//------------------------------------------------------------------------------
#define MAX_CODE 70
#define MAX_LENGTH 25
typedef struct {
  int  x;
  float y;
  float speed;
  int  length;
  char ch[MAX_LENGTH];
}
matrixcode;
matrixcode mtxcode[MAX_CODE];
float Random(float min, float max)
{
 return ((float)rand())/RAND_MAX * (max-min) + min;
}
void gotoxy(int x, int y)
{
  HANDLE hConsoleOutput;
  COORD dwCursorPosition;
  dwCursorPosition.X = x;
  dwCursorPosition.Y = y;
  hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);
  SetConsoleCursorPosition(hConsoleOutput,dwCursorPosition);
}
void textcolor (int color, int bgcolor)
{
  static int __BACKGROUND = bgcolor;
  static int __FOREGROUND = color;
 Â
  SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),
  color + (__BACKGROUND << 4));
}
void initconsole()
{
SetConsoleTitle("ASCII Matrix by Rbraz - Press Alt+Enter for FullScreen");
COORD wh = {80,50};
  SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE), wh);
 Â
SMALL_RECT rect1={1,1,80,50};
  SetConsoleWindowInfo(GetStdHandle(STD_OUTPUT_HANDLE), TRUE, &rect1);
 Â
CONSOLE_CURSOR_INFO cursor = {10,FALSE};
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor);Â Â
}
void plotchar(char *ch, int x, int y, int color, int bgcolor)
{Â Â
  if( ((x < 79) & (x > 1)) & ((y < 49) & (y > 1)) ) {
    gotoxy(x, y);
    textcolor(color,bgcolor);
    printf(ch);
  }
}
void initMatrix()
{
  int i,j;
  int length;
 Â
  for(i=0; i<MAX_CODE; i++) {
    mtxcode[i].x = 1 + rand()%78;
    mtxcode[i].y = (float)(1 + rand()%48);
    mtxcode[i].speed = Random(0.4f, 1.0f);
   Â
    for(j=0; j<MAX_LENGTH; j++) mtxcode[i].ch[j] = 0;
   Â
    mtxcode[i].length = rand()%MAX_LENGTH;
   Â
    for(j=0; j<mtxcode[i].length; j++) {
      mtxcode[i].ch[j] = 33 + rand()%222;
    }
   Â
  }Â
}
void plotMatrix()
{
  int i,j;
  char tmp[2];
  for(i=0; i<2; i++) tmp[i] = 0;
 Â
  for(i=0; i<MAX_CODE; i++) {
   Â
    for(j=0; j<mtxcode[i].length+2; j++) {
     Â
      tmp[0] = 33 + rand()%222;  //mtxcode[i].ch[j];
     Â
      if(j >= mtxcode[i].length-1) {
        plotchar(" ", mtxcode[i].x, (int)mtxcode[i].y, 0, 0);
        plotchar(tmp, mtxcode[i].x, (int)mtxcode[i].y+j, 10, 0);
      }
      else {
        plotchar(" ", mtxcode[i].x, (int)mtxcode[i].y, 0, 0);
        plotchar(tmp, mtxcode[i].x, (int)mtxcode[i].y+j, 2, 0);
      }
           Â
    }
   Â
    mtxcode[i].y += mtxcode[i].speed;
   Â
    if(mtxcode[i].y > 49) {
      mtxcode[i].x = 1 + rand()%78;
      mtxcode[i].y = (float)-mtxcode[i].length;
      mtxcode[i].speed = Random(0.4f, 1.0f);
    }
     Â
  }
}
//------------------------------------------------------------------------------
int main(int argc, char *argv[])
{
  int i;
 Â
  srand(GetTickCount()); Â
  Â
  initconsole(); Â
  initMatrix();
   Â
  do
  {  Â
    plotMatrix();
  }
  while (!kbhit());
}