Buscar

Linguagem C

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 89 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 89 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 89 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Kesede R Julio
kesedejulio@gmail.com
Apostila de
Linguagem 
C
Campinas – São Paulo - Brasil
Índice
1 - Introdução.....................................................................................................................4
1.1 Recomendações ao Aluno...........................................................................................4
 1.2 Ferramenta de programação: Linguagem C..............................................................4
 1.3 Estrutura de um Programa.........................................................................................6
 1.4 Inserção de Arquivos de Função...............................................................................7
 1.5 Tipos e Variáveis......................................................................................................8
 1.6 Operadores Básicos...................................................................................................9
 1.7 Exercícios Propostos...............................................................................................10
2 - Comandos de Decisão..................................................................................................13
2.1 Comando if/else........................................................................................................13
2.2 Switch........................................................................................................................15
2.3 Exercícios..................................................................................................................16
3 - Comandos de Repetição..............................................................................................19
3.1 Comando while.........................................................................................................19
3.2 Comando do-while....................................................................................................21
3.3 Teste de mesa............................................................................................................22
3.4 Exercícios..................................................................................................................26
4 - Vetor.............................................................................................................................29
4.1 Comando For.............................................................................................................30
4.2 Exercícios..................................................................................................................31
5 - String............................................................................................................................36
5.1 Exercícios..................................................................................................................39
6 - Matriz...........................................................................................................................42
6.1 Exercícios..................................................................................................................43
7 - Estruturas Heterogêneas............................................................................................46
 7.1 Exercícios.................................................................................................................48
8 - Funções.........................................................................................................................49
8.1 Passagem de Parâmetros por Valor e Retorno de Valor...........................................50
 8.2 Passagem de Parâmetros por Referência................................................................52
 8.3 Exercícios................................................................................................................53
9 - TAD – Tipo Abstrato de Dados..................................................................................55
 Exercícios.......................................................................................................................56
10 - Arquivo.......................................................................................................................57
10.1 Armazenamento em disco.......................................................................................57
10.2 Exercícios................................................................................................................69
11 - Allegro.......................................................................................................................71
11.1 Exercícios ..............................................................................................................72
Linguagem de Programação C 2
 Apêndices A – Algoritmos e Fluxogramas......................................................................75
 Apêndices B – Resumo de comandos e funções..............................................................82
 Apêndices C – Acesso a Portas de Comunicação...........................................................83
 Bibliografia........................................................................................................................88
Linguagem de Programação C 3
1 - Introdução
1.1Recomendações ao Aluno
O estudo de programação requer uma boa dose de 
concentração na teoria e dedicação na execução dos exercícios práticos. 
Por isso, é de fundamental importância a digitação de todos os 
exemplos e o desenvolvimento de todos os exercícios propostos. Suas 
dúvidas devem ser resolvidas assim que surgirem, não as adie, pois isto 
se tornará uma "bola de neve", fatal para a compreensão e motivação 
da continuidade do aprendizado. NÃO ESTUDE PARA A PROVA, estude 
sempre. O estudo deve ser feito periodicamente. Seja disciplinado em 
seus estudos para que você possa colher bons frutos. Leia a teoria, 
digite os exemplos, releia a teoria e encare os exercícios propostos. Não 
desanime nunca, persevere.
 1.2 Ferramenta de programação: Linguagem C
Para fazer nossos programas, usaremos a linguagem C. Para 
isso precisamos de um compilador (programa que interpretará nossas 
instruções) e de um IDE (Interface Development Environment, ou seja, 
um programa que permita escrever nossas instruções, corrigí-las e 
executá-las). Existe uma certa influência do compilador escolhido nas 
funções oferecidas pela linguagem. Por isso, esta apostila estará sendo 
direcionada para o C-Padrão ANSI (American National Standards 
Institute), pois suas funções são aceitas por todos os compiladores que 
seguem este padrão. O compilador escolhido pelo curso é o gcc, este 
compilador já está embutido no IDE que usaremos chamado Dev-c++ 
(ou Dev-cpp), o qual pode ser baixado gratuitamente através do site
http://kent.dl.sourceforge.net/sourceforge/dev-cpp/devcpp-4.9.9.2_setup.exe 
Através da digitação dos exemplos deste capítulo, você 
poderá praticar os recursos do ambiente de programação que você 
utilizará durante o curso, além de aprender alguns conceitos básicos da 
própria linguagem, como: estrutura de um programa, inserção de 
bibliotecas de função, tipo de variáveis, entrada e saída de dados em 
tela, operadores aritméticos básicos. Para começar a digitar um 
exemplo, abra o Dev que você acabou de instalar, selecione 
“Arquivo/Novo/Arquivo Fonte. Digite o programa linha-a-linha. Salve-o 
com a extensão .c (Arquivo/Salvar Como...). Agora você precisa 
compilar (verificar erros de escrita) o programa. Clique em 
“Executar/Compilar”. Caso o programa apresente algum erro, ele 
Linguagem de Programação C4
http://kent.dl.sourceforge.net/sourceforge/dev-cpp/devcpp-4.9.9.2_setup.exe
indicará a linha do erro através de um destaque colorido. Na aba 
“Compilador” (parte inferior do IDE) aparecerão a linha e a descrição do 
erro ocorrido. Tente corrigi-lo e compile novamente. O programa só 
poderá ser executado se todos os erros de compilação forem retirados 
do programa. Após a compilação sem erros, você poderá executar o 
programa. Clique em “Executar/Executar”. Aparecerá um console 
(janelinha preta) com a execução do programa em andamento.
Após conferir que o programa está correto, ou seja, fez 
exatamente o que você pediu que fizesse, você poderá abrir uma nova 
aba (Arquivo/Novo/Arquivo fonte) para digitar o próximo exemplo.
Segue abaixo 3 exemplos para serem digitados, compilados 
e executados. Nossos exemplos sempre seguirão este padrão: um 
enunciado dizendo o que deve ser feito, uma coluna com o número da 
linha (ou do bloco) do código, outra coluna para o código que deve ser 
digitado e outra com a descrição do que ele faz. Exercite digitando os 
exemplos abaixo.
Digite o Exemplo 1.1:- Faça um programa que escreva seu nome na tela.
1 #include <stdio.h> Permite o uso das funções printf().Não 
precisam ser incluídos para arquivos .c.
2 #include <conio.h> Permite o uso da função getch(). Não 
precisam ser incluídos para arquivos .c
3 int main(){ Abre a função principal do programa
4 printf("Kesede R Julio"); Imprime a mensagem na tela 
5 getch(); Pára a execução do programa
6 } Fecha a função principal
Digite o Exemplo 1.2:- Faça um programa que mostre uma mensagem de Olá personalizada. 
Permita que o usuário digite seu nome.
1 #include <stdio.h> Permite o uso das funções printf() e 
scanf().Não precisam ser incluídos para 
arquivos .c.
2 #include <conio.h> Permite o uso da função conio(). Não 
precisam ser incluídos para arquivos .c
3 int main(){ Abre a função principal do programa
 char nome[30]; Reserva um espaço na memória para 
guardar até 29 caracteres.
4 scanf(“%s”,nome); Recebe o nome do usuário e guarda na 
variável nome
5 printf("Ola, %s“, nome); Imprime a mensagem na tela 
substituindo o formato (%s) pelo 
conteúdo da variável nome
Linguagem de Programação C 5
6 getch(); Pára a execução do programa
7 } Fecha a função principal
Digite o Exemplo 1.3:- Um empregado da empresa Alfa tem dois vencimentos: salário e 
gratificação. Faça um programa que receba os vencimentos do empregado, e mostre o salário 
que ele irá receber. 
1 #include <stdio.h> Permite o uso das funções printf() e 
scanf().Não precisam ser incluídos para 
arquivos .c.
2 #include <conio.h> Permite o uso da função conio(). Não 
precisam ser incluídos para arquivos .c
3 int main(){ Abre a função principal do programa
4 float salario; Define espaço de memória chamado 
salario
5 float grat; Define espaço de memória chamado grat
6 float soma; Define espaço de memória chamado 
soma
7 printf(“Digite o salario: "); Imprime uma mensagem na tela
8 scanf(“%f”,&salario); Recebe o que o usuário digitou e guarda 
em salario
9 printf("\nDigite a gratificacao: "); Imprime uma mensagem na tela
10 scanf(“%f”,&grat); Recebe o que o usuário digitou e guarda 
em salario
11 soma = salario + grat; Soma o conteúdo de salário e grat e 
guarda em soma
12 printf("\n\nO resultado eh: %f", soma); Imprime a mensagem na tela 
substituindo o formato %f pelo conteúdo 
de soma
13 getch(); Pára a execução do programa
14 } Fecha a função principal
 1.3 Estrutura de um Programa
A estrutura de um programa C é, basicamente, realizada em 
funções. A princípio, não se escreve nenhum comando que não esteja 
dentro de uma função. No exemplo 1.1, a função começa na linha “int 
main(){” e termina em “}”. Por isso, a estrutura de programa 
apresentada é a própria estrutura da função main().
Linguagem de Programação C 6
<tipo de retorno> <nome da função> (<argumento>,...){
<comandos e funções>
}
Onde:
Tipo de retorno: é o tipo da informação que uma função 
pode retornar. Em nosso exemplo o retorno é “int”. Voce poderá 
encontrar o tipo de retorno da main() como “void”.
Nome da função: é o que identificará a função. Se houver 
apenas uma função (como no exemplo 1.1) no programa, esta deverá 
se chamar, obrigatoriamente, “main” (principal). 
Argumentos: são entradas de informações recebidas por 
outras funções. No exemplo 1.1, não há entrada de argumentos.
Comandos e funções: é a própria lógica do programa. 
Comandos, chamada de funções pré-definidas, chamada de funções 
escritas pelo programador, colocadas em uma seqüência lógica para ser 
obedecida pelo compilador.
 1.4 Inserção de Arquivos de Função
São arquivos texto contendo os cabeçalhos das funções 
fornecidas pelo próprio compilador. Para usar qualquer função pré-
definida, você deve declarar o nome do arquivo entre aspas, através da 
declaração “include” precedida pelo caractere “#”. No Apêndice A, 
listamos o nome de alguns desses arquivos e suas respectivas funções. 
Em nosso exemplo utilizamos apenas o arquivo “stdio.h”, que contem 
as funções de entrada e saída de dados: printf() e scanf(). Devido a 
importância destas funções replicamos aqui uma explicação de como 
usar estas funções.
printf():- função que permite a saída de dados para o 
usuário.
Sintaxe simplificada: 
printf(“<formatação da saída>”, <variavel>,...<variavel>);
Onde:
“formatação da saída” é tudo que queremos escrever na tela 
para o usuário. Quando quisermos mostrar conteúdo de variáveis no 
meio do texto, colocamos os formatos dos tipos (vide tabela abaixo), 
que serão substituídos pelas variáveis.
“variável” é o nome da variável que queremos mostrar ao 
usuário. Seu conteúdo será substituído nos formatos de tipo colocados 
na formatação da saída.
Exemplo:
printf(“Resultado da soma: %d.”, soma);
Caso a variável “soma” seja 10, a mensagem mostrada para 
Linguagem de Programação C 7
o usuário será: “Resultado da soma: 10.” (sem aspas).
scanf():- função que permite a digitação de dados pelo 
usuário.
Sintaxe simplificada:
scanf(“<formatação da entrada>”, <endereço da 
variavel>);
Onde:
“formatação da entrada” é apenas o formato do tipo (vide 
tabela abaixo) da variável onde será alocada a informação digitada pelo 
usuário.
“endereço da variável” é o endereço de onde será alocada a 
informação. Para informar o endereço de uma variável, basta colocar o 
caractere “&” antes do nome da variável.
Exemplo:
scanf(“%f”, &valor);
Neste exemplo, o programa será interrompido para que o 
usuário digite uma informação, que deverá ser um número real. Este 
número será alocado em um espaço de memória chamado valor, 
declarado previamente como float (conjunto dos números reais).
Tanto para o printf() como para o scanf(), temos que usar 
formatos para as variáveis que desejamos digitar (entrada) ou mostrar 
(saída). Estes formatos correspondem ao tipo de cada variável. A tabela 
abaixo mostra os tipos mais comuns.
Formato Tipo
%d, %i Inteiro
%f Float
%c Caractere
%lf Double
%s Cadeia de caracteres (string)
 1.5 Tipos e Variáveis
Sempre que preciso manipular alguma informação, tenho 
que reservar um espaço para armazená-la na memória, determinando 
também o tipo e tamanho da informação a ser armazenada. Os tipos 
básicos, são: 
Linguagem de Programação C 8
int: 2 bytes com sinal (4 bytes para computadores 32bits) – 
conjunto dos númerosinteiros – Ex.: 5, 37,1005
char: 1 byte com sinal – qualquer caractere – Ex.: 'a', 'F', ';'
float: 4 bytes com sinal – conjunto dos números reais – Ex.: 
5.1, 89.3
double: 8 bytes com sinal - conjunto dos números reais – Ex.: 
5.1, 89.3
Assim: float salario;
Reserva um espaço de memória chamado “salario” do tipo 
float (isso já define o tamanho e o tipo da informação), na memória.
 1.6 Operadores Básicos
Existem 4 tipos de operadores: Aritmético, Lógico, 
Condicional, bit-a-bit. A tabela abaixo mostra estes operadores.
Aritméticos
Símbolo Descrição
+ Soma
- Subtração
* Multiplicação
/ Divisão
% Resto da divisão
++ Incremento
-- Decremento
Lógicos
== Igualdade
!= Diferente
< Menor
<= Menor ou igual
> Maior
>= Maior ou igual
Condicionais
&& E
|| Ou
Linguagem de Programação C 9
Bit-a-bit
& E
| Ou
 1.7 Exercícios Propostos
1.7.1 Faça um programa que imprima “Ola” na tela.
1.7.2 Faça um programa que imprima seu nome na tela.
1.7.3 Faça um programa que imprima um nome, escolhido pelo 
usuário, na tela. Você deverá permitir que o usuário digite (função 
scanf()) este nome, definindo uma variável para guardar este 
nome na memória.
1.7.4 Faça um programa que receba o nome e a idade do usuário 
e depois mostre-os na tela. Devem ser definidas duas variáveis 
para guardar nome e idade na memória.
1.7.5 Faça um programa que receba o nome do usuário, quantas 
horas ele trabalhou no mês e o valor da sua hora trabalhada. 
Mostre seu nome e o valor do seu salário. Neste caso, você deve 
reservar variáveis para o nome, quant. de horas trabalhadas, valor 
da hora e para o salario (que será calculado).
1.7.6 Os funcionários da empresa “ToadaGoo”, recebem para 
cada hora extra, 50% a mais do valor da hora normal. Faça um 
programa que receba o nome de um funcionário, quantas horas 
normais e quantas horas extras ele trabalhou, assim como o valor 
da hora normal. Mostre, no final do programa, o salario líquido 
deste funcionário.
1.7.7 Faça um programa que receba do usuário um numero 
qualquer e mostre o quadrado deste número.
1.7.8 Faça um programa que permita que o usuário digite dois 
valores inteiros. Multiplique estes valores guardando o produto em 
uma terceira variável. Mostre o resultado da multiplicação.
1.7.9 Faça um programa de uma calculadora simples que permita 
que o usuário digite dois valores inteiros. A calculadora, logo após 
a digitação dos números, deverá mostrar o valor da soma, da 
subtração, da multiplicação e da divisão dos valores digitados.
1.7.10 Faça um programa que calcule a media da temperatura 
ocorrida em um dia. O usuário deverá digitar 5 temperaturas e o 
programa deverá mostrar em tela a média das temperaturas.
1.7.11 A tabela abaixo mostra o valor do câmbio de moedas 
estrangeiras para cada real. Faça um programa onde o usuário 
entre com uma quantia em real e o programa mostre este valor 
em outras moedas.
Linguagem de Programação C 10
Moeda Valor (R$)
1 Dolar 1,9
1 Euro 3,1
1.7.10 Faça um programa que calcule e mostre o salário líquido 
de um funcionário. O programa deve receber o salário bruto e 
considerar que todo funcionário tem um desconto de 10% de IR 
no salário bruto.
1.7.11Para calcular a área de um retângulo, podemos multiplicar 
sua largura pelo seu comprimento. Permita que o usuário entre 
com a largura e comprimento de um retângulo qualquer e mostre 
sua área.
1.7.12Supondo que um engenheiro deseja saber qual a distância 
entre 2 pontos em um terreno. Porém ele sabe apenas as 
coordenadas (x,y) de cada ponto. Faça um programa que resolva 
este problema para o engenheiro, sabendo que o cálculo da 
distância é dado por:
d= x2−x12 y2− y12
Dica: Use sqrt() (math.h) para calcular a raiz quadrada.
1.7.13 Uma empresa de engenharia vai lotear uma fazenda e 
deseja dividi-la em 3 categorias (A, B e C) de acordo com o 
tamanho do lote. Toda a fazenda será dividido da seguinte forma: 
20% para a Categoria A, 30% para a Categoria B e 50% para a 
Categoria C. A Categoria A terá 4 lotes, a Categoria B terá 10 
lotes e a Categoria C terá 20 lotes. Você foi designado para 
desenvolver um programa que mostre a área de cada lote, das 
categorias A, B e C.. Receba do usuário a área total da fazenda, e 
para um bom entendimento do problema, considere a fazenda 
com formato retangular. 
1.7.14 Uma empresa de transporte rodoviário precisa saber o 
tempo exato que um ônibus demorou para sair da sua cidade 
origem e chegar na sua cidade destino. Para isso, pediu que voce 
fizesse um programa (faça primeiro o algoritmo e o fluxograma) 
que recebesse o horário de saída (HH:MM:SS) e o horário de 
chegada (HH:MM:SS), e mostrasse o tempo exato gasto na 
viagem. Exemplo:
Horário de Saída : 14:28:32
Horário de Chegada: 17:47:52
Tempo de Viagem : 03:19:20
Linguagem de Programação C 11
Dica: Receba as entradas em variáveis inteiras separadas. 
Converta todas para segundos, execute a diferença e converta o 
resultado para horas, minutos e segundos.
Linguagem de Programação C 12
2 - Comandos de Decisão
2.1Comando if/else
Definição: Usado para executar um ou mais comandos 
dependentes de condições.
Sintaxe simplificada:
if (<condição> &&/|| <condição> ...){
<comandos e/ou funções>
}
else{
<comandos e/ou funções>
}
A palavra “if” é obrigatória. Tudo que estiver entre “<” e “>” 
deve ser substituído pela informação pertinente. Os símbolos “<” e “>” 
não devem ser digitados.
O else é usado quando queremos executar algum comando 
caso a condição do if seja falsa. Ele é opcional.
O “{” e “}” pode ser dispensado quando temos apenas uma 
linha de código dentro da estrutura de decisão, porém caso você 
sempre use, nunca errará, terá uma regra a menos para guardar e terá 
seu programa mais organizado (esta é apenas minha opinião).
O if pode ser usado com duas ou mais condições amarradas 
com um “e lógico” (&&) ou com um “ou lógico” (||). Nestas condições 
cuidado com o uso do eles, pois ele representará a inversão do 
operador condicional e do operador lógico.
Abaixo apresentamos alguns exemplos.
Digite o Exemplo 2.1:- Entre com o valor da nota de uma determinada disciplina de um aluno e 
mostre a mensagem de “Aprovado”, se sua nota for maior ou igual a 6, ou “Reprovado”, se sua 
nota for menor que 6.
1 #include <stdio.h> Permite o uso das funções printf() e scanf()
2 #include <conio.h> Permite o uso da função getch()
3 int main(){ Abre a função principal do programa
4 float nota; Define espaço de memória chamado nota
Linguagem de Programação C 13
5 scanf(“%f”, &nota); Recebe a nota do usuário
6 if (nota>=6){ Verifica se nota é maior ou igual a 6
7 printf(“Aprovado”); Caso seja, imprime mensagem na tela
8 } Fecha o if
9 else{ Verifica se nota é menor que 6 (caso contrário do if)
10 printf(“Reprovado”); Caso seja menor que 6. imprime mensagem
11 } Fecha else
12 getch(); Pára a execução do programa
13 } Fecha função principal
No exemplo 2.1, o programa recebe do usuário um valor e 
atribui este valor à variável nota, depois disso, testa se o valor digitado 
é maior ou igual a 6, se for verdadeira esta condição, o programa 
mostra “Aprovado” na tela, caso contrário, mostra “Reprovado”. Note 
que apenas uma das mensagens será mostrada, pois o “else” é a 
negação da condição.
Digite o Exemplo 2.2:- Entre com o valor da nota de uma determinada disciplina de um aluno e 
mostre a mensagem de “Aprovado”, se sua nota for maior ou igual a 6, “Exame” se sua notaestiver entre 4 e 5,9 ou “Reprovado”, se sua nota for menor que 4.
1 #include <stdio.h> Permite o uso das funções printf() e scanf()
2 #include <conio.h> Permite o uso da função getch()
3 int main(){ Abre a função principal do programa
4 float nota; Define espaço de memória chamado nota
5 scanf(“%f”, &nota); Recebe a nota do usuário
6 if (nota>=6){ Verifica se nota é maior ou igual a 6
7 printf(“Aprovado”); Caso seja, imprime mensagem
8 } Fecha o if
9 else{ Verifica se nota é menor que 6 (caso contrário do if)
 if (nota>=4){ Verifica se a nota é maior que 4
 printf(“Exame”); Caso seja, imprime mensagem
 } Fecha o if
 else{ Verifica se nota é menor que 4 (caso contrário do if)
10 printf(“Reprovado”); Caso seja menor que 4, imprime mensagem
11 } Fecha else
 } Fecha else
12 getch(); Pára a execução do programa
13 } Fecha função principal
No exemplo 2.2, o programa recebe do usuário um valor e atribui este 
valor à variável nota, depois disso, testa se o valor digitado é maior ou 
igual a 6, se for verdadeira esta condição, o programa mostra 
Linguagem de Programação C 14
“Aprovado” na tela, caso contrário, testa se a nota é maior que 4, caso 
seja mostra “Exame” na tela, caso contrário, mostra “Reprovado”. 
2.2Switch
Definição: Usado para executar um ou mais comandos caso 
o conteúdo da variável testada seja igual ao valor de algum dos casos.
Sintaxe simplificada:
switch (<variavel testada>){
case <valor>:
<comandos e funções>
break;
case <valor>:
<comandos e funções>
break;
default:
<comandos e funções>
}
Como última função para cada caso, utilizamos a função 
"break" para que o programa não precise testar o restante das 
condições.
O default (similar ao else do if) é usado quando queremos 
executar algum comando, caso o valor da variável seja diferente de 
todos os valores testados. Ele é opcional.
Podemos substituir qualquer switch por if´s, porém nem 
todo if pode ser substituído por switch´s. Isto acontece porque o switch 
não verifica intervalos de valores, apenas igualdade.
O switch organiza melhor o programa quando temos uma 
determinada variável para ser verificada sua igualdade com diversos 
valores.
Digite o exemplo 2.1: Faça um programa que permite que o usuário entre com o código do 
produto e o programa mostre o nome deste produto. Os produtos são: cod. 1 – cd, cod. 2 – livro, 
cod. 3 – revista, cod. 4 – jornal.
1 #include <stdio.h> Permite o uso das funções printf() e scanf()
2 #include <conio.h> Permite o uso da função getch()
3 int main(){ Abre a função principal do programa
4 int codigo; Define espaço de memória chamado salario
5 printf(“Digite o codigo: ”); Mostra mensagem na tela
6 scanf(“%i”,&codigo); Recebe o valor do código do usuário
7 switch (codigo){ Abre o comando switch para verificação do 
código
Linguagem de Programação C 15
Digite o exemplo 2.1: Faça um programa que permite que o usuário entre com o código do 
produto e o programa mostre o nome deste produto. Os produtos são: cod. 1 – cd, cod. 2 – livro, 
cod. 3 – revista, cod. 4 – jornal.
8 case 1: Verifica se o código é igual a 1
9 printf(“CD”); Caso seja, mostra mensagem
10 break; Sai o switch
11 case 2: Verifica se o código é igual a 2
12 printf(“Livro”); Caso seja, mostra mensagem
13 break; Sai o switch
14 case 3: Verifica se o código é igual a 3
15 printf(“Revista”); Caso seja, mostra mensagem
16 break; Sai o switch
17 case 4: Verifica se o código é igual a 4
18 printf(“Jornal”); Caso seja, mostra mensagem
19 break; Sai o switch
20 default: Verifica se é diferente de todos os cases
21 printf(“Opção Inválida”); Caso seja, mostra mensagem
22 } Fecha switch()
23 getch(); Pára execução do programa
24 } Fecha função principal
2.3Exercícios
Switch
2.3.1Faça um programa que permita que o usuário entre com um 
numero num intervalo de 0 a 6, equivalendo cada um deles a um 
dia da semana (domingo = 0). Imprima o dia da semana 
equivalente ao numero digitado pelo usuário. Caso o usuário 
digite um numero invalido, dê uma mensagem informando-o. Use 
o comando "switch" para os testes.
2.3.2 Em uma empresa de saneamento básico os serviços 
recebem uma numeração de acordo com sua natureza: 1 para 
troca de tubulação, 2 para verificação de problemas de 
vazamento, 3 para ligação de água e esgoto. De acordo com o 
problema, o serviço é agendado para um determinado horário do 
dia. 8h da manhã são agendados os serviços 1, para às 11h são 
agendados os serviços 2 e para às 15h são agendados os serviços 
3. Você, como programador de sistemas da empresa, foi 
Linguagem de Programação C 16
designado para fazer um programa que agende os serviços em 
seus respectivos horários. O programa deve receber o numero do 
serviço e mostrar o seu horário de agendamento. Use o comando 
switch, com mensagem de erro caso o usuário digite um numero 
invalido. Faça o algoritmo e o fluxograma antes do programa. 
If-else
2.3.3Permita que o usuário digite um valor inteiro, teste se este 
valor é maior que 10, caso seja, imprima “Maior que 10”; caso 
contrário, imprima “Menor ou igual a 10”.
2.3.4Uma empresa não pretende contratar candidatos com mais 
de 40 anos. Faça um programa que receba a idade do candidato e 
mostre uma mensagem se ele está apto ou não para a vaga.
2.3.5Um restaurante oferece um desconto de 7% para todos os 
clientes que gastarem mais que R$ 250,00 no fechamento da 
conta. Faça um programa que pergunte ao usuário qual o valor da 
conta e mostre o valor real a ser pago.
2.3.6Uma empresa deseja bonificar seus funcionários de acordo 
com a quantidade de vendas do mês. O gerente lhe entregou 
uma tabela para que você faça um programa que mostre o valor 
das bonificações.
Valor Vendido (R$) Bonificação (%)
< 1.500,00 5
Entre 1.500,00 e 3.500,00 7
> 3.500,00 10
2.3.7 O IMC (Índice de Massa Corpórea) é um bom sinalizador 
para o controle do nosso peso. A fórmula é simples:
IMC = peso / (altura2)
através da tabela abaixo podemos saber se precisamos 
emagrecer, engordar ou manter o nosso peso.
IMC Situação
Abaixo de 20 (exclusive) Abaixo do peso normal
Entre 20 e 24,9 (inclusive) Peso normal
Entre 25 e 35 (inclusive) Acima do peso normal
Acima de 35 (exclusive) Obeso 
Linguagem de Programação C 17
Faça um programa que receba a altura e o peso do usuário. De 
acordo com a fórmula do IMC, mostre a situação do usuário.
2.3.8 Dados 3 valores representando os lados de um triângulo, 
verifique se este triângulo é escaleno (3 lados diferentes), 
isósceles (2 lados iguais) ou eqüilátero (3 lados iguais).
2.3.9 Faça um programa que receba 3 valores correspondentes 
aos lados de um triângulo. Verifique e dê mensagens para as 
seguintes condições, sendo A o maior lado:
Se A >= B + C Nenhum triangulo é formado 
Se A2 = B2 + C2 Um triangulo retangulo é formado
Se A2 > B2 + C2 Um triangulo obtusangulo é formado
Se A2 < B2 + C2 Um triangulo acutangulo é formado
Faça o algoritmo e o fluxograma antes do programa.
2.3.10 Dados 3 valores quaisquer, verifique se eles podem ser 
lados de um triângulo. Lembre que, em um triângulo, a soma de 
dois lados deve ser maior que o maior lado.
2.3.11 Receba 3 números inteiros e distintos, a partir do usuário, e 
mostre-os em ordem crescente.
2.3.12 Faça um programa que, leia os 3 números, a partir do 
usuário,correspondentes aos coeficientes de uma equação do 2o 
grau. Através de Bascara, calcule, se possível, as raízes da 
equação, realizando todas as consistências necessárias. Faça o 
algoritmo e o fluxograma antes do programa.
Linguagem de Programação C 18
3 - Comandos de Repetição
3.1Comando while
Sintaxe simplificada:
while (<condição>){
 <comandos e funções>
}
Este comando executa os comandos e funções internos a ele 
enquanto a condição for verdadeira. Diferente do if que, caso a 
condição seja verdadeira, executa os comandos internos e segue 
adiante, o while volta a executar a primeira linha do laço, ou seja, o 
teste da condição. Ele continua testando e executando os comandos 
internos até que a condição seja falsa. Existem outros comandos de 
looping (for e do-while) , porém se você souber bem o while poderá 
usá-lo em qualquer situação. 
Digite o Exemplo 3.1:- Mostre os números inteiros de 1 a 100.
1 #include <stdio.h> Permite o uso das funções printf() e 
scanf()
2 #include <conio.h> Permite o uso da função getch()
3 int main(){ Abre a função principal do programa
4 int i=1; (declaração e inicialização da variável i) 
Define espaço de memória chamado i e 
atribui 1 p/ este espaço
5 printf(“Imprimindo os números de 1 a 100”); Imprime mensagem na tela
6 while (i<=100){ Verifica se i é menor ou igual a 100
7 printf(“%i\n”, i); Imprime o conteúdo da variável i
8 i=i+1; (contador) Soma 1 em i e atribui o 
resultado no próprio i 
9 } Fecha o while
10 getch(); Páara a execução do programa
11 } Fecha a função principal
No exemplo 3.1, a variável i é inicializada com o valor 1 e 
incrementada dentro do laço do while. A condição do comando while 
testa se o valor de i é menor ou igual a 100 e enquanto isso for 
Linguagem de Programação C 19
verdade, a variável é mostrada na tela. Ao comando “i=i+1” 
chamamos de contador. O contador é um conceito importante na 
programação, pois através dele podemos alterar o valor de uma 
variável através de um “passo” determinado. Podemos ter contadores 
que somem com passo de 1 em 1 (como no caso do exemplo), de 2 em 
2, de 5 em 5, ou seja, como nos convier. Uma variação deste conceito é 
o acumulador. A diferença é que, ao invés de contarmos 
(acumularmos) constantes numéricas (1, 2, 3 etc), acumulamos 
variáveis, como: salários, notas, idades, prestações etc.. O exemplo 3.2 
mostra o uso de um contador (cont) e de um acumulador (somaid).
Digite o Exemplo 3.2:- Faça um programa que receba a idade de 10 alunos de uma academia e 
mostre a média das idades.
1 #include <stdio.h> Permite o uso das funções printf() e 
scanf()
2 #include <conio.h> Permite o uso da função getch()
3 int main(){ Abre a função principal do programa
4 int idade, cont=1, somaid=0; Define espaços de memória inteiros 
para guardar as idades, o contador 
(cont) e o acumulador (somaid). O 
contador e acumulador devem ser 
inicializados.
5 float media; Define espaço de memória float para 
guardar a media
6 printf(“Digite as idades\n”); Imprime mensagem na tela
7 while (cont<=10){ Verifica se o contador é menor ou 
igual a 10
8 scanf(“%i”, &idade); Recebe a idade do usuário e guarda 
seu valor na variável “idade”
9 somaid=somaid+idade; (acumulador) Soma a idade ao 
acumulador (que vale zero da 
primeira vez) e guarda o resultado 
no próprio acumulador. Na próxima 
iteração o acumulador já estará 
atualizado.
10 cont=cont+1; (contador) Soma 1 ao contador 
(que vale 1 da primeira vez) e 
guarda o resultado no próprio 
contador. Na próxima iteração o 
contador já estará atualizado.
11 } Fecha o while
Linguagem de Programação C 20
Digite o Exemplo 3.2:- Faça um programa que receba a idade de 10 alunos de uma academia e 
mostre a média das idades.
12 media=somaid/10; Calcula a media.
13 printf(“A media eh %f”,media); Mostra a media na tela
14 getch(); Páara a execução do programa
15 } Fecha a função principal
3.2Comando do-while
Assim como o comando while, este comando permite a 
execução de comandos enquanto uma determinada condição for 
verdadeira. Porém, a diferença é que a condição é testada no final do 
bloco de comando e não no início, permitindo assim, que pelo menos 
uma vez, os comandos internos ao bloco de comandos sejam 
executados, diferentemente do while, onde existe a possibilidade dos 
comandos internos ao bloco de comandos nunca serem executados, 
caso a condição seja falsa logo no primeiro teste.
Digite o Exemplo 3.3:- Faça um programa que receba o nome, a quantidade de horas 
trabalhadas e o valor da hora de vários funcionários de uma empresa. Mostre, para cada 
funcionário, o seu salário. Pergunte ao usuário se ele deseja continuar digitando dados de mais 
funcionários.
1 #include <stdio.h> Permite o uso das funções printf() e 
scanf()
2 #include <conio.h> Permite o uso da função getch()
3 int main(){ Abre a função principal do programa
4 char nome[30], resp; Declara a variável nome do tipo string 
de 30 caracteres e a variável resp com 
1 caractere
5 float horas, valor_h, sal; Declara variaveis do tipo float
6 do{ Abre o do-while
7 printf(“Nome:”); Imprime mensagem (rotulo do que 
será digitado)
8 fflush(stdin); Limpa buffer do teclado
9 gets(nome); Recebe string toda do usuário
10 printf(“Horas trabalhadas:”); Imprime mensagem (rotulo do que 
será digitado)
11 scanf(“%f”, &horas); Recebe horas trabalhadas do usuário
12 printf(“Valor hora:”); Imprime mensagem (rotulo do que 
será digitado)
Linguagem de Programação C 21
13 scanf(“%f”,&valor_h); Recebe valor das horas trabalhadas do 
usuário
14 sal=horas * valor_h; Multiplica quant de horas pelo valor e 
guarda na variavel sal
15 printf(“Salario : %.2f\n”, sal); Imprime a variavel sal
16 printf(“Deseja continuar <s/n>?”); Pergunta ao usuário se deseja 
continuar
17 fflush(stdin); Limpa buffer do teclado
18 resp=toupper(getchar()); Recebe a resposta do usuário e 
converte sua resposta para maúscula
19 }while (resp=='S'); Verifica se a resposta é igual a S, caso 
seja, volta no “do” para executar os 
comandos novamente
20 } Fecha a função principal
A função gets() é utilizada para receber strings (cadeia de 
caracteres), a partir do usuário.
Muitas vezes, quando utilizamos funções de entrada para 
receber caracteres (getchar()) ou strings (gets()), alguns códigos 
permanecem na memória (buffer) do teclado. Utilizamos a função 
fflush() para limpar este buffer e permitir que o programa pare para 
receber novas informações.
A função toupper() transforma qualquer letra em letra 
maúscula. Quando usamos a função getchar() como parâmetro, apenas 
deixamos de usar uma variável para receber a eventual letra minuscula 
digitada pelo usuário..
3.3Teste de mesa
Este tipo de teste é muito útil quando queremos verificar se 
a lógica do nosso programa está correta. A compilação de um programa 
verifica apenas erros de sintaxe, o que não significa que o nosso 
programa funcione conforme planejamos que funcionasse. Bem, um 
teste de mesa é tarefa simples, porém requer cuidados. Você assumirá 
o papel do compilador quando da execução do programa, por isso não 
podemos perder de vista a linha do programa que estásendo executada 
em cada momento.
Começamos um teste de mesa montando uma única tabela 
contendo uma coluna para cada variável declarada e mais uma coluna 
para o que for escrito na tela, de acordo com o modelo abaixo. Os 
valores das variáveis estarão sendo colocadas na tabela a medida que o 
programa for requerendo. Assim como também, as mensagens que 
serão impressas na tela. Sempre que colocamos um novo valor em uma 
variável devemos riscar o anterior, dizendo a nós mesmos que o valor 
Linguagem de Programação C 22
mudou. Nunca apague os valores apenas risque-os. 
Teste de mesa
Memória
<var. 1> <var. 2> <var. 3> <var. 4>
Tela
<val. 1> <val. 4> <val. 5> <val. 7> <mensagem 1>
<val. 2> <val. 6> <val. 8> <mensagem 2>
<val. 3>
Vamos agora verificar como acontece na prática. Para isso, 
usaremos a lógica do exemplo 3.3.4, modificado para 5 funcionários. 
Reproduziremos a tabela a cada passo para que você entenda melhor.
1 int idade, somaid, qtd; 
2 qtd=1;
3 somaid=0;
4 while (qtd<=5){
5 scanf("%i",&idade);
6 somaid=somaid+idade;
7 qtd=qtd+1;
8 }
9 printf("A soma das idades eh %i", somaid);
Linha 1 – cria a coluna das variáveis e a da 
tela.
Teste de mesa
Memória
Idade somaid qtd
tela
Linha 2 e 3 – atribui 1 e 0 para as respectivas 
variáveis.
Teste de mesa
Memória
Idade somaid qtd
tela
0 1
linha 4 – Verifica se qtd é menor ou igual a 
5. O retorno é verdadeiro. Isto não gera 
alteração na tabela, apenas define que 
executaremos a linha 5. 
linha 5 – Simulamos um valor digitado pelo 
usuário.
Teste de mesa
Memória
Idade somaid qtd
tela
20 0 1
Linha 6 – soma idade a somaid e guarda em 
somaid
Teste de mesa
Memória tela
Linguagem de Programação C 23
Idade somaid qtd
20 0
20
1
Linha 7 – soma 1 em qtd
Teste de mesa
Memória
Idade somaid qtd
tela
20 0
20
1
2
Linha 8 – fecha o looping e volta para linha 
4
linha 4 – Verifica se qtd é menor ou igual a 
5. O retorno é verdadeiro. Isto não gera 
alteração na tabela, apenas define que 
executaremos a linha 5.
linha 5 – Simulamos um valor digitado pelo 
usuário.
Teste de mesa
Memória
Idade somaid qtd
tela
20
25
0
20
1
2
Linha 6 – soma idade a somaid e guarda em 
somaid
Teste de mesa
Memória
Idade somaid qtd
tela
20
25
0
20
45
1
2
Linha 7 – soma 1 em qtd
Teste de mesa
Memória
Idade somaid qtd
tela
20
25
0
20
45
1
2
3
Linha 8 – fecha o looping e volta para linha 
4
linha 4 – Verifica se qtd é menor ou igual a 
5. O retorno é verdadeiro. Isto não gera 
alteração na tabela, apenas define que 
executaremos a linha 5.
linha 5 – Simulamos um valor digitado pelo 
usuário.
Teste de mesa
Memória
Idade somaid qtd
tela
20
25
23
0
20
45
1
2
3
Linha 6 – soma idade a somaid e guarda em 
somaid
Teste de mesa
Memória
Idade somaid qtd
tela
20
25
23
0
20
45
68
1
2
3
Linha 7 – soma 1 em qtd
Teste de mesa
Memória
Idade somaid qtd
tela
20
25
23
0
20
45
68
1
2
3
4
Linha 8 – fecha o looping e volta para linha 
4
linha 4 – Verifica se qtd é menor ou igual a 
5. O retorno é verdadeiro. Isto não gera 
alteração na tabela, apenas define que 
executaremos a linha 5.
linha 5 – Simulamos um valor digitado pelo 
usuário.
Linguagem de Programação C 24
Teste de mesa
Memória
Idade somaid qtd
tela
20
25
23
30
0
20
45
68
1
2
3
4
Linha 6 – soma idade a somaid e guarda em 
somaid
Teste de mesa
Memória
Idade somaid qtd
tela
20
25
23
30
0
20
45
68
98
1
2
3
4
Linha 7 – soma 1 em qtd
Teste de mesa
Memória
Idade somaid qtd
tela
20
25
23
30
0
20
45
68
98
1
2
3
4
5
Linha 8 – fecha o looping e volta para linha 
4
linha 4 – Verifica se qtd é menor ou igual a 
5. O retorno é verdadeiro. Isto não gera 
alteração na tabela, apenas define que 
executaremos a linha 5.
linha 5 – Simulamos um valor digitado pelo 
usuário.
Teste de mesa
Memória
Idade somaid qtd
tela
20
25
23
30
28
0
20
45
68
98
1
2
3
4
5
Linha 6 – soma idade a somaid e guarda em 
somaid
Teste de mesa
Memória
Idade somaid qtd
tela
20
25
23
30
28
0
20
45
68
98
126
1
2
3
4
5
Linha 7 – soma 1 em qtd
Teste de mesa
Memória
Idade somaid qtd
tela
20
25
23
30
28
0
20
45
68
98
126
1
2
3
4
5
6
Linha 8 – fecha o looping e volta para linha 
4
linha 4 – Verifica se qtd é menor ou igual a 
5. O retorno é falso. Isto não gera alteração 
na tabela, apenas define que executaremos a 
linha 9.
linha 9 – Imprime a somatória na tela.
Teste de mesa
Memória
Idade somaid qtd
tela
Linguagem de Programação C 25
20
25
23
30
28
0
20
45
68
98
126
1
2
3
4
5
6
A soma das idades eh 
126
Aprenda a fazer teste de mesa em todos os programas que 
desenvolver, isto fará com que você se certifique que seu programa 
está correto e o ajudará a solidificar o aprendizado lógico.
3.4Exercícios
3.4.1Imprima os 10 primeiros números inteiros na tela.
3.4.2Imprima o quadrado dos 10 primeiros números inteiros.
3.4.3Faça um programa que permita que o usuário digite a idade 
de 10 funcionários.
3.4.4Faça um programa que permita que o usuário digite a idade 
de 10 funcionários e após a digitação, mostre a somatória das 
idades. A soma das idades deve ser feita dentro do looping e 
apenas a exibição fora dele.
3.4.5Um usuário tem em suas mãos 100 Notas Fiscais. Faça um 
programa que receba seus valores e calcule o total de todas as 
Notas.
3.4.6 Implementar um programa que imprima a tabuada de um 
número digitado pelo usuário.
3.4.7 Faça um programa que calcule e mostre o quadrado de um 
número N inteiro positivo, digitado pelo usuário. O cálculo deve 
ser feito através da soma dos N primeiros números ímpares. Ex.: 
Se N=3 o programa calculará 1+3+5=9, que é o quadrado de 3.
 
3.4.8Em uma loja, todos os clientes que comprarem mais de R$ 
300,00 receberão um desconto proporcional ao valor de sua 
compra, de acordo com a tabela abaixo:
Valor da 
compra (R$)
Desconto 
(%)
Até 500,00 5
Linguagem de Programação C 26
De 501,00 a 1000,00 10
Acima de 1000,00 12
Você foi incumbido de fazer um programa que permita que o 
cliente entre com o valor dos produtos comprados e mostre o total 
da compra, o valor do desconto e o preço a pagar. Pergunte ao 
usuário se deseja terminar a digitação dos produtos e também se 
deseja finalizar o programa.
 
3.4.9 A CPFL deseja saber quantos usuários de um bairro de classe 
média ultrapassa o consumo mensal ideal. Para isso a empresa 
tem em suas mãos o consumo mensal ideal, que deve ser 
recebido pelo programa uma única vez, e as medidas do mês 
anterior e do mês atual das 5000 residências do bairro, para 
verificar o consumo calculado pela diferença entre eles.
3.4.10Faça um programa que calcule o fatorial de qualquer 
número digitado pelo usuário, sabendo que o fatorial de um 
número é o produtório dos números inteiros entre 1 e ele mesmo.
3.4.11Calcule a seguinte expressão: ∑
=
5
1i
ix
Onde: x é digitado pelo usuário.
3.4.12 Faça um programa que leia uma coleção de números 
inteiros e calcule sua média quadrática. A média quadrática é 
dada pela fórmula:
22
4
2
3
2
2
2
1 nxxxxxMQ +++++= 
O programa encerra-se quando o valor de x for 0.
3.4.13 Calcule a expressão, sem utilizar a função pow() da math.h: 
X Y
Onde: X e Y são digitados pelo usuário
3.4.14Faça um programa que calcule o fatorial de qualquer 
número digitado pelo usuário, sabendo que o fatorial de um 
número é o produtório dos números inteiros entre 1 e ele mesmo 
3.4.15A seqüência de Fibonacci segue a seguinte ordem:0 , 1 , 1 , 2 , 3 , 5 , 8 , 13 , 21 , 34 , 55 , 89 , ...
Repare que cada termo é a somatória dos dois anteriores, sendo 
que os dois primeiros são 0 (zero) e o 1 (um). Faça um programa 
que receba um valor do usuário e imprima os termos da seqüência 
de Fibonacci menores que o valor digitado.
Linguagem de Programação C 27
3.4.16Uma das primeiras aplicações de computadores foi o cálculo 
de trajetória de projéteis. Se um projétil é atirado com uma 
velocidade inicial V (m/s) a um ângulo de inclinação θ (radianos), 
sua posição no plano vertical (x,y) no tempo t (segundos) é 
calculada pelas fórmulas:
x=Vcosθ t
y=Vsenθ t−
1
2
g t 2
Onde: 0θ
π
2
 e g=9.8
m
s2
Faça um programa que, dados os parâmetros θ e V, liste as 
coordenadas x e y em intervalos de 0.01 segundos para um tiro 
em particular, terminando a listagem quando o projétil atingir o 
solo.
Linguagem de Programação C 28
4 - Vetor
Até agora utilizamos estruturas únicas na memória, ou seja, 
um único espaço foi alocado de cada vez. Porém, existem situações nas 
quais queremos agrupar seqüencialmente na memória os nossos dados, 
de forma a resgatá-los de maneira mais fácil. Podemos fazer a seguinte 
analogia: geralmente, alocamos uma única casa e damos um nome 
para ela. Quando queremos alocar um vetor, alocamos uma rua inteira e 
damos um único nome para ela. Como a rua tem várias casas (neste 
caso do mesmo tamanho), o compilador, automaticamente, atribui um 
numero para cada casa, começando do zero. Chamamos este número 
de índice. Assim:
int vet[5];
Aloca 5 espaços contíguos na memória, chamado vet, com 
seu índice variando de 0 à 4. A figura 4.1 mostra alguns elementos 
alocados através desta definição.
10 15 7 4 34
0 1 2 3 4
Figura 4.1 - Alocação de elementos em um vetor de 5 posições
 Para manipular as informações armazenadas no vetor, 
devemos especificar o nome da variável e o índice referente ao espaço 
que queremos tratar, entre colchetes. Assim,
int a[10];
alocará 10 espaços de inteiros na memória e para acessá-los 
basta escrever o nome da variável juntamente com o índice da posição 
a qual quer acessar. Ou seja,
a[0], para acessar o índice 0,
a[1], para acessar o índice 1,
a[2], para acessar o índice 2,
e assim por diante. 
Quando nosso vetor é muito grande, fica inviável a utilização 
de constantes numéricas como índice (0, 1, 2, 3 etc), ao invés disso, 
usamos variáveis. Aliás, esta é a grande vantagem dos vetores: 
manipularmos as variáveis nos loopings para acessar as posições sem 
precisar escrever cada posição. Um comando de looping muito utilizado 
juntamente com vetores é o “FOR”, pois através dele podemos controlar 
Linguagem de Programação C 29
Elementos do vetor
Índices do vetor
melhor as variáveis de controle dos índices.
4.1Comando For
Sintaxe:
for (<inicialização>;<condição>;<incremento>){
<comando>
}
Este comando permite repetir a execução de um ou mais 
comandos que estarão dentro do seu “bloco de comandos”. Como 
podemos ver, tem a mesma função que os comandos while e do-while. 
Ele permite 3 argumentos; o 1º é geralmente usado para inicialização 
da variável de controle (contador) do looping e é executado apenas da 
primeira vez; o 2º para a condição de execução dos comandos e é 
testado todas as vezes e o 3º para incremento da variável de controle e 
é executado todas as vezes. Ele geralmente é usado quando sabemos 
quantas repetições teremos.
Assim,
for (i=0;i<10;i++){ 
 a[i]=0;
}
fará a inicialização da variável i com 0; testará se i é menor 
que 10; enquanto for menor, atribui 0 para a posição do vetor a[i] 
(onde i tem um valor a cada looping); incrementa i e testa novamente 
até que a condição seja falsa, ou seja, o valor de i seja 10 (posição 
inválida no vetor).
Digite o Exemplo 4.1:- Faça um programa que receba as notas dos alunos de uma classe de 30 
alunos e calcule a média da classe. Estas notas devem ser carregadas em um vetor.
1 /*--------------------------------------------------------
Descrição: Calcula media das notas de 30 alunos
de uma classe
Data : Agosto/2009 
Autor : Kesede R Julio 
---------------------------------------------------------*/
O “/*” e o “*/”, abre e fecha um 
bloco de comentários. Estes 
comentários ajudam muito em 
seus estudos. Faça isso em 
todos os seus programas.
2 #include <stdio.h> Permite inclusão de funções de 
i/o
3 #include <conio.h> Permite inclusão da função 
getch()
4 int main(){ Abre função principal
5 float notas[30], media, soma=0; Declara o vetor notas com 30 
Linguagem de Programação C 30
posições do tipo float, assim 
como media e soma 
(inicializada com 0)
6 int i; Declara variável i
7 for (i=0;i<30;i++){ Abre comando for. Inicializa i 
com 0, verifica se i é menor que 
30, na primeira vez. Nas outras 
vezes, soma 1 em i e torna a 
verificar se i é menor que 30
8 printf("Entre com a %i a. nota", i+1); Mostra uma mensagem na tela 
9 scanf(“%f”,&notas[i]); Recebe valor digitado pelo 
usuário e guarda na iésima 
posição de “notas”. Da primeira 
vez i é igual a zero.
10 soma=soma+notas[i]; (acumulador) Acumula a nota 
recebida na variável “soma” 
(inicializada com zero) .
11 } Fecha o comando for, fazendo o 
programa voltar na linha 7
12 media= soma/i; Divide “soma” por “i” (sai do 
looping valendo 30) e guarda o 
resultado em “media”
13 printf("A media da classe eh: %.1f", media); Imprime o valor de “media”
14 getch(); Pára a execução do programa
15 } Fecha a função principal
4.2Exercícios
4.2.1Faça um programa que receba 5 valores inteiros em um 
vetor e mostre na tela, os valores na ordem inversa.
4.2.2Faça um programa que receba as notas de 10 alunos de uma 
classe em um vetor e mostre a média das notas.
4.2.3Faça um programa que receba, em um vetor, 200 valores 
inteiros, a partir do usuário. Após o carregamento, mostre para o 
usuário apenas o conteúdo dos índices pares.
Linguagem de Programação C 31
4.2.4Faça um programa que carregue um vetor de inteiros, 
permitindo que o usuário defina a quantidade de elementos a 
serem carregados. O usuário também deve digitar o valor de um 
elemento o qual deseja saber quantos destes elementos existem 
no vetor.
4.2.5Cadastre em um vetor os índices de inflação dos 12 meses 
de 2008 (cada índice fará referência a um mês do ano). 
a)Mostrar a inflação e o mês (numericamente) de menor índice
b)Mostrar a inflação e o mês (numericamente) de maior índice
4.2.6Calcule o desvio padrão do vetor carregado no exercício 
4.2.5
DP= ∑ x i−x 
2
n−1
Onde xi é cada posição do vetor, x traço é a média dos elementos 
do vetor e n é o total de elementos.
4.2.7Faça um programa que receba do usuário um número inteiro 
N e um vetor X com N números reais. Mostre o resultado da 
função abaixo.
S=∑
i=0
N−1
x ii
2
Onde xi é cada posição do vetor e N é o total de elementos.
4.2.8Faça um programa que crie um vetor, digitado pelo usuário, 
com a idade de 100 pessoas. Mostrar a media aritmética e a 
freqüência absoluta de uma determinada idade digitada pelo 
usuário. Freqüência absoluta de um valor é o número de vezes 
que o mesmo aparece no conjunto de valores (vetor).
Linguagem de Programação C 32
4.2.9Cadastre em um vetor, 50 números de cheques que foram 
recebidos poruma loja em um dia de trabalho. Permita que o 
usuário faça uma busca neste vetor, afim de verificar se um 
determinado número de cheque foi ou não cadastrado. Dê 
mensagem ao usuário mostrando se o número consta ou não no 
cadastro de cheques.
4.2.10. Em uma estrada, foi fixado um sistema de radar móvel 
contendo dois radares (r1 e r2) a uma distancia de 10m um do 
outro. Considere que a velocidade máxima da estrada seja de 80 
Km/h e o calculo da velocidade seja V=ds/dt, onde V é 
velocidade, ds é o espaço percorrido e dt é o tempo gasto para 
atravessar este espaço. O programa deve receber o tempo em 
segundos de cada veículo captado pelo sensor (em nosso caso, 
pelo usuário). Caso o veículo ultrapasse o limite de velocidade o 
programa também receberá do sensor (do usuário), a placa do 
veículo. Crie dois vetores (Placas e Velocidades) para armazenar 
a placa (apenas os 4 digitos finais) e a velocidade de cada veículo 
multado. Quando o sensor (usuário) captar (digitar) 0(zero) no 
tempo, significa que o radar foi retirado da estrada e o programa 
deve ser encerrado.
4.2.11 Em um depósito de pisos usados, o gerente deseja um 
programa onde o cliente possa dizer quantos metros quadrados 
deseja cobrir de piso e ele possa dizer qual dos pisos (padrão 0,2 
x 0,2 m) ele tem quantidade suficiente disponível. O programa 
deve carregar em cada posição do vetor “Pisos” a quantidade 
disponível de cada tipo de piso (o índice será o código do piso). 
Para cada cliente deverá ser digitado a quantidade em metros 
quadrados da área a ser coberta e o programa mostrará o código 
de todos os pisos com quantidades suficientes.
Linguagem de Programação C 33
4.2.12 Considere um sistema de sensoriamento de aquecimento 
de telhas em um determinado dia (24 horas). Duas telhas são 
expostas ao sol com sensores sobre elas, uma com uma tinta 
especial (telha 1) e outra não (telha 2 ). A cada 15 minutos o 
sensor capta (usuário digita) a temperatura das telhas as quais 
são registradas em dois vetores distintos (TempTelha1 e 
TempTelha2). Mostre qual das telhas teve menor aquecimento 
médio durante todo o dia.
4.2.13Um sistema de verificação de gastos elétricos foi 
implantado em uma residência. A princípio, apenas dois aparelhos 
estão sendo medidos: ferro elétrico (codigo 1) e chuveiro (codigo 
2). Sempre que um destes aparelhos é usado, o sensor capta o 
código (guardando-o em um vetor) e o quanto gastou em KW 
(guardando-o em um outro vetor de índice correspondente). 
Mostre ao final do dia (sensor capta código 0), quanto foi gasto 
por cada um dos aparelhos.
4.2.14Foi realizada uma pesquisa quanto a religião da população 
de uma determinada cidade. Receba do usuário, os códigos ((P) 
protestante, (B) budista ou (C) católica) da religião dos 1000 
moradores desta cidade, guardando-os em um vetor. Mostre o 
percentual de budistas, protestantes e de católicos existentes na 
cidade.
4.2.15Um elevador tem sua carga máxima estipulada em 600 Kg. 
Um sensor foi instalado para controlar este limite e avisar aos 
usuários sobre o perigo de excesso de peso. O sensor capta 
código 1 quando uma pessoa entra, código 2 quando sai e código 
zero quando o dia termina. A cada pessoa que entra seu peso é 
registrado em um vetor como valor positivo e quando a pessoa 
sai seu peso é registrado como valor negativo. Sempre que o 
Linguagem de Programação C 34
elevador ultrapassar sua carga máxima, é mostrado em um 
monitor um aviso de “Peso Excedido”. Faça um programa que 
execute a simulação de pessoas entrando e saindo do elevador. 
Os valores devem ser digitados pelo usuário.
4.2.16Um sistema de auditoria foi instalado para verificar a 
movimentação diária de uma determinada conta bancária 
suspeita. Toda movimentação é registrada em um vetor. Os 
créditos são valores positivos e os débitos negativos. O sistema 
emite alerta se a movimentação foi ou não zerada (créditos = 
débitos) ao final do dia. A movimentação termina com valor 0.
Linguagem de Programação C 35
5 - String
String é uma cadeia de caracteres, ou seja, um sequência 
de caracteres que são alocados na memória de forma contígua. Uma 
característica particular da string é o seu terminador (‘\0’), que é 
colocado na última posição da cadeia. Dessa forma, quando o printf() 
imprime um string, ele imprime todos os caracteres até que encontre 
um ‘\0’. Nós podemos declarar um string da seguinte forma:
char nome[10];
quando fazemos esta declaração, o compilador reserva um 
espaço em memória chamado nome com tamanho de 10 caracteres, e 
vincula a cada posição um numero de identificação o qual chamamos de 
índice. O índice da primeira posição será sempre 0 (zero). 
Quando pedimos para o usuário digitar algo em um string, o 
compilador automaticamente aloca o terminador '\0' para a posição que 
sucede o último caractere digitado pelo usuário. Geralmente, utilizamos 
a função gets() para receber strings do usuário, pois esta função 
permite a digitação de várias palavras no string, diferente do scanf() 
que permite apenas uma. Assim:
gets(nome);
recebe um string do usuário e coloca, automaticamente, um 
terminador no final.
Cada posição do string pode ser acessada separadamente, 
assim:
strcpy(nome,”Isto e um string"); 
printf(“%c”,nome[2]); // imprimirá o caractere 't'
A linguagem C/C++ fornece uma biblioteca de funções para 
manipulação de strings. Para utiliza-la, você deve incluir em seu 
programa o header string.h. Algumas dessas funções são:
strcpy(): copia o conteúdo de um string para outro.
strcmp(): compara o conteúdo de duas strings.
strlen(): devolve o tamanho da string
strcat(): concatena duas strings
Para verificar a relação de todas elas assim como sua 
sintaxe, verifique a documentação do header string.h.
Digite o Exemplo 5.1:- Faça um programa que atribua o conteúdo de uma string para outra 
Linguagem de Programação C 36
string e mostre-a na tela.
1 #include <stdio.h> Permite inclusão de funções de i/o
2 #include <string.h> Permite inclusão de funções para manipulação de 
string
3 #include <conio.h> Permite inclusão da função getch()
4 int main(){ Abre função principal
5 char string[10]; Declara variavel “string” de 10 posições
6 char str1[10] = "abcdefghi"; Declara variável “str1” de 10 posições e inicializa 
com “abcdefghi”
7 strcpy(string, str1); Copia conteúdo de “str1” para “string”
8 printf(“%s”, string); Imprime o conteúdo de “string”
9 getch(); Pára a execução do programa
10 } Fecha função principal
Digite o Exemplo 5.2:- Faça um programa que compare o conteúdo de strings e dê mensagens 
indicando o resultado da comparação.
1 #include <stdio.h> Permite inclusão de funções de i/o
2 #include <string.h> Permite inclusão de funções para 
manipulação de string
3 #include <conio.h> Permite inclusão da função getch()
4 int main(){ Abre função principal
5 char buf1[4] = "aaa", buf2[4] = "bbb", 
buf3[4] = "ccc";
Declara e inicializa variáveis
6 int ptr; Declara variável “ptr”
7 ptr = strcmp(buf2, buf1); Compara conteúdo de “buf2” com 
conteúdo de “buf1”. Atribui para “ptr” 0, 
1 ou -1,caso sejam iguais, buf2 maior que 
buf1 ou buf2 menor que buf1, 
respectivamente.
8 if (ptr > 0){ Verifica se “ptr” é maior que 0 (buf2 
maior que buf1)
9 printf("buffer 2 eh maior que 
buffer 1\n");
Caso seja, mostra mensagem
10 } Fecha if
11 else{ Abre else
12if (ptr == 0){ Verifica se “ptr” é igual a 0 (buf2 igual 
buf1)
13 printf("buffer 2 eh igual ao 
buffer 1\n");
Caso seja, mostra mensagem
14 } Fecha if
Linguagem de Programação C 37
15 else{ Abre else
16 printf("buffer 2 eh menor que o 
buffer 1\n");
Mostra mensagem, pois se entrou aqui é 
porque negou as duas condiões acima 
(com certeza buf2 é menor que buf1)
17 } Fecha else
18 } Fecha else
19 ptr = strcmp(buf2, buf3); Compara conteúdo de “buf2” com 
conteúdo de “buf3”. Atribui para “ptr” 0, 
1 ou -1,caso sejam iguais, buf2 maior que 
buf1 ou buf2 menor que buf1, 
respectivamente.
20 if (ptr > 0){ Verifica se “ptr” é maior que 0 (buf2 
maior que buf3)
21 printf("buffer 2 eh maior que 
buffer 3\n");
Caso seja, mostra mensagem
22 } Fecha if
23 else{ Abre else
24 if (ptr == 0){ Verifica se “ptr” é igual a 0 (buf2 igual 
buf3)
25 printf("buffer 2 eh igual ao 
buffer 3\n");
Caso seja, mostra mensagem
26 } Fecha if
27 else{ Abre else
28 printf("buffer 2 eh menor que o 
buffer 3\n");
Mostra mensagem, pois se entrou aqui é 
porque negou as duas condiões acima 
(com certeza buf2 é menor que buf3)
29 } Fecha else
30 } Fecha else
31 getch(); Pará a execução do programa
32 } Fecha função principal
Digite o Exemplo 5.3- Faça um programa que mostre a quantidade de caracteres de uma string.
1 #include <stdio.h> Permite inclusão de funções de i/o
2 #include <string.h> Permite inclusão de funções para 
manipulação de string
3 #include <conio.h> Permite inclusão da função getch()
4 #include <stdio.h> Permite inclusão de funções de i/o
5 #include <string.h> Permite inclusão de funções para 
manipulação de string
6 int main(){ Abre função principal
Linguagem de Programação C 38
7 char string[25] = "Kesede Rodrigues Julio"; Declara e inicializa variavel“string” 
de 25 posições
8 printf(“%d”,strlen(string)); Strlen() retorna a quantidade de 
caracteres que a variável string 
contém. O resultado é mostrado na 
tela
9 getch(); Pára a execução do programa
10 } Fecha função principal
Digite o Exemplo 5.4:- Faça um programa que concatene duas strings e mostre o resultado da 
concatenação na tela.
1 #include <stdio.h> Permite inclusão de funções de i/o
2 #include <string.h> Permite inclusão de funções para 
manipulação de string
3 #include <conio.h> Permite inclusão da função getch()
4 #include <string.h> Permite inclusão de funções para 
manipulação de strings
5 #include <stdio.h> Permite inclusão de funções de i/o
6 int main(){ Abre função principal
7 char destino[25]; Declara e inicializa variavel “destino” de 
25 posições
8 char espaco[2] = " ", sobrenome[10] = 
"Rodrigues", nome[10] = "Kesede";
Declara variáveis strings
9 strcpy(destino, nome); Copia nome para destino
10 strcat(destino, espaco); Concatena (junta) espaço com destino
11 strcat(destino, sobrenome); Concatena (junta) sobrenome com 
destino
12 printf(“%s”, destino); Imprime destino
13 getch(); Pará a execução do programa
14 } Fecha função principal
5.1Exercícios
5.1.1Faça um programa que receba uma frase do usuário e 
mostre quantas vogais a frase contem.
5.1.2Faça um programa que mostre o número de palavras 
contidas em um string. O string deve ser fornecido pelo usuário.
Linguagem de Programação C 39
5.1.3 Um programa de criptografia codifica as vogais a, e, i, o, u 
como 1, 2 ,3, 4, 5, respectivamente. Faça um programa que 
receba uma frase codificada do usuário e mostre-a decodificada.
5.1.4 Faça um programa que receba o nome completo do usuário 
e mostre a abreviatura do seu nome.
5.1.5 Faça uma função que receba um string como parâmetro e 
devolva o conteúdo da string em ordem alfabética. Um string é 
um vetor de caracteres contendo '\0' como finalizador. void 
stralf(char *s1);
5.1.6 Faça um programa que receba uma frase do usuário. 
Construa outra string contendo a primeira letra de cada palavra, 
da última até a primeira, separados por espaços em branco. Ex.: 
Frase : Nesta prova vou tirar um dez.
Iniciais: d u t v p N
5.1.7 Faça um programa que receba um string do usuário e 
guarde em um vetor os índices da string que contem a letra 'a'.
5.1.8 Faça um programa que receba o nome completo do usuário, 
construa outra string com o primeiro nome completo e os outros 
abreviados, separados por espaços em branco. 
Ex.:
Nome Completo : Kesede Rodrigues Julio
Nome Abreviado: Kesede R J
5.1.9Faça um programa que receba do usuário em duas strings 
distintas, uma frase e uma sequencia de duas letras, 
supostamente contida na frase. Mostre quantas vezes a sequencia 
aparece na frase. Ex.:
Frase: Descobertos mais ossos de polêmica espécie de 
hominídeos
Sequencia: es
Resultado: 2
5.1.10Faça um programa que receba uma frase do usuário e 
mostre a quantidade de ditongos e/ou hiatos (duas vogais 
consecutivas) encontrados.
5.1.11 Faça um programa que mostre para o usuário uma string 
contendo o primeiro e o último nome de uma pessoa. O programa 
deve receber do usuário uma string contendo o nome completo da 
pessoa.
Linguagem de Programação C 40
5.1.12 Faça um programa que receba o nome completo da pessoa 
e devolva este nome na forma bibliográfica.
5.1.13Faça um programa que receba uma frase do usuário. Logo 
em seguida receba também uma palavra. O programa deve 
mostrar uma mensagem dizendo se a palavra digitada esta 
contida ou não na frase.
5.1.14Faça um Jogo da Forca.
Linguagem de Programação C 41
6 - Matriz
São vetores multi-dimensionais. Ao invés de trabalharmos 
com um único índice, trabalhamos com vários. Em nossa analogia com 
ruas e casas, no caso dos vetores, teríamos aqui a comparação com um 
quarteirão. Assim, além dos números das casas teremos que saber o 
número da rua onde ela se localiza. Desta forma,
a[3][3];
reserva 9 posições na memória, podendo, conceitualmente, 
considerar o 1º índice como linha e o segundo como coluna.
0 1 2
0 10 20 43
1 27 8 78
2 82 3 7
Figura 6.1 - Alocação de elementos em uma matriz 3x3.
Para acessarmos qualquer posição, basta escrever o nome 
da variável juntamente com o número do índice da linha e o da coluna. 
Assim,
a[1][2] = 78;
colocará o valor 78 para a 2ª linha da 3ª coluna. (o índice 
começa em 0).
Geralmente, temos um número grande de posições e 
precisamos de um comando de looping para nos ajudar a modificar os 
índices sem muita escrita de código. Portanto,
for (i=0;i<10;i++){ 
 for (j=0;j<10;j++){
 a[i][j] = 0;
 }
} 
colocará o valor 0 (zero) para toda a matriz, percorrendo 
todas as colunas de todas as linhas.
Linguagem de Programação C 42
Digite o exemplo 6.1: Faça um programa que carregue, a partir do usuário, uma matriz 10x10 
representando o centro de uma cidade. Cada índice, contém o número de acidentes anual 
ocorridos em cada cruzamento. O programa deve mostrar a esquina (linha e coluna) que ocorreu 
o maior número de acidentes.
1 #include <stdio.h> Include arquivo de 
cabeçalho
2 int main(){ Abre função principal
3 int ac[10][10], i_maior, j_maior, i, j, maior, tot=0; Declaravariáveis. 
4 for(i=0; i<10; i++){ 
 for(j=0; j<10;j++){ 
 scanf(“%i”, &ac[i][j]); 
 } 
 }
Carrega a matriz a partir 
do usuário
5 maior=ac[0][0];
 for(i=0; i<10; i++){
 for(j=0; j<10;j++){
 if(ac[i][j] > maior){
 i_maior=i;
 j_maior=j;
 maior=ac[i][j];
 }
 }
 }
 printf(“A rua %i esquina com %i teve %i acidentes, 
sendo a esquina com maior nr de acidentes do centro.”, 
i_maior,j_maior, maior);
 getch();
Incializa a variavel auxiliar 
“maior” com o primeiro 
elemento da matriz. Em 
seguida, percorre a matriz 
verificando se existe algum 
elemento maior que o 
primeiro, guardado na 
variavel “maior”. Caso 
exista, atualiza “maior” e 
guarda os índices (esquina) 
deste elemento. Ao final, 
imprime e pára o 
programa.
6 } Fecha main()
6.1Exercícios
6.1.1 Faça um programa que carregue em uma matriz as notas 
dos 30 alunos das 3 turmas que um professor leciona. Mostre a 
media de cada turma.
6.1.2 Faça um programa que mostre o menor valor de uma 
matriz. Receba os valores e a ordem da matriz, a partir do 
usuário. 
6.1.3 Faça um programa em C que receba do usuário uma matriz 
NxM (N é o número de linhas e M o número de colunas) de 
números inteiros, e armazene na linha N-1 o somatório dos 
elementos de cada coluna (linhas de 0 a N-2). Exibir os 
Linguagem de Programação C 43
resultados. Como exemplo, considere a matriz 4 x 2 a seguir. A 
última linha conterá o somatório das linhas anteriores. Ex.:
0 1
0 4 2
1 5 9
2 8 20
3 17 31
6.1.4 Faça a multiplicação de duas matrizes. Receba os valores e 
as ordens das matrizes, a partir do usuário. Faça todas as 
consistências necessárias.
6.1.5 Preencha uma matriz quadrada de ordem 4, da seguinte 
forma: 
se i <> j, m[i, j] = 0 e 
se i = j, m[i, j] = 1
6.1.6 Mostre quantos elementos diferentes de zero existem em 
uma matriz. A ordem e seus valores devem ser recebidos pelo 
usuário.
6.1.7 Verifique se uma determinada matriz é simétrica. A ordem e 
seus valores devem ser recebidos pelo usuário.
6.1.8 Faça um programa que carregue uma matriz de inteiros 
5x5, a partir do usuário. Mostre na tela a somatória de todos os 
valores, exceto os valores da diagonal principal.
6.1.9 Faça um programa que carregue uma matriz de inteiros 
10x10, a partir do usuário. Carregue um vetor com os valores da 
diagonal secundária da matriz.
6.1.10 Faça um programa que carregue uma matriz de inteiros 
10x10, a partir do usuário. Mostre na tela a somatória de todos os 
valores, exceto os valores das linhas pares.
6.1.11 Faça um programa que carregue uma matriz de inteiros 
10x10, a partir do usuário. Carregue um vetor com os valores da 
diagonal secundária da matriz.
6.1.12 Em uma auto-pecas, o proprietário deseja manter uma 
tabela de custos de suas peças. Nesta tabela, cada coluna 
representa uma peca e cada linha o preço de custo de cada 
fornecedor. Faça um programa que permita ao proprietário 
carregar esta tabela e logo em seguida digitar o código de uma 
Linguagem de Programação C 44
peça (índice da coluna) para que o programa possa mostrar qual 
o código do fornecedor (índice da linha) que tem o preço de custo 
mais barato. 
6.1.13 Em uma transportadora, as distâncias entre cidades, são 
dadas por uma tabela, onde as linhas são as cidades de origem, e 
as colunas de destino, e portanto os valores da diagonal principal 
desta matriz é zero. Os índices da matriz são os códigos das 
cidades. Permita que seu programa mostre qual o destino mais 
distante, dado uma origem. O programa deve receber a tabela de 
distancias (100 x 100), e logo em seguida, receber o código da 
origem.
6.1.14 Considere que um engenheiro deseja saber qual a 
distância entre diversas localizações em uma área. Para isto ele 
tem em mãos apenas as coordenadas x,y de cada localização. 
Faça um programa que permita que o engenheiro carregue uma 
tabela (nx5) onde as colunas representem as coordenadas x,y de 
cada ponto, assim como a distância entre eles. O cálculo da 
distância é dado por: . 
O valor de n será dado pelo usuário.
6.1.15 Considere uma imagem nivel de cinza representada por 
uma matriz (512x512), onde cada posição contem um valor 
inteiro equivalendo a tonalidade da cor (0..255) naquele ponto. 
Carregue as tonalidades de cor de uma linha (vetor de 512) desta 
imagem através do usuário. Após o carregamento , faça a 
suavização desta imagem da seguinte forma: o valor da posição 
será igual a média do seu valor e de seus vizinhos Vi = (Vi-1 + Vi 
+ Vi+1) / 3.
Linguagem de Programação C 45
 22 )12()12( yyxxd −+−=
7 - Estruturas Heterogêneas
Uma estrutura heterogênea permitir agrupar variáveis de 
tipos diferentes em um espaço contíguo na memória, facilitando assim a 
manipulação destas informações.
Informações pertencentes a mesma entidade são passíveis 
de serem agrupadas em uma estrutura heterogênea, como: 
coordenadas de um ponto, descrições de uma máquina, score de um 
jogador etc.
Para construirmos estruturas heterogêneas em linguagem C, 
usamos uma “struct”. Ex.:
struct jogador{
char nome[40];
int scoreMensal;
int scoreDiario;
};
para podermos utilizar (incluir e consultar) estes 
informações, devemos declarar uma variável do tipo struct, usando o 
nome da struct, neste caso, jogador. Ex.:
jogador jog1, jog2;
Neste caso, instanciamos (declaramos) dois jogadores com 
a mesma estrutura de dados. Agora, podemos atribuir valores para 
nossas duas instâncias. Ex.:
gets(jog1.nome);
jog1.scoreMensal=2500;
jog1.scoreDiario=150;
gets(jog2.nome);
jog2.scoreMensal=3400;
jog2.scoreDiario=100;
Note que temos que usar o “.” (ponto) para separar o nome 
da variável estrutura (variável declarada do tipo estrutura) da variável 
membro (variáveis internas).
Como uma estrutura funciona como um tipo, podemos 
declarar vetores e até matrizes de estruturas. Por exemplo, se 
tivéssemos 10 ou 100 jogadores, não seria prático declararmos uma 
variável para cada jogador, assim poderíamos declarar uma variável 
vetor do tipo estrutura. Ex.:
Linguagem de Programação C 46
jogador jog[100];
Desta forma, fica fácil executar um looping que carregue, a 
partir do usuário, o nome de todos os jogadores. Ex.:
for (c=0;c<100;c++){
gets(jog[c].nome);
}
Algumas considerações devem ser relevadas, assim como:
1. Variável estrutura pode receber, de uma só vez, todo 
o conteúdo de outra variável estrutura.
2. Uma estrutura pode conter outras estruturas, ou seja, 
podemos ter estruturas aninhadas./
3. Podem ser passadas como parâmetro, por valor ou 
por referência. 
4. Variável do tipo estrutura pode ser retornada de 
funções. 
O Exemplo abaixo mostra um uso prático.
Digite o exemplo 7.1: Faça um programa que carregue, a partir do usuário, os dados geográficos 
das cidades do Brasil. Inclua estas informações em um vetor de estrutura. Os dados são: nome 
da cidade, x e y (a origem 0,0 deste sistema é Brasília). Após a inclusão destes dados, o 
programa deve permitir ao usuário a digitação de um cidade qualquer, sua referência x e y, e 
listar a distância desta cidade em relação a cada cidade cadastrada.
1 #include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <ctype.h>
#include <math.h>
Include arquivos de 
cabeçalho
2 int main(){ Abre função principal
3 typedef struct DadosGeo{
 char nome[50];
 int x, y;

Outros materiais