Scusa, ma l'indentazione è qualcosa di veramente osceno
Codice:
#include <stdio.h>
int main() {
int base = 3, altezza = 4;
while (altezza > 0) {
while (base > 0) {
printf("#");
base--;
}
printf("\n");
altezza--;
}
getchar();
}
Così è un attimo più leggibile (IMO).
Allora, il tuo problema è che ottieni il risultato corretto solo per la prima riga, e questo perchè non reimposti il valore di base.
Stampi # fino a che base non raggiunge lo 0, ed è corretto. Ma la seconda volta che arrivi al ciclo, a che valore ti trovi base? E' quello che ti aspetti?