O_O así no se comparan las cadenas, al menos no en C y en C++ si no mal recuerdo puedes usar el operador == siempre y cuando un objeto de tipo string (no char*) este de lado izquierdo. Para comparar arreglos de caracteres existen funciones como strncasecmp que compara 2 arreglos de caracteres, dado una longuitud e ignorando el case de los caracteres.
Lo segundo que vi fue que tienes problemas con el encoding pero es problema mas de la consola donde lo ejecutas. En mi caso añadi system("chcp 65001"); y le cambie el encoding de mi archivo a utf-8.
Código C:
Ver original#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main() {
//Declaración de variables
char lcTipoVehiculo[10], lcHoraAlta[3];
int liNumeroPasajeros;
//Entrada de datos
printf("Ingrese tipo de vehículo (Camión o Automóvil): "); scanf("%s", lcTipoVehiculo
);
printf("Número de pasajeros: "); scanf("%d", &liNumeroPasajeros
);
printf("Hora de alta congestión (Si o No): ");
if ((strncasecmp("SI", lcHoraAlta, 2) == 0) && (strncasecmp("AUTOMOVIL", lcTipoVehiculo, 9) == 0) && (liNumeroPasajeros >= 3))
{
}
else if ((strncasecmp("SI", lcHoraAlta, 3) == 0) && (strncasecmp("AUTOMOVIL", lcTipoVehiculo, 10) == 0) && (liNumeroPasajeros < 3))
{
printf("\nTarifa: EUR$30.\n");
}
return 0;
}