Почему цикл не выводи столбик?
Даже если исправить все синтаксические ошибки в коде, то всё равно выражениеarr[num - '0'] адресует область памяти перед массивом, а не сам массив, т.к. символ '0' имеет код 48.
int main() {
  int num, i, ar;
  int arr[10] = {0}; // читайте как правильно инициализировать массив
  for(num = 0; num < 10; ++num) {
    for(i = 0; i <= num; ++i) {
      // ++arr[num - '0'];  WTF?? - '0'
      ++arr[num];
    }
  }
  // for(ar = 0; ar < num: ++ar) опечатка? Как оно хоть что-то выдает, с такими ошибками?
  for(ar = 0; ar < num; ++ar)
    printf("%d\n", arr[ar]);
  return 0;
}
Если коротко - вы выделили память под массив но не задали начальные значения, и там оказались какие-то данные от предыдущей работы компьютера.
cppstudio.com/post/389