Estrutura em C para cadastro de carro, na estrutura serão cadastrados a marca, cor, ano, preço e um ID para identificar o carro; O algoritmo terá um menu com as opções de inserir um novo carro, exibir os cadastros podendo exibir por preço que recebe o preço e mostra os carros com aquela faixa de preço, exibir pela marca;
#include <stdio.h>
#define T 50/*NUMERO MAXIMO DE CADASTROS*/
/*ESTRUTURA DO CADASTRO*/
typedef struct{
        char marca[15], cor[10];
        int id, ano;
        float preco;
}CARRO;/*FINAL DA ESTRUTURA DO CADASTRO*/
int menu();/*MOSTRA MENU*/
CARRO inserir();
void exibir(CARRO c[], int t);
void exibirPreco(CARRO c[], int t, float preco);
void exibirMarca(CARRO c[], int t, char marca[]);
void exibirCarro(CARRO c[], int t, char marca[], int ano, char cor[]);
int main(){
    int n, cont = 0, ano;
    float preco;
    char marca[15], cor[10];
    printf("\nInforme o tamanho do Vetor de cadastro: ");
    scanf("%d",&n);
    
    CARRO car[n];/*EFETUAR O CADASTRO DO CLIENTE*/
    int opc, opChefe, opRelatorio,  processo;/*VARIÁVEIS PARA AUXILIAR OS MENUS E CASO RESOLVIDO*/
   
    do{
       opc = menu();/*MENU PRINCIPAL*/
       switch(opc){
           case 1:
             if(cont < n){
              
              car[cont] = inserir();
                 
                 cont++;
                 
              
             }
             else
                {
                 printf("\nEstrutura cheia");
                }
         getch();
           break;
           case 2:
             if(cont > 0){
               
              exibir(car, cont);
                  
                 
             }
             else
             {
              printf("\nEstrutura vazia");
             }
        getch();
            
           break;
           case 3:
             if(cont > 0){
              printf("\nInforme o preco do carro a ser exibido: ");
              scanf("%f",&preco);
              exibirPreco(car, cont, preco);
                  
                 
             }
             else
             {
              printf("\nEstrutura vazia");
             }
        getch();
            
           break;
           case 4:
             if(cont > 0){
              getchar();
              printf("\nInforme o Marca do carro a ser exibido: ");
              gets(marca);
              exibirMarca(car, cont, marca);
                  
                 
             }
             else
             {
              printf("\nEstrutura vazia");
             }
        getch();
            
           break;
           case 5:
            if(cont > 0){
              getchar();
              printf("\nInforme o Marca do carro a ser exibido: ");
              gets(marca);
              printf("\nInforme o Ano do carro a ser exibido: ");
              scanf("%d",&ano);
              getchar();
              printf("\nInforme o Cor do carro a ser exibido: ");
              gets(cor);
              exibirCarro(car, cont, marca, ano, cor);
                  
                 
             }
             else
             {
              printf("\nEstrutura vazia");
             }
        getch();
           break;
           case 0:
     break;
           default:
      printf("Opcao %d invalida",opc);
           break;
       }
    }while(opc != 0);
}
int menu(){//menu que vai retornar a opção escolhida;;
    int opc;
    system("cls");
    printf("1-Novo cadastro\n"
           "2-Imprimir Estrutura\n"
           "3-Imprimir por preco\n"
           "4-Imprimir por Marca\n"
           "5-Imprimir por Marca, Ano, Cor\n"
           "0-Sair\n");
    scanf("%d", &opc);
    return opc;
}
CARRO inserir(CARRO car){
 CARRO c;
 getchar();
 printf("Informe a marca do carro: ");
    gets(c.marca);
    printf("Informe a cor do carro: ");
    gets(c.cor);
    printf("Informe o ano do carro: ");
    scanf("%d",&c.ano);
    printf("Informe o preco do carro: ");
    scanf("%f", &c.preco);
 
 return c;
 
}
void exibir(CARRO c[], int t){
 int x;
 for(x = 0; x< t; x++){
  printf("Id: %d\n", x+1);
  printf("Marca: %s\n", c[x].marca);
  printf("Cor: %s\n", c[x].cor);
  printf("Ano: %d\n", c[x].ano);
  printf("Preco: %.2f\n", c[x].preco);
  printf("\n");
  
 }
}
void exibirPreco(CARRO c[], int t, float preco){
 int x;
 for(x = 0; x< t; x++){
  if(preco == c[x].preco){
   printf("Id: %d\n", x+1);
   printf("Marca: %s\n", c[x].marca);
   printf("Cor: %s\n", c[x].cor);
   printf("Ano: %d\n", c[x].ano);
   printf("\n");
  
  }
  
 }
}
void exibirMarca(CARRO c[], int t, char marca[]){
 int x;
 for(x = 0; x< t; x++){
  if(strcmp(c[x].marca, marca) == 0){
   printf("Id: %d\n", x+1);
   printf("Preco: %.2f\n", c[x].preco);
   printf("Cor: %s\n", c[x].cor);
   printf("Ano: %d\n", c[x].ano);
   printf("\n");
  
  }
  
 }
}
void exibirCarro(CARRO c[], int t, char marca[], int ano, char cor[]){
 int x;
 for(x = 0; x< t; x++){
  if(strcmp(c[x].marca, marca) == 0){
   if(ano == c[x].ano){
    if(strcmp(c[x].cor, cor) == 0){
     printf("Id: %d\n", x+1);
     printf("Preco: %.2f\n", c[x].preco);
     printf("\n");
    }
    
   }
  
  }
  
 }