Не слишком меняя код (если вы имели в виду все угловые точки , это немного неясно):
for (int x = 0; x <= n; x += n)
for (int y = 0; y <= n; y += n)
for (int z = 0; z <= n; z += n)
Console.WriteLine("{0} {1} {2}", x, y, z);
Немного чище с помощью LINQ:
int n = 6;
var coords = from x in new[] { 0, n }
from y in new[] { 0, n }
from z in new[] { 0, n }
select new { x, y, z };
foreach(var coord in coords)
Console.WriteLine("{0} {1} {2}", coord.x, coord.y, coord.z);
Изменить после обновленного вопроса:
Если вам нужны координаты сторон, допустимые значения для одной координаты (x, y или z) равны 0 или n-1:
var coords = from x in new[] { 0, n-1 }
from y in Enumerable.Range(0, n)
from z in Enumerable.Range(0, n)
select new { x, y, z };
Сполосните и повторите для двух других, и у вас будет набор координат для всех 6 сторон.
Редактировать:
В приведенном выше решении есть перекрытия между различными сторонами (краевые точки), поэтому вам придется использовать объединение всех трех коллекций. Лучшее решение - запросить все координаты за один раз:
var coords = from x in Enumerable.Range(0, n)
from y in Enumerable.Range(0, n)
from z in Enumerable.Range(0, n)
where ( x == 0 || x==n-1 || y == 0 || y== n-1 || z == 0 || z== n-1)
select new { x, y, z };