Não entendi muito bem porque na resolução do exercício não é necessário as chaves? Outra coisa, eu abro as chaves logo após a condição (conforme o código abaixo), tem algum problema em fazer isso?
class Program
{
static void Main(string[] args)
{
double valorDaNotaFiscal = 1;
double imposto;
if (valorDaNotaFiscal < 1000) {
imposto = 0.02 * valorDaNotaFiscal;
} else if(valorDaNotaFiscal >= 1000 && valorDaNotaFiscal < 3000) {
imposto = 0.025 * valorDaNotaFiscal;
} else if(valorDaNotaFiscal >= 3000 && valorDaNotaFiscal < 7000) {
imposto = 0.028 * valorDaNotaFiscal;
} else {
imposto = 0.03 * valorDaNotaFiscal;
}
Console.WriteLine("Imposto a ser pago: " + imposto);
}
}