Construa uma estrutura para representar e armazenar os dados contidos na tabela abaixo. Faça um programa para preencher a estrutura com os dados e para, em seguida, imprimir tais dados.
Nome Avenida/Rua Bairro Compl. CEP Cidade UF Tel. 1 Tel. 2
João Av. Rio Branco 421 Centro Apto. 501 36.046-030 Juiz de Fora MG (32) 32365539 (32) 984157873
Carolina R. Miguel de Frias 125/A Icaraí - 36.240-000 Niterói RJ (21) 26135671 (21) 988569091
Jefferson R. São Clemente - Botafogo Bloco IV 22.250-040 Rio de Janeiro RJ - 991940921

Passo 1

O enunciado pede um programa em C que represente os dados da tabela (nome, endereço completo, CEP, cidade, UF e dois telefones) usando uma estrutura (struct), preencha três registros com os valores fornecidos e depois imprima esses registros na saída. O conteúdo envolve definição de struct, arrays de struct, inicialização de strings literais e uso de printf para exibição.

Passo 2

Todos os campos são textos (strings) de tamanho limitado. Vamos definir uma struct Pessoa com vetores de char para cada campo, escolhendo tamanhos seguros:
  • nome[50]
  • rua[50]
  • numero[10]
  • bairro[30]
  • complemento[20]
  • cep[10]
  • cidade[30]
  • uf[3]
  • tel1[20]
  • tel2[20]

Passo 3

Declaramos a struct e criamos um array de três elementos, inicializando cada campo com os literais correspondentes da tabela:
#include <stdio.h>

typedef struct {
 char nome[50];
 char rua[50];
 char numero[10];
 char bairro[30];
 char complemento[20];
 char cep[10];
 char cidade[30];
 char uf[3];
 char tel1[20];
 char tel2[20];
} Pessoa;

int main() {
 Pessoa pessoas[3] = {
 {
 "João",
 "Av. Rio Branco",
 "421",
 "Centro",
 "Apto. 501",
 "36.046-030",
 "Juiz de Fora",
 "MG",
 "(32) 32365539",
 "(32) 984157873"
 },
 {
 "Carolina",
 "R. Miguel de Frias",
 "125/A",
 "Icaraí",
 "-",
 "36.240-000",
 "Niterói",
 "RJ",
 "(21) 26135671",
 "(21) 988569091"
 },
 {
 "Jefferson",
 "R. São Clemente",
 "-",
 "Botafogo",
 "Bloco IV",
 "22.250-040",
 "Rio de Janeiro",
 "RJ",
 "-",
 "991940921"
 }
 };

Passo 4

Percorremos o array e imprimimos cada registro formatado:
 for (int i \(=0\); i < 3; i\(++\)) {
 printf("Registro %d:
", i\(+1\));
 printf(" Nome : %s
", pessoas[i].nome);
 printf(" Endereço : %s, %s, %s
",
 pessoas[i].rua, pessoas[i].numero, pessoas[i].bairro);
 printf(" Complemento: %s
", pessoas[i].complemento);
 printf(" CEP : %s
", pessoas[i].cep);
 printf(" Cidade/UF : %s/%s
", pessoas[i].cidade, pessoas[i].uf);
 printf(" Tel. 1 : %s
", pessoas[i].tel1);
 printf(" Tel. 2 : %s

", pessoas[i].tel2);
 }

 return 0;
}

Resposta

#include <stdio.h>

typedef struct {
 char nome[50];
 char rua[50];
 char numero[10];
 char bairro[30];
 char complemento[20];
 char cep[10];
 char cidade[30];
 char uf[3];
 char tel1[20];
 char tel2[20];
} Pessoa;

int main() {
 Pessoa pessoas[3] = {
 {
 "João",
 "Av. Rio Branco",
 "421",
 "Centro",
 "Apto. 501",
 "36.046-030",
 "Juiz de Fora",
 "MG",
 "(32) 32365539",
 "(32) 984157873"
 },
 {
 "Carolina",
 "R. Miguel de Frias",
 "125/A",
 "Icaraí",
 "-",
 "36.240-000",
 "Niterói",
 "RJ",
 "(21) 26135671",
 "(21) 988569091"
 },
 {
 "Jefferson",
 "R. São Clemente",
 "-",
 "Botafogo",
 "Bloco IV",
 "22.250-040",
 "Rio de Janeiro",
 "RJ",
 "-",
 "991940921"
 }
 };

 for (int i \(=0\); i < 3; i\(++\)) {
 printf("Registro %d:
", i\(+1\));
 printf(" Nome : %s
", pessoas[i].nome);
 printf(" Endereço : %s, %s, %s
",
 pessoas[i].rua, pessoas[i].numero, pessoas[i].bairro);
 printf(" Complemento: %s
", pessoas[i].complemento);
 printf(" CEP : %s
", pessoas[i].cep);
 printf(" Cidade/UF : %s/%s
", pessoas[i].cidade, pessoas[i].uf);
 printf(" Tel. 1 : %s
", pessoas[i].tel1);
 printf(" Tel. 2 : %s

", pessoas[i].tel2);
 }

 return 0;
}

Exercícios relacionados