Заполнить двумерный массив рандомными числами и вывести их сумму?
неправильно вот это
cout << mas[i][j] << endl;
его нужно вставить внутрь цикла по j
в остальном выглядит норм. 
не очень понятно, для чего прибавлять 0
Если ты про то, что могут выводиться отрицательные суммы, так это из-за переполнения, когда rand() генерит большие числа. Для красоты можно генерировать числа до ста, например.#include <iostream>

using namespace std;

int main()
{
    int mas[3][3];
    int i, j, sum;

    srand(time(NULL));
    sum = 0;
    for (i = 0; i < 3; i++) 
    {
        for (j = 0; j < 3; j++) 
        {
            mas[i][j] = rand() % 100;
            sum = sum + mas[i][j];
            cout << mas[i][j] << "\t";
        }
        cout << endl;
    }

    cout << "sum: " << sum << endl;
    cin.get();
}
При запуске выведет, что-то типа этого$ g++ -pedantic -Wall -Wextra test.c
$ ./a.out 
97	40	3	
32	81	26	
30	15	6	
sum: 330 Я что-то написал, но оно на мой взгляд работает не правильно
А вообще неплохо-бы писать что именно работает неправильно в вопросе. Тут же не экстрасенсы