Ho fatto un paio di prove e in sostanza va bene anche se manca l' "andare a capo" dopo ogni ciclo!
Il ciclo ottimale è così secondo me:

codice:
for (i = 1; i <= x; i++)
	{
		for (j = 1; j <= x; j++)
		{
			if (i == 1 || j == 1 || i == x || j == x)
				cout<<"* ";
			else	
				cout<<"  ";
		}
		cout<<endl;
	}
Nota che ho aggiunto uno spazio sia all'asterisco che allo spazio, in modo da fare un'incolonnamento regolare!

Funziona??