278 exercícios de algoritmo

Upload: jardel-junior

Post on 16-Oct-2015

313 views

Category:

Documents


1 download

TRANSCRIPT

  • Linguagem de Programao C

    Lembre-se sempre Pgina 1 de 32 A Sorte Ajuda aos Competentes

    Prof.: Oswaldo Borges Peres [email protected]

    Lista de Exerccios

    Variveis, entrada e sada

    Exerccios de Fixao

    1) Faa um programa que imprima o produto entre 35 e 47.

    2) Faa um programa que imprima a mdia aritmtica entre os nmeros 12, 25 e 53.

    3) Faa um programa que leia 2 nmeros da entrada e imprima o seu produto.

    4) Faa um programa que leia 2 nmeros da entrada e imprima a sua mdia aritmtica.

    5) Faa um programa que leia 2 nmeros da entrada e imprima o resto da diviso inteira de um pelo outro.

    6) Faa um programa que leia um nmero da entrada e imprima o seu antecedente e o seu sucessor.

    7) Faa um programa que leia um valor de conta de restaurante, representando o gasto realizado pelo cliente e imprima o valor total a ser pago, considerando que o restaurante cobra 10% para o garom.

    8) Faa um programa que leia um valor de hora e informe quantos minutos se passaram deste o incio do dia.

    Tomada de deciso

    Exerccios de Fixao

    9) Faa um programa que leia da entrada um nmero e imprima o seu valor absoluto (sem o sinal).

    10) Faa um programa que leia um nmero e imprima uma mensagem dizendo se par ou impar.

    11) Faa um programa que leia 2 nmeros e imprima uma mensagem dizendo se so iguais ou diferentes.

    12) Faa um programa que leia 2 nmeros e imprima uma mensagem dizendo o maior deles. Suponha que os nmeros sero diferentes.

    13) Faa um programa que leia 2 nmeros e imprima uma mensagem dizendo o maior deles. Detalhe: se os nmeros forem iguais, imprima uma mensagem avisando ao usurio.

    14) Faa um programa que leia 2 nmeros e os imprima em ordem crescente.

    15) Faa um programa que leia 2 nmeros e os imprima em ordem decrescente.

    16) Faa um programa que leia 3 nmeros e imprima o menor deles.

    17) Faa um programa que leia 3 nmeros e os imprima em ordem crescente.

    18) Faa um programa que leia 3 nmeros e os imprima em ordem decrescente.

    19) Faa um programa que leia 3 nmeros e imprima o valor intermedirio, entre o menor e o maior nmero. Suponha que os nmeros sero diferentes.

    20) Faa um programa que leia 3 nmeros e imprima uma das seguintes mensagens: todos os nmeros so iguais; todos os nmeros so diferentes ou apenas dois nmeros so iguais.

    21) Faa um programa que leia trs notas de um aluno, calcule sua mdia aritmtica e imprima uma mensagem dizendo se o aluno foi aprovado, reprovado ou dever fazer prova final. O critrio de aprovao o seguinte: aprovado (mdia 7);

  • Linguagem de Programao C

    Lembre-se sempre Pgina 2 de 32 A Sorte Ajuda aos Competentes

    Prof.: Oswaldo Borges Peres [email protected]

    reprovado (mdia < 3) e prova final ( 3 mdia < 7).

    22) Faa um programa que leia a idade de uma pessoa e informe sua classe eleitoral: no eleitor (abaixo de 16 anos); eleitor obrigatrio (entre 18 e 65 anos) e eleitor facultativo (entre 16 e 18 anos e acima dos 65 anos).

    23) Faa um programa que leia um horrio no sistema de 24 horas e imprima este horrio no sistema de 12 horas.

    Exemplo: 22:32 10:32 pm Obs.: 0:00 12:00 am

    6:00 6:00 am 12:00 12:00 pm

    Repetio

    Exerccios de Fixao

    24) Faa um programa que imprima os nmeros de 1 a 100.

    25) Faa um programa que imprima os nmeros de 100 a 1, nesta ordem.

    26) Faa um programa que imprima os nmeros pares no intervalo de 1 a 300.

    27) Faa um programa que imprima os nmeros de 64 a 256.

    28) Faa um programa que imprima os nmeros mpares no intervalo de 531 a 750.

    29) Faa um programa que leia um nmero da entrada e imprima os nmeros naturais de 0 at este nmero. Suponha que o nmero lido da entrada ser maior que zero.

    30) Faa um programa que leia um nmero da entrada e imprima os nmeros naturais de 0 at este nmero, pulando de dois em dois. Suponha que o nmero lido da entrada ser maior que zero.

    31) Faa um programa que leia um nmero da entrada (limite), um incremento (incr) e imprima os

    nmeros naturais de 0 at limite pulando de incr. Suponha que limite e incr so maiores que zero. Exemplo:

    valores lidos: 10 (limite) 3 (incr) impresso: 0 3 6 9

    32) Faa um programa que leia um nmero da entrada e imprima os nmeros mpares menores do que este nmero. Exemplo:

    valor lido: 7 impresso: 1 3 5

    33) Faa um programa que leia um nmero da entrada (num) e imprima os num primeiros nmeros pares. Exemplo: valor lido: 6 impresso: 2 4 6 8 10 12

    34) Faa um programa que imprima a tabuada de 5 no formato:

    5 x 1 = 5 5 x 2 = 10 ... ... ... 5 x 10 = 50

    35) Faa um programa que leia um nmero da entrada e imprima a tabuada deste nmero. Suponha que o nmero lido da entrada maior que zero.

    36) Faa um programa que imprima as tabuadas dos nmeros de 1 a 10.

    37) Faa um programa que imprima os nmeros de 1 a 100 e o valor de seu somatrio.

    38) Faa um programa que leia um nmero da entrada (num), imprima os nmeros de 1 a num e o seu somatrio.

    39) Faa um programa que imprima a soma dos nmeros pares entre 25 e 100.

    40) Faa um programa que leia um nmero da entrada (num) e imprima a soma dos nmeros pares entre 1 e num. Suponha que num ser maior que zero.

    41) Faa um programa que leia um nmero da entrada (num) e imprima o somatrio dos num primeiros nmeros mpares.

  • Linguagem de Programao C

    Lembre-se sempre Pgina 3 de 32 A Sorte Ajuda aos Competentes

    Prof.: Oswaldo Borges Peres [email protected]

    42) Faa um programa que leia um intervalo da entrada (incio e fim) e imprima os nmeros naturais neste intervalo. Exemplo: valores lidos: 5 9 impresso: 5 6 7 8 9

    43) Faa um programa que leia um intervalo da entrada (incio e fim) e imprima os mltiplos de 5 entre eles. Exemplo: valores lidos: 3 17 impresso: 5 10 15

    Observao: o que acontece se fim for menor que incio? Seu programa continua funcionando?

    44) Faa um programa que leia um intervalo da entrada (incio e fim) e um nmero (num). O programa deve imprimir os mltiplos de num entre incio e fim. Exemplo: valores lidos: 1 15 3 (num) impresso: 3 6 9 12 15

    Observao: o que acontece se fim for menor que incio? Seu programa continua funcionando?

    45) Faa um programa que leia um intervalo da entrada (incio e fim) e imprima os nmeros pares entre incio e fim e seu somatrio. Exemplo: valores lidos: 3 15 impresso: 4 6 8 10 12 14

    Soma = 54

    46) Faa um programa que leia um nmero (num) da entrada e imprima os mltiplos de 3 e 5 ao mesmo tempo no intervalo de 1 a num. Exemplo: valor lido: 47 impresso: 15 30 45

    47) Faa um programa que leia um nmero da entrada, calcule e imprima o seu fatorial. Lembre-se que:

    n! = n x (n -1) x (n - 2) x ... x 1 0! = 1 e 1! = 1

    48) Faa um programa que leia um nmero da entrada (num), a seguir leia num nmeros da entrada e os imprima. Exemplo: valores lidos: 5

    3 10 12 2 1 impresso: 3 10 12 2 1

    49) Faa um programa que leia um nmero da entrada (num), a seguir leia num nmeros da entrada e imprima o maior deles. Suponha que todos os nmeros lidos sero positivos. Exemplo: valores lidos: 3

    17 4 22 impresso: O maior nmero lido foi 22.

    50) Faa um programa que leia um nmero da entrada (num), a seguir leia num nmeros da entrada e imprima o maior deles. Exemplo: valores lidos: 4

    -3 -5 -15 -4 impresso: O maior nmero lido foi -3.

    51) Faa um programa que leia um nmero da entrada (num), a seguir leia num nmeros da entrada e imprima o maior, o menor e soma dos nmeros lidos.

    52) Faa um programa que leia uma seqncia de nmeros terminada por 0 e imprima o maior, o menor e a mdia aritmtica dos nmeros. O nmero 0 (zero) no faz parte da seqncia. Exemplo: valores lidos: 20 -3 4 - 7 1 0 impresso: Maior = 20 Menor = -7

    Mdia = 3

    53) Faa um programa que leia uma seqncia de nmeros terminada por 0 e imprima o nmero que for mltiplo de sua posio na seqncia. valores lidos: 3 7 8 16 5 0 posio: 1 2 3 4 5 impresso: 3 16 5

    54) Faa um programa que leia uma seqncia de nmeros terminada por 0 e imprima a mdia aritmtica dos mpares e a soma dos pares.

    55) Faa um programa que calcule e imprima o valor de 25. Dica: 25 = 2 x 2 x 2 x 2 x 2.

    56) Faa um programa que leia dois nmeros da entrada (X e Y) e calcule XY. Suponha que X e Y so positivos.

    57) Faa um programa que calcule o produto de 2 nmeros lidos da entrada (num1 e num2) atravs do

  • Linguagem de Programao C

    Lembre-se sempre Pgina 4 de 32 A Sorte Ajuda aos Competentes

    Prof.: Oswaldo Borges Peres [email protected]

    mtodo de somas sucessivas. Suponha que num1 e num2 so positivos. Exemplo:

    valores lidos: 3 4 impresso: 12 dica: 3 x 4 = 3 + 3 + 3 + 3 = 12

    58) Faa um programa que leia 2 nmeros da entrada e imprima o resto da diviso inteira do primeiro pelo segundo usando subtraes sucessivas.

    59) Faa um programa que calcule o resultado de numnum

    12

    utilizando o algoritmo de subtraes

    sucessivas. num1 e num2 devem ser lidos da entrada. Informe ao usurio caso a diviso no seja exata. Exemplo: valores lidos: 6 3 impresso: 2 dica: 6 - 3 = 3 - 3 = 0

    (2 subtraes)

    60) Faa um programa que imprima os termos de uma P.A., sendo lidos da entrada: o primeiro termo (a0), a razo (r) e o nmero de elementos (num).

    61) Faa um programa que imprima os termos de uma P.G., sendo lidos da entrada: o primeiro termo (a0), a razo (q) e o nmero de elementos (num).

    62) Faa um programa que leia um nmero da entrada e imprima uma mensagem dizendo se o nmero soluo da equao 2x2 - 7x + 3 = 0.

    63) Escreva um algoritmo que leia uma seqncia de 50 nmeros naturais e imprima o maior nmero da seqncia mltiplo de 2 e de 3 ao mesmo tempo.

    64) Faa um programa que imprima os 10 primeiros termos da srie de Fibonacci. Observao: a 0 = 1, a 1 = 1 e a n = a n - 1 + a n - 2.

    65) Faa um programa que leia um nmero (num) da entrada e imprima os num primeiros termos da srie de Fibonacci.

    66) Faa um programa que leia um nmero da entrada e imprima os termos da srie de Fibonacci menores que este valor.

    67) Faa um programa que calcule 1II N

    K

    = , onde N e

    K so lidos da entrada.

    68) (Prova 1 - 96/1) Faa um programa que imprima a tabela de converso de graus Celsius-Fahrenheit para o intervalo desejado pelo usurio. O programa deve solicitar ao usurio o limite superior, o limite inferior do intervalo e o decremento. Frmula de converso: C = 5(F - 32) /9 Exemplo: valores lidos: 68 50 15 impresso: Fahrenheit Celsius

    68 20 53 11

    Exerccios Propostos

    69) (Prova 1 - 95/2) A srie de RICCI gerada da seguinte forma: os dois primeiros termos so fornecidos pelo usurio, a partir da, os termos so gerados como a soma dos dois termos anteriores, ou seja, ai=ai-1+ai-2 para i3.

    Escreva um programa que imprima os N (N lido e >= 2) primeiros termos da srie de RICCI. O programa deve imprimir, tambm a soma dos termos impressos.

    70) (Prova 1 - 96/1) A srie de FETUCCINE gerada da seguinte forma: os dois primeiros termos so fornecidos pelo usurio; os termos seguintes so gerados como a soma ou subtrao dos dois termos anteriores, ou seja:

    ai = ai -1 + ai -2 ==> para i mpar ai = ai -1 - ai -2 ==> para i par

    Escreva um programa que imprima os N (N lido e maior ou igual a 2) primeiros termos da srie de FETUCCINE. O programa deve imprimir, tambm a soma dos termos impressos.

    71) (Prova 1 - 96/2) Uma telenovela de grande sucesso tem o seu final previsto para o dia 1 o de novembro. Sabe-se que neste dia ser revelado nome do personagem responsvel por inmeros assassinatos ocorridos no decorrer da trama. No entanto, no dia 1o de outubro (um ms antes do

  • Linguagem de Programao C

    Lembre-se sempre Pgina 5 de 32 A Sorte Ajuda aos Competentes

    Prof.: Oswaldo Borges Peres [email protected]

    trmino da novela), um funcionrio da emissora conta para dois amigos o desfecho do ltimo captulo. Com isto, no dia 1o de outubro, 3 pessoas sabem do desfecho da novela. Supondo que cada nova pessoa a saber do final da novela contar para duas novas pessoas no dia seguinte (e para mais ningum), mais 4 pessoas estaro envolvidas ao final do dia 2 de outubro (7 pessoas at este dia). No dia 3 de outubro, j sero 15 pessoas.

    Faa um programa para ajudar o dono da emissora a decidir se deve demitir o funcionrio fofoqueiro: se ao trmino do dia 25 de outubro mais de 20000 (vinte mil) pessoas estiverem sabendo do final da novela, o funcionrio dever ser demitido.

    72) Faa um programa que calcule o M.M.C entre dois nmeros lidos da entrada.

    73) Faa um programa que calcule o M.D.C entre dois nmeros lidos da entrada.

    74) Faa um programa que calcule e imprima os

    termos da srie XN

    N

    !, onde X e N devem ser lidos da

    entrada.

    75) Faa um programa que calcule o resultado de

    ( )- *= 1

    0I

    I N

    I , onde N lido da entrada.

    76) Escrever um algoritmo para escrever na sada todos os nmeros (inteiros e positivos) entre 10 e 100 tais que: No terminem em zero; Se o dgito da direita for removido, o nmero

    restante divisor do nmero original. Exemplos:

    39: 3 divisor de 39 48: 4 divisor de 48

    77) Dados N valores (inteiros e positivos) na entrada, escrever um algoritmo que teste quais valores esto dentro e quais esto fora do intervalo {1, 2, ..., 15}, escrevendo na sada o valor e a mensagem correspondente. O primeiro valor a ser lido na entrada N e N no um dos valores a serem testados. Alm disso, obter:

    a quantidade, soma e mdia aritmtica dos valores dentro do intervalo;

    a quantidade, soma e mdia aritmtica dos valores fora do intervalo.

    Exemplo: valores lidos: 5 3 18 7 22 50 impresso: 3 est dentro do intervalo 18 est fora do intervalo 7 est dentro do intervalo 22 est fora do intervalo 50 est fora do intervalo 2 valores dentro do intervalo, soma = 10 e mdia = 5 3 valores fora do intervalo, soma = 90 e mdia = 30

    78) Repare a seguinte caracterstica do nmero 3025:

    30 + 25 = 55 e 552 = 3025 Faa um programa que leia uma srie de valores (nmeros inteiros de 4 algoritmos, um de cada vez) e diga se possuem a mesma caracterstica (repare que 3025 / 100 = 30 c/ resto 25). O programa termina quando for lido um valor menor que 1000 ou maior que 9999.

    79) Uma das maneiras de se conseguir a raiz quadrada de um nmero subtrair do nmero os mpares consecutivos a partir de 1, at que o resultado da subtrao seja menor ou igual a zero. O nmero de vezes que se conseguir fazer a subtrao a raiz quadrada exata (resultado 0) ou aproximada do nmero (resultado negativo). Exemplo: Raiz de 16

    16 - 1 = 15 - 3 = 12 - 5 = 7 - 7 = 0

    A raiz de 16 4.

    80) Faa um programa que leia um conjunto de pedidos de compra e calcule o valor total da compra. Cada pedido composto pelos seguintes campos: nmero do pedido; data do pedido (dia, ms, ano); preo unitrio do item e quantidade.

    O programa dever processar novos pedidos

  • Linguagem de Programao C

    Lembre-se sempre Pgina 6 de 32 A Sorte Ajuda aos Competentes

    Prof.: Oswaldo Borges Peres [email protected]

    at que o usurio digite 0 (zero) como nmero do pedido.

    81) Refaa o exerccio anterior, sendo que s sero processados os pedidos cujo valor seja maior que R$ 1000,00.

    82) Refaa o exerccio 1 de modo que sejam processados somente os pedidos realizados nos anos de 1994 e 1996. Ao final do processamento o programa dever indicar qual ano teve maior volume de compras.

    83) Faa um programa que leia um nmero indeterminado de cartes contendo cada um a idade de uma pessoa e o sexo (0 - masculino, 1 - feminino). O ltimo carto (que no entrar nos clculos) contm o valor da idade igual a zero. Calcule e imprima a idade mdia destas pessoas, quantas pessoas do sexo feminino esto na faixa dos 18 aos 25 anos e o nmero total de pessoas do sexo masculino.

    84) Faa um programa que leia o preo de compra e o preo de venda de 100 mercadorias. O programa dever imprimir quantas mercadorias proporcionam: lucro < 10 % 10 %

  • Linguagem de Programao C

    Lembre-se sempre Pgina 7 de 32 A Sorte Ajuda aos Competentes

    Prof.: Oswaldo Borges Peres [email protected]

    Matrcula do aluno: 33 Cdigo da disciplina: 1086 Cdigo da turma: 5 Mdia Final: 8 Cdigo da disciplina: 1082 Cdigo da turma: 1 Mdia Final: 6 ... ... ... ... Cdigo da disciplina: 1085 Cdigo da turma: 4 Mdia Final: 3

    89) Faa um programa que calcule e imprima o CR do perodo para os alunos do P15. Para cada aluno, o programa dever ler:

    nmero da matrcula; quantidade de disciplinas cursadas; notas em cada disciplina.

    Alm do CR de cada aluno, o programa deve

    imprimir o melhor CR dos alunos que cursaram 5 ou mais disciplinas. Observaes: o fim da entrada de dados marcado por uma

    matrcula invlida (matrculas vlidas: de 1 a 5000);

    o CR do aluno igual a mdia aritmtica de suas notas.

    90) Faa um programa que controle o saldo bancrio de um cliente. O programa l o valor do saldo anterior e em seguida l as operaes realizadas na conta. As operaes podem ser as seguintes: Saque em dinheiro (cdigo 10); Depsito (cdigo 33); Pagamento de cheque (cdigo 4).

    O programa l o cdigo das operaes e realiza as atualizaes na conta, imprimindo uma mensagem ao usurio caso seu saldo se torne negativo.

    O programa deve continuar a leitura at que o cdigo da operao seja zero. Cdigos diferentes dos definidos devem ser ignorados.

    Ao final do processamento o programa deve imprimir o saldo atual do cliente.

    91) Uma biblioteca deseja fazer uma anlise sobre a consulta a seu acervo. Faa um programa que leia o cdigo de um livro, o nmero de exemplares e para cada um deles o nmero de emprstimos. O programa deve imprimir o total parcial de emprstimos para cada livro, e ao final deve imprimir o cdigo do livro mais emprestado pela biblioteca. A entrada de dados termina com um cdigo de livro negativo.

    92) Uma empresa classifica seus funcionrios em 3 nveis de acordo com um ndice de produtividade. So eles: (1) Excelente, (2) Bom e (3) Regular. Cada nvel acrescenta um abono ao salrio base do funcionrio, de acordo com a seguinte tabela: Excelente 80 % do salrio base

    Bom 50 % do salrio base Regular 30 % do salrio base

    O programa deve ler a matricula do

    funcionrio, seu salrio base, seu nvel de abono e imprimir o salrio a ser pago. O programa deve fornecer tambm a matrcula do funcionrio de maior abono e a mdia do abono para os funcionrios classificados como Regular.

    O programa termina ao ler um valor de matrcula negativo.

    93) A TELERJ deseja calcular as contas telefnicas de seus assinantes atravs do computador. A cobrana de seus servios feita da seguinte maneira: 1. Tarifa bsica

    telefone residencial (cdigo 1): R$ 7,00 telefone comercial (cdigo 2): R$ 20,00

    2. Servio local: R$ 12,00 por pulso excedente (acima de 90

    pulsos) 3. Servio despertador:

    R$ 5,00 por vez. Na entrada de dados teremos: cdigo do assinante; tipo do telefone (comercial ou residencial); nmero de pulsos registrados para chamadas

    locais e

  • Linguagem de Programao C

    Lembre-se sempre Pgina 8 de 32 A Sorte Ajuda aos Competentes

    Prof.: Oswaldo Borges Peres [email protected]

    nmero de servios de despertador prestados. Faa um programa que leia os dados de um conjunto de assinantes (o cdigo do assinante igual a zero encerra a entrada de dados), calcule e imprima: para cada assinante, o total de sua conta; valor da maior conta e o cdigo do assinante que

    a pagou; o valor mdio arrecadado por assinante no ms. 94) Faa um programa que ajude o DETRAN a saber o total de recursos que sero arrecadados com a aplicao de multas de trnsito.

    O programa deve ler as seguintes informaes para cada motorista: o nmero da carteira de motorista (de 1 a 4327);

    o nmero de multas; o valor de cada uma das multas. Deve ser impresso o valor da dvida para cada motorista e ao final da leitura o total de recursos arrecadados (somatrio de todas as multas). O programa dever imprimir tambm o nmero da carteira do motorista que obteve o maior nmero de multas.

    O programa termina ao ler a carteira de motorista de valor 0. Valores invlidos de carteira de motorista no devem ser processados, embora suas multas devam ser lidas.

    95) Faa um programa que implemente o jogo da senha (para 2 pessoas): a) o jogador 1 digita uma senha (valor inteiro entre 0

    e 100) sem o conhecimento do jogador 2 b) o jogador 2 tem 5 chances para descobrir a senha c) a cada tentativa do jogador 2, o programa deve

    avisar se o valor digitado maior, menor ou igual a senha

    d) se o jogador 2 acertar a senha, o programa no deve pedir mais nenhuma tentativa

    96) Faa as seguintes alteraes no jogo da senha (uma de cada vez): a) se o valor digitado em uma tentativa tiver uma diferena igual a 1 para a senha, o programa deve avisar que T QUENTE!. Exemplos:

    senha 43 e valor digitado 42

    senha 43 e valor digitado 44 b) ao final do jogo, se for o caso, enviar a mensagem Voc perdeu. Tente novamente depois c) no permita que o jogador 1 digite valores fora da faixa esperada (entre 0 e 100) d) ao final de uma partida, permita ao usurio jogar novamente

    97) (Prova 1 - 95/2) Faa um programa que calcule quantos litros de gasolina so usados em uma viagem, sabendo que um carro faz 10 Km/litro. O usurio fornecer a velocidade do carro e o perodo de tempo que viaja nesta velocidade, para cada trecho do percurso. Ento, usando as frmulas distncia = tempo X velocidade e litros consumidos = distncia / 10, o programa computar, para todos os valores no negativos de velocidade, os litros de combustvel consumidos. O programa dever imprimir a distncia e o nmero de litros de combustvel gastos naquele trecho. Dever imprimir, tambm, o total de litros gastos na viagem. O programa pra quando for digitado um valor negativo de velocidade.

    98) Escreva um algoritmo que leia valores de venda de discos, CDs e fitas K7s de uma loja em um dia e desconte a comisso do vendedor (3%) e o repasse ao fornecedor (50%) para gerar o ganho da loja na venda de cada pea. O programa dever gerar uma listagem contendo o valor da venda, a comisso, o repasse e o ganho da loja para cada venda, totalizando os valores ao final. Os dados da entrada terminam com o valor de venda igual a 0 (zero).

    99) (Prova 1 - 96/2) Faa um programa que calcule o imposto de renda de um grupo de contribuintes, considerando que: a) os dados de cada contribuinte (CIC, nmero de dependentes e renda bruta anual) sero fornecidos pelo usurio via teclado; b) para cada contribuinte ser feito um abatimento de R$ 600 por dependente; c) a renda lquida obtida diminuindo-se o abatimento com os dependentes da renda bruta anual; d) para saber quanto o contribuinte deve pagar de imposto, utiliza-se a tabela abaixo:

    RENDA LQUIDA IMPOSTO at R$ 1000 0% (isento)

  • Linguagem de Programao C

    Lembre-se sempre Pgina 9 de 32 A Sorte Ajuda aos Competentes

    Prof.: Oswaldo Borges Peres [email protected]

    de R$ 1001 a R$ 5000 15% acima de R$ 5000 25%

    e) o valor de CIC igual a zero indica final de dados; f) o programa dever imprimir, para cada contribuinte, o nmero do CIC e o imposto a ser pago; g) ao final, o programa dever imprimir o total do imposto arrecadado pela Receita Federal e o nmero de contribuintes isentos; h) leve em considerao o fato do primeiro CIC informado poder ser zero.

    100) (Prova 1 - 96/1) Responda as questes abaixo, baseado no algoritmo: #include void main (void) { int x, w, y, z;

    scanf (%d%d%d%d, &w, &x, &y, &z); if (w>=x) { while (y>0) { y = y - 1; if (y>w) { printf (local 1); while (zx) z = 15; printf (local 2); } } printf (local 3); } } printf (local 4); while (w>x) { w = w - 5; printf (local 5); } } Escreva exatamente o que ser impresso pelo algoritmo acima para cada entrada abaixo: a) 2, 4, -15, -3

    b) 7, 2, 4, 0 c) 3, 3, 5, 0 d) -1, -3, 4, 0

    101) (Prova 1 - 96/2) Faa um programa que leia um conjunto de notas de prova (0 a 10) de um conjunto de turmas. O programa dever ler a quantidade de turmas e, para cada turma: o cdigo da turma (inteiro positivo) a quantidade de notas a serem lidas (inteiro

    positivo) as notas da turma (inteiro positivo)

    O programa dever imprimir: a mdia aritmtica das notas de cada turma a maior nota de todas as turmas e o cdigo da

    turma a que ela pertence

    102) (Prova 2 - 94/1) Sabe-se que o produto de dois nmeros inteiros pode ser obtido atravs de sucessivas multiplicaes (por 2), divises (por 2) e somas. Enquanto um dos nmeros dividido por 2, o outro multiplicado por 2. Quando o resultado da diviso for mpar, o outro nmero correspondente (resultado da multiplicao) acumulado; caso contrrio, passa-se para a prxima multiplicao e diviso. Quando o resultado da diviso for 0 (zero), o valor acumulado corresponder ao resultado final. Exemplo:

    Primeiro nmero

    Segundo nmero

    Valor acumulado

    37 mpar 41 41 37:2=18 par 41x2=82 41

    18:2=9 mpar 82x2=164 41+164=205 9:2=4 par 164x2=328 205 4:2=2 par 328x2=656 205

    2:2=1 mpar 656x2=1312 205+1312=1517 1:2=0 fim Resultado =

    1517

    a) Faa uma funo que receba como parmetros 3 nmeros inteiros e retorne a soma do segundo com o terceiro, caso o primeiro seja mpar; seno, retorna o terceiro. b) Usando a funo do item a), faa um programa que leia dois nmeros inteiros e calcule seu produto atravs do mtodo especificado.

  • Linguagem de Programao C

    Lembre-se sempre Pgina 10 de 32

    A Sorte Ajuda aos Competentes Prof.: Oswaldo Borges Peres [email protected]

    103) (Prova 1 - 97/1) Faa um programa em C que calcule e imprima a mdia e a varincia das notas de todos os alunos inscritos em LTP1. As notas devem ser lidas via teclado. O fim da leitura marcado por uma nota negativa. A mdia e a varincia so calculadas da seguinte forma:

    medianotas

    numero de alunos=

    _ _

    var( )

    _ _iancia

    notas

    numero de alunosmedia= -

    2 2 Observar que (notas2) (notas)2 !!!!!!!!

    104) (Prova 2 - 94/2) Devido s confuses dos programadores do TRE, a Justia Eleitoral resolveu contrat-lo para realizar a apurao das eleies.

    Faa um programa que leia o cdigo dos candidatos e informe o nmero de votos recebidos por cada um, bem como o candidato mais votado.

    Voc sabe que 100 candidatos disputam uma vaga. E que a entrada termina assim que for lido um candidato de cdigo negativo. Exemplo: Entrada: 0 0 1 2 2 -1 Sada: 0 3 votos 1 1 voto

    2 2 votos O candidato 0 foi eleito.

    105) (Prova 2 - 96/1) Faa um programa em linguagem C que calcule o valor da rea sob uma curva y = 1/x entre dois pontos. Tais pontos devero ser fornecidos pelo usurio assim como o passo. O valor da integral indica a rea sob a curva, entre duas coordenadas X. Por exemplo, seja o grfico a seguir:

    106) (Prova 1 - 97/1) Faa um programa em C que permita a uma empresa atacadista de cimento controlar os pedidos de compra e o estoque do produto. O programa inicialmente ir ler do teclado a quantidade de sacos de cimento disponveis no estoque da empresa (tipo inteiro) e o preo de cada saco (tipo real). Em seguida, o programa processar os pedidos de compra dos clientes da empresa.

    As informaes a serem lidas do teclado, para cada pedido, so as seguintes: cdigo do cliente (tipo inteiro) quantidade de sacos de cimento a serem

    comprados (tipo inteiro) Um pedido s poder ser aceito se a

    quantidade de sacos disponveis no estoque for maior ou igual quantidade de sacos do pedido e se a quantidade de sacos do pedido no ultrapassar 10% (dez por cento) do total de sacos disponveis no estoque.

    Se o pedido for aceito, o programa dever imprimir o cdigo do cliente, a quantidade de sacos pedidos e o valor do pedido, alm de subtrair do estoque a quantidade de sacos vendidos.

    Se o pedido for rejeitado, as mensagens Estoque insuficiente ou Ultrapassado o mximo permitido devero ser exibidas no vdeo, conforme o motivo da rejeio do pedido.

    Ao final dos pedidos, que ser detectado quando o cdigo do cliente for zero ou o estoque mnimo de cem sacos for atingido, dever ser impressa a quantidade de sacos em estoque.

    ...

    A B

    Valor da funono ponto

    Passo

    A rea formadapela soma dosretngulos sob acurva

  • Linguagem de Programao C

    Lembre-se sempre Pgina 11 de 32

    A Sorte Ajuda aos Competentes Prof.: Oswaldo Borges Peres [email protected]

    107) (Prova 1 - 97/1) Faa um programa em C que gerencie as contas correntes dos 1000 clientes do Banco Oir Cup, um banco talo-anglo-franco-luso-nipo-brasileiro. O programa dever ler, para cada cliente, o cdigo do cliente (tipo inteiro), saldo anterior (tipo real) e as movimentaes da conta. Cada movimentao composta por um cdigo (tipo caractere, C, D ou F, indicando Crdito, Dbito ou Fim das movimentaes deste cliente) e um valor (tipo real). Dever ser impresso, para cada cliente, o seu cdigo e o saldo atual (aps o processamento das movimentaes). Ao final, dever ser impresso o total de dinheiro em caixa no banco (soma dos saldos de todos os clientes) e o cdigo do cliente que possui o maior saldo. Observao: o menor saldo possvel de R$ 1000 negativo.

    Seleo mltipla

    Exerccios de Fixao

    108) Faa um programa que implemente uma mquina de calcular com operaes +, -, *, / e %, atravs da leitura de dois operandos numricos inteiros e do operador (tipo caracter), no formato: operando1 operador operando2. Verifique casos de operaes que no podem ser realizadas (antes de oper-las).

    109) Escreva um programa que leia um peso na Terra e o nmero de um planeta e imprima o valor do seu peso neste planeta. A relao de planetas e dada a seguir juntamente com o valor das gravidades relativas em relao Terra.

    Para calcular o peso no planeta use a frmula:

    PP

    gplanetaTerra

    planeta= 10*

    110) Faa um programa que , dada a idade de um nadador, classifique-o em uma das seguintes categorias:

    111) Em uma eleio presidencial, existem quatro candidatos. Os votos so informados atravs de cdigo. Os dados utilizados para a escrutinagem obedecem seguinte codificao: 1, 2, 3, 4 = voto para os respectivos candidatos; 5 = voto nulo; 6 = voto em branco; Elabore um programa que calcule e imprima: total de votos para cada candidato; total de votos nulos; total de votos em branco; percentual dos votos em branco e nulos sobre o

    total; situao do candidato vencedor sobre os outros

    dois, no caso, se ele obteve ou no mais votos que os outros dois somados.

    Como finalizador do conjunto de votos, tem-se o valor 0.

    112) Faa um programa que calcula a rea de determinadas figuras geomtricas. O programa dever apresentar um menu com as seguintes opes:

    1. quadrado ( lado2 ) 2. retngulo (comprimento * largura) 3. crculo (3,14 * raio 2 ) 4. trapzio ((base maior + base menor) * altura /

    2) De acordo com a opo, o programa deve pedir os

    # Gravidade relativa Planeta 1 0,37 Mercrio 2 0,88 Vnus 3 0,38 Marte 4 2,64 Jpiter 5 1,15 Saturno 6 1,17 Urano

    Categoria Idade Infantil A 5 a 7 anos Infantil B 8 a 10 anos Juvenil A 11 a 13 anos Juvenil B 14 a 17 anos

    Senior maiores de 18 anos

  • Linguagem de Programao C

    Lembre-se sempre Pgina 12 de 32

    A Sorte Ajuda aos Competentes Prof.: Oswaldo Borges Peres [email protected]

    valores necessrios para realizar o clculo. Utilize o comando switch.

    113) Faa o chins do programa abaixo, mostrando exatamente o que seria impresso se fossem digitados os seguintes caracteres na entrada: EVA e ADAO# #include void main (void) { char ch; int i = 0; while ((i

  • Linguagem de Programao C

    Lembre-se sempre Pgina 13 de 32

    A Sorte Ajuda aos Competentes Prof.: Oswaldo Borges Peres [email protected]

    Caracteres

    Exerccios de Fixao

    116) Faa um programa que imprima as letras minsculas do alfabeto e seus respectivos cdigos decimais da tabela ASCII.

    117) Faa um programa que leia uma seqncia de caracteres terminada por # e imprima o nmero de caracteres lidos.

    118) Faa um programa que leia uma seqncia de caracteres terminada por um (linha de texto) e imprima a quantidade de caracteres lidos.

    119) Faa um programa que leia uma seqncia de caracteres terminada por um (linha de texto) e os imprima novamente na tela com exceo dos caracteres de espao em branco que no devem ser impressos.

    120) Faa um programa que leia uma seqncia de caracteres terminada por um (linha de texto) e imprima a quantidade de vogais, a quantidade de consoantes e a quantidade de caracteres no letras encontrados. Considere apenas as letras minsculas.

    121) Faa um programa que leia uma seqncia de caracteres terminada por um (linha de texto) e imprima a quantidade total de caracteres lidos e a porcentagem de caracteres do tipo letra encontrados.

    122) Faa um programa que leia uma linha de texto da entrada e imprima o nmero de letras maisculas e o nmero de letras minsculas encontradas.

    123) Durante a segunda guerra mundial, havia necessidade de codificao das mensagens transmitidas, para isso eram necessrios cdigos secretos, um desses cdigos era o POLAR/ZENIT, que consistia em trocar as ocorrncias da letra P pela letra Z e vice-versa, as letras O pelas letras E, e vice-versa, e assim por diante. Faa um programa que leia uma linha de texto da entrada e imprima os

    caracteres codificados segundo o cdigo POLAR/ZENIT.

    124) Faa um programa que leia uma linha de texto e imprima o nmero de palavras que compe a linha. Considere que cada palavra esta separada por exatamente um nico caracter de espao.

    125) Faa um programa que leia um caracter e uma linha de texto e imprima a posio do caracter na linha a cada vez que ele for digitado. O caracter pode aparecer mais de uma vez na linha.

    126) Faa um programa que leia uma seqncia de linhas de texto (um texto) terminada com uma linha vazia e imprima a quantidade total de caracteres lidos.

    127) Faa um programa que leia uma seqncia de linhas de texto terminada com uma linha vazia e imprima a quantidade de caracteres da maior linha do texto.

    128) Faa um programa que leia uma seqncia de linhas de texto terminada com uma linha vazia e imprima a quantidade mdia de caracteres encontrados em cada linha.

    129) Faa um programa que procure por um determinado caracter em um texto (conjunto de linhas), lido da entrada, indicando os nmeros das linhas em que o caracter aparecer e tambm a respectiva posio em cada linha (em nmero de caracteres). O caracter pode aparecer mais de uma vez em uma linha.

    130) Faa um programa que leia uma seqncia de linhas de texto e imprima os caracteres lidos novamente na tela com exceo dos caracteres de espao em branco, que no devem ser impressos.

    131) Faa um programa que leia um texto (conjunto de linhas) e imprima a quantidade de vogais, a quantidade de consoantes e a quantidade de caracteres no letras encontrados. Considere apenas as letras minsculas.

  • Linguagem de Programao C

    Lembre-se sempre Pgina 14 de 32

    A Sorte Ajuda aos Competentes Prof.: Oswaldo Borges Peres [email protected]

    132) Faa um programa que leia um texto da entrada e converta os caracteres maisculos em minsculos.

    133) Faa um programa que leia um texto da entrada e converta os caracteres maisculos para minsculos e vice-versa.

    134) Faa um programa que leia trs caracteres numricos (0 a 9) da entrada e imprima o nmero inteiro correspondente usando printf com formato %d . Lembre-se que voc deve compor o nmero, o primeiro caracter ser a centena, o segundo a dezena e o terceiro a unidade.

    135) Faa um programa que leia um texto da entrada e imprima o nmero de palavras encontradas no texto.

    Exerccios Propostos

    136) Faa um programa que calcule o resultado de uma expresso aritmtica lida da entrada. A expresso ter um nmero indeterminado de termos envolvendo as operaes de soma, subtrao, diviso e multiplicao. No leve em considerao a precedncia dos operadores. proibido o uso da funo scanf para a leitura dos operadores e operandos. Exemplo: 10 + 5 * 2 = 30

    137) Faa um programa em C que leia quatro caracteres da entrada padro (representado um nmero na base 16) e um caracter representando um sinal e imprima o valor numrico decimal correspondente. O caracter que representa o sinal (+ ou -) pode aparecer em qualquer parte do nmero. Os demais caracteres sero dgitos (0, 1, 2, ..., 9) ou letras maisculas (A, B, C, D, E, F). Para facilitar assuma que o usurio ir digitar exatamente o que o programa espera ler.

    Exemplo: 110-B -4363

    138) (Prova 4 - 96/1) Faa um programa que leia uma linha (terminada por ) com um texto compactado e a imprima de forma descompactada. Ao aparecer no texto o caractere @, significa que os dois caracteres seguintes so, respectivamente, o

    nmero de vezes que o caractere se repete e o caractere a ser repetido.

    Exemplo: texto compactado: x@3ux@5a texto descompactado: xuuuxaaaaa

    139) (Prova 2 - 94/1) Faa um programa que leia da entrada padro (teclado) uma seqncia de caracteres, terminada pelo caractere '#' e imprima quantos caracteres, quantas palavras e quantas frases foram lidas. Observaes: Para facilitar, considere que: cada frase delimitada por '?', '!'ou '.'; cada palavra delimitada por '\n', '\t' ou espao; no existem espaos antes e depois de um sinal de pontuao; cada palavra separada das demais por um nico espao; o texto comea por uma letra; no existem sinais de pontuao consecutivos.

    140) (Prova 3 - 96/2) O programa abaixo funciona como esperado? Justifique sua resposta. #include #include void main (void) { int i; char nome[10]; for (i = 0; i < 10; i++) nome[i] = getche (); puts (nome); }

    141) (Prova 1 - 97/1) Faa um programa em C que leia uma linha de texto e substitua cada vogal lida por N vogais iguais, onde N representa o nmero de vogais lidas at ento. Para os demais caracteres, o programa deve imprimir apenas o prprio caractere. Considere que o usurio digitar apenas caracteres minsculos. O programa dever imprimir, ao final, o percentual de consoantes em relao ao total de caracteres digitados. Exemplo: Texto lido: apenas um exemplo!!!!!!! Impresso: apeenaaas uuuum eeeeexeeeeeemplooooooo!!!!!!! Percentual: 33.333333

  • Linguagem de Programao C

    Lembre-se sempre Pgina 15 de 32

    A Sorte Ajuda aos Competentes Prof.: Oswaldo Borges Peres [email protected]

    142) (Prova 4 - 96/2) Faa um programa que compacte um texto lido segundo o seguinte algoritmo: a) se houver de 3 a 9 caracteres repetidos, o

    programa dever imprimir o caracter @ seguido do nmero de caracteres repetidos e do caracter repetido,

    b) se no houver mais do que trs repeties, o prprio caracter dever ser impresso tantas vezes quanto ele apareceu,

    c) se houver mais do que 9 repeties, o programa dever imprimir seqncias semelhantes a do item a at totalizar o nmero de repeties necessrias (ver exemplo da letra k).

    Exemplo:

    Entrada de dados: abcccdeeeee fghhhhhhhhhh ijkkkkkkkkkkkkkkklm

    Sada de dados: ab@3cd@5e fg@9hh ij@9k@6klm

    143) a) Faa uma funo que leia um valor, em

    algarismos romanos (considere vlidos apenas os algarismos I, V e X), e o converta para seu nmero decimal correspondente, devolvendo o valor calculado. O nmero em romanos ser lido como uma seqncia de caracteres terminada com um .

    b) Faa uma funo que receba 2 valores decimais e um operador (+, -, *, /) e calcule o resultado da operao.

    c) Faa um programa, utilizando as funes dos itens anteriores, que leia 2 (dois) nmeros em algarismos romanos e um operador (+, -, *, /) e calcule o resultado da operao.

    Funes

    Exerccios de Fixao

    144) Faa uma funo que:

    a) receba um inteiro (de um dgito) como parmetro e retorne o caractere correspondente.

    b) receba um caractere como parmetro e retorne o seu correspondente em maisculo (se minsculo) ou o prprio caractere.

    c) receba um caractere como parmetro e retorne o seu correspondente em minsculo (se maisculo) ou o prprio caractere.

    d) receba um caractere como parmetro e retorne o seu correspondente cdigo ASCII (inteiro).

    e) receba um caractere como parmetro e retorne verdadeiro (1) se for letra e falso (0), caso contrrio.

    f) receba um caractere como parmetro e retorne verdadeiro (1) se for dgito e falso (0), caso contrrio.

    g) receba um caractere como parmetro e retorne verdadeiro (1) se for espao e falso (0), caso contrrio.

    h) receba um caractere como parmetro e retorne verdadeiro (1) se for letra maiscula e falso (0), caso contrrio.

    i) receba um caractere como parmetro e retorne verdadeiro (1) se for letra minscula e falso (0), caso contrrio.

    j) retorne o resultado de um nmero elevado a outro (ambos recebidos como parmetros).

    k) retorne o resto da diviso inteira de um nmero por outro.

    145) Faa uma funo que receba um caracter como parmetro e retorne 1 caso seja uma consoante e 0 em caso contrrio.

    146) Faa uma funo que receba um caracter como parmetro e retorne 1 caso seja uma vogal e 0 em caso contrrio.

    147) Faa uma funo que receba um nmero inteiro como parmetro e retorne seu valor absoluto.

    148) Faa uma funo que receba um nmero inteiro como parmetro e retorne 1 se sua raiz quadrada exata e 0 em caso contrrio. A funo de retornar, atravs de um parmetro passado por referncia, o valor aproximado da raiz.

  • Linguagem de Programao C

    Lembre-se sempre Pgina 16 de 32

    A Sorte Ajuda aos Competentes Prof.: Oswaldo Borges Peres [email protected]

    149) Faa uma funo que receba um caracter como parmetro por referncia. Se o caracter for uma letra minscula, a funo deve convert-la para maiscula. A funo deve retorna 1 se o caracter for uma letra e 0 em caso contrrio.

    150) Faa uma funo que receba um caracter como parmetro por referncia. Se o caracter for um digito, a funo deve convert-lo para o seu respectivo valor numrico. Lembre-se 0 caracter diferente de 0 numrico. A funo deve retorna 1 se o caracter for um dgito e 0 em caso contrrio.

    151) (Prova 3 - 96/2) Faa os prottipos (apenas!!) das funes f(), g() e h() utilizadas pela funo main() abaixo: void main (void) { int v[6]={0,10,20,40,50,60}, y; float x, z; x = f (10); g (x, &y); g (z, &v[4]); z = h (v[5], v); ... ... ... }

    152) (Prova 3 - 97/1) Faa os prottipos (apenas!!) das funes abaixo, baseado nas informaes dadas: a) void main (void) { int a, b[10]; char d, e[10]; float g, h[10];

    ... ... .... faz_tudo (a, &d, &g);

    g = faz_nada (a, b[1], b); no_sei (3.14, g, h[2], &h[3]);

    e[a] = ta_certo (); ... ... ....

    }

    b) void main (void) { int v[6]={0, 10, 20, 40, 50, 60},y; float x, z;

    ... ... ... x = f (10); g (x, &y); g (z, &v[4]); z = h (v[5], v); ... ... ... }

    153) (Prova 3 - 97/1) Faa as funes necessrias para que os programas abaixo funcionem conforme o esperado: a) #include void main (void) {

    int a, b, c, erro; scanf (%d%d, &a, &b); c = divide (a, b, &erro); if (erro)

    printf (Erro: diviso por zero\n);

    else printf (%d dividido por %d = %d\n, a, b, c);

    } b) #include void main (void) {

    int v[5]={1, 2, 3, 4, 5}, i, j; printf (\nDigite as posies do vetor

    que devem ser trocadas); scanf (%d%d, &i, &j); troca (v, i, j); for (i=0; i

  • Linguagem de Programao C

    Lembre-se sempre Pgina 17 de 32

    A Sorte Ajuda aos Competentes Prof.: Oswaldo Borges Peres [email protected]

    155) a) Faa uma funo chamada fatorial que deve

    receber um valor inteiro como parmetro e retornar o fatorial deste nmero.

    b) Faa um programa que calcule o valor da combinao de n elementos r a r. A frmula da

    combinao a seguinte: ( )Cn

    r n rnr =

    * -!

    ! !. Leia

    os valores de n e r da entrada e use a funo do item anterior para calcular o resultado.

    156) Construa uma funo que, dado um nmero de conta corrente com trs dgitos, retorne o seu dgito verificador, o qual calculado da seguinte maneira: Exemplo: nmero da conta: 25678 Somar o nmero da conta com o seu inverso: 256

    + 652 = 908; multiplicar cada dgito pela sua ordem posicional e

    somar este resultado: 9 0 8 9 0 8

    x 1 x 2 x 3 9 + 0 + 24 = 33

    o ltimo dgito deste resultado o dgito verificador da conta (33 3).

    157) Faa uma funo que calcule o peso ideal de uma pessoa. A funo deve receber o valor da altura da pessoa e um valor numrico indicando o sexo (0 - masculino e 1 - feminino). A funo deve calcular o peso ideal de acordo com as seguintes frmulas: homens (72.7 * altura) - 58 e mulheres (62.1 * altura) - 44.7. Faa a funo main para completar o seu programa. A funo main deve ler a altura e o sexo de um conjunto de pessoas e imprimir o peso ideal at que seja digitado um valor negativo para altura.

    158) a) Faa uma funo (chamada conv) que leia um

    dgito (caractere) e retorne o valor numrico correspondente.

    b) Faa uma funo (chamada le_converte) que leia 5 dgitos (caracteres), representando uma seqncia de bits, e retorne o valor numrico

    decimal correspondente. obrigatrio o uso da funo anterior. Voc pode fazer esta questo mesmo que no tenha feito a anterior.

    c) Seja a funo main abaixo: void main (void) { int a, b, c; a = le_converte(); b = le_converte(); c = a + b; printf ("\n%d", c); imprime_em_binario (c); } Faa a funo imprime_em_binario.

    159) (Prova 2 - 96/1) Crie as funes necessrias ao funcionamento correto do programa abaixo. No permitido: alterar a funo main(); usar printf(); usar scanf().

  • Linguagem de Programao C

    Lembre-se sempre Pgina 18 de 32

    A Sorte Ajuda aos Competentes Prof.: Oswaldo Borges Peres [email protected]

    void main (void) { int x, y, z; int n; scanf (%d, &n); x = funcao_q_le (n); y = funcao_q_le (n); z = x + y; funcao_q_escreve (z, n+1); }

    a) a funo funcao_q_le(i) dever ler i caracteres e retornar o seu valor decimal. b) a funo funcao_q_escreve (a, i) dever escrever o valor a de at i dgitos.

    160) O nmero irracional p pode ser calculado

    atravs da expresso p =-

    +=

    4 ( 1)2i 1i

    i 0

    . Construa uma

    funo em C que receba como parmetro (passagem por valor) o nmero de termos a serem usados no clculo de p, e retorne o valor calculado para p.

    161) As razes de uma equao do segundo grau da forma ax bx c 02 + + = podem ser calculadas

    atravs da expresso xb

    2a=

    - D, onde

    D = -b 4ac2 . Faa um programa completo em C que leia um nmero indeterminado de coeficientes a, b e c do teclado (o programa dever terminar quando o valor do coeficiente a for zero) e, para cada grupo de coeficientes, chame uma funo que calcule as razes da equao e as exiba no monitor, caso elas sejam reais, ou a mensagem Razes Imaginrias , caso elas sejam imaginrias. A funo dever receber como parmetros os coeficientes a, b e c (passagem por valor) e as razes x1 e x2 (passagem por referncia). Os valores devolvidos pela funo atravs dos parmetros sero os seguintes: a) se D > 0, x1 e x2 contero duas razes reais e

    distintas; b) se D = 0 , x1 e x2 contero duas razes reais e

    iguais; c) se D < 0, x1 e x2 no devero ser alteradas pela

    funo. O valor de retorno da funo ser o valor de D; indicando a quem chamou a funo a natureza das razes (reais e distintas, reais e iguais ou imaginrias). Obs: use a funo pow(x,y) para calcular xy, onde x e y so do tipo float. Lembre-se de que a raiz quadrada de um nmero real x igual a x0.5.

    Vetores

    Exerccios de Fixao

    162) Faa um programa que leia e imprima o resultado da soma entre dois vetores inteiros de 50 posies.

    163) Elabore um algoritmo que, dados dois vetores inteiros de 20 posies, efetue as respectivas operaes indicadas por um outro vetor de 20 posies de caracteres tambm fornecido pelo usurio, contendo as quatro operaes aritmticas em qualquer combinao, armazenando os resultados em um quarto vetor.

    164) Construa um algoritmo que preencha um vetor de 100 elementos inteiros colocando 1 na posio correspondente a um quadrado perfeito e 0 nas demais.

    165) Faa um programa que leia uma conjunto de linhas de texto, terminadas com uma linha vazia e imprima a quantidade de cada uma das letras minsculas encontradas no texto.

    166) Faa um programa que leia uma linha de texto, terminada como um e imprima o inverso da linha que foi lida. Exemplo: Isto e apenas um exemplo

    olpmexe mu sanepa e otsI

    167) Faa uma funo chamada inverte , que receba um vetor de nmeros inteiros como parmetro e seu tamanho. A funo deve inverter a ordem dos

  • Linguagem de Programao C

    Lembre-se sempre Pgina 19 de 32

    A Sorte Ajuda aos Competentes Prof.: Oswaldo Borges Peres [email protected]

    elementos do vetor, de modo que o primeiro elemento passe a ser o ltimo, o segundo passe a ser o penltimo e assim por diante. Faa um programa para testar a funo inverte .

    168) Faa um programa que leia um conjunto de linhas de texto e imprima a linha que teve o maior nmero de vogais. Considere que cada linha ter um mximo de 80 caracteres.

    169) Faa um programa que leia uma seqncia de 10 nmeros e informe o total de ocorrncias do ltimo nmero lido. Exemplo: supondo a seguinte seqncia de nmeros

    38 4 23 5 6 7 4 12 4 o resultado ser:

    O nmero 4 apareceu 3 vezes

    170) Faa um programa que leia um texto (seqncia de linhas) terminado por uma linha vazia (uma linha com apenas um ) e informe o total de ocorrncias de cada dgito (de 0 at 9). Os dgitos que no ocorreram no texto no devem ser listados. Exemplo: supondo a seguinte seqncia de caracteres:

    Este eh 1 exemplo. Esta eh apenas a linha 2 do exemplo. A linha 3 vem depois da linha 2. O programa deve funcionar para muito mais do que 239 casos.

    A sada ser:

    O dgito 1 apareceu 1 vez(es). O dgito 2 apareceu 3 vez(es). O dgito 3 apareceu 2 vez(es). O dgito 9 apareceu 1 vez(es).

    171) Faa um programa que leia um vetor ordenado de 10 nmeros inteiros e uma chave, informe a posio da chave no vetor ou uma mensagem de erro se o nmero no for encontrado. Obs.: faa uma funo que realize a busca. Esta funo no dever imprimir nada. Exemplo: supondo a seguinte seqncia:

    1 2 3 8 97 412 446 957 8912 8974 se a chave for 446, o resultado ser: Chave na

    posio 6. se a chave for 413, o resultado ser: Chave no encontrada.

    172) Faa um programa que leia a matricula e a nota final de 10 alunos de uma turma de LTP1 e imprima os dados dos alunos (matricula e nota) ordenados por nota (ordem decrescente).

    173) Faca uma funo que receba um vetor de caracteres chamado linha e um caracter chamado ch como parmetros. Retire todas as ocorrncias do caracter ch do vetor linha. O fim do vetor linha ser indicado pelo caracter '\n'. Faca um programa para testar a sua funo.

    174) Faa uma funo que receba um vetor de caracteres, seu tamanho e um caracter e retire todas as ocorrncias desse caracter no vetor. A funo deve retornar o total de caracteres restantes no vetor. Faa uma main() para testar sua funo, do jeito que voc achar necessrio.

    175) Faa uma funo que receba um vetor de inteiros (ordenados de forma crescente) e seu tamanho e retorne o maior valor menor que a mdia de seus elementos. Faa uma main() para testar sua funo, do jeito que voc achar necessrio.

    176) Faa um programa que leia um texto (seqncia de linhas) da entrada e imprima as 5 letras minsculas de maior ocorrncia no texto. Dica: Faca um vetor de contadores, um para cada letra e ordene este vetor em ordem decrescente.

    177) Faa uma funo que receba um vetor de caracteres, seu tamanho e dois caracteres e substitua todas as ocorrncias do 1o caracter pelo 2o. Faa uma main() para testar sua funo, do jeito que voc achar

    178) Faa uma funo que receba um vetor de caracteres, seu tamanho e um inteiro. Se o caracter da posio indicada pelo inteiro for letra, retornar o total de letras do vetor; seno, retornar o total de caracteres no-letra. Faa uma main() para testar sua funo, do jeito que voc achar necessrio.

  • Linguagem de Programao C

    Lembre-se sempre Pgina 20 de 32

    A Sorte Ajuda aos Competentes Prof.: Oswaldo Borges Peres [email protected]

    179) Faa uma funo que receba um vetor de inteiros positivos, um vetor de caracteres e o tamanho (nico) dos vetores. A funo deve imprimir cada um dos caracteres do 2o vetor n vezes, onde n o contedo da posio correspondente no vetor de inteiros. Faa uma main() para testar sua funo, do jeito que voc achar necessrio.

    180) Faa uma funo que receba um vetor de inteiros e seu tamanho e retorne 1 (um) se o vetor estiver ordenado de forma crescente ou 0 (zero) se no estiver. Faa uma main() para testar sua funo, do jeito que voc achar necessrio.

    181) Faa uma funo que receba dois vetores de inteiros e seus tamanhos e imprima os elementos comuns aos dois vetores. Faa uma main() para testar sua funo, do jeito que voc achar necessrio.

    182) Faa uma funo que receba um vetor de inteiros e seu tamanho e retorne o menor dos elementos pares do vetor. Faa uma main() para testar sua funo, do jeito que voc achar necessrio.

    183) Faa uma funo que implemente uma busca binria. Esta funo recebe um vetor de caracteres, seu tamanho e uma chave e retorna a posio da chave no vetor. Faa uma main() em que, se a chave for encontrada no vetor, ela ser substituda por um * (asterisco).

    184) Faa uma funo que receba um vetor de inteiros e seu tamanho e retorne 1 (um) se o vetor estiver ordenado de forma decrescente ou 0 (zero) se no estiver. Faa uma main() para testar sua funo, do jeito que voc achar necessrio.

    185) Faa uma funo que receba como parmetros dois vetores de reais, e um inteiro indicando a quantidade de elementos que os dois vetores tm. A funo dever retornar o produto interno dos dois vetores. Exemplo: X = (1,2,3,4) Y = (4,3,2,1) X.Y = 4 + 6 + 6 + 4 = 20

    186) Faa uma funo que receba um vetor de n nmeros inteiros positivos e obtenha a maior diferena (em mdulo) entre dois elementos consecutivos deste vetor. O valor da maior diferena dever ser retornado pela funo. Exemplo: V = (1,2,4,7,8) A maior diferena em mdulo 3.

    Exerccios Propostos

    187) Faa um programa que leia um texto e uma chave, e embaralhe as letras do texto conforme a ordem dada pela chave. Por exemplo: texto: abcdefghij chave: 31524 sada: caebdhfjgi

    Ou seja, o texto dividido em pedaos do tamanho da chave (nesse caso 5). E cada pedao embaralhado da seguinte forma: em 1o lugar a 3a letra em 2o lugar a 1a letra em 3o lugar a 5a letra em 4o lugar a 2a letra em 5o lugar a 4a letra

    Faa seu programa para uma chave de 5 elementos e um texto de at 80 caracteres. Se o texto lido no tiver um nmero de caracteres mltiplo de 5, complete com espaos em branco. Por exemplo: texto: abcdefg novo texto: abcdefg Para esse caso a sada seria: sada: caebd f g

  • Linguagem de Programao C

    Lembre-se sempre Pgina 21 de 32

    A Sorte Ajuda aos Competentes Prof.: Oswaldo Borges Peres [email protected]

    188) A coordenao do TPD deseja saber quantos alunos esto cursando ao mesmo tempo as cadeiras de LTP1 e Organizao de Computadores. Faa um programa que leia os cdigos de matricula dos alunos de ambos os cursos, sabendo-se que existem 150 alunos cursando LTP1 e 120 alunos cursando Organizao de Computadores. O programa deve imprimir o cdigo das matriculas dos alunos que esto cursando ambas as disciplinas.

    189) Faa um programa que leia uma linha de texto, terminada com um e imprima a linha com suas palavras na ordem inversa. Considere que cada palavra separada por apenas um caracter de espao. Exemplo: Isto e apenas um exemplo

    exemplo um apenas e Isto

    190) Faa um programa que realize a reserva de passagens areas de uma companhia. Alm da leitura do nmero de vos e quantidade de lugares disponveis, ler vrios pedidos de reserva, constitudos do numero da carteira de identidade do cliente e do nmero do vo desejado.

    Para cada cliente, verificar se h possibilidade no vo desejado. Em caso afirmativo, imprimir o nmero da identidade do cliente, e o nmero do vo, atualizando o nmero de lugares disponveis. Caso contrrio, avisar ao cliente a inexistncia de lugares.

    191) Faca um programa capaz de corrigir provas de mltipla escolha. Cada prova ter 10 questes, valendo 1 ponto cada uma. O programa deve inicialmente ler o gabarito da prova. Ele ser constitudo de um conjunto de dez caracteres representando a resposta para cada uma das questes. Cada questo pode ter uma das seguintes respostas: 'a', 'b', 'c', 'd' ou 'e'.

    Aps a leitura do gabarito, o programa devera ler as respostas dos alunos. Para cada aluno devera ser lido o seu numero de matricula e suas respostas. O programa devera calcular a nota do aluno e imprimi-la de acordo com o gabarito. A leitura termina com um cdigo de matricula negativo. Ao final, o programa devera imprimir a percentagem de aprovao, sabendo-se que a nota mnima e 5.

    192) Faca um programa que leia uma seqncia de 100 nmeros da entrada de forma desordenada. O programa deve imprimir, aps a leitura, os nmeros que se repetiram na seqncia, informando quantos vezes cada um deles apareceu.

    193) Faa um programa que leia uma seqncia de 10 nmeros reais da entrada e imprima somente uma vez cada nmero lido. Mesmo que o nmero seja digitado mais de uma vez na entrada, deve aparecer somente uma nica vez na sada.

    194) Uma locadora de vdeo possui 200 ttulos de filmes, codificados de 0 a 199. A locadora possui uma ou mais fitas para cada ttulo. Faa um programa em C que leia as seguintes informaes sobre cada fita:

    Cdigo do filme (0 a 199) e Nmero de emprstimos (inteiro) e informe, na sada, para cdigo de filme, quantas fitas devem ser substitudas.

    Como um ttulo (filme) pode possuir mais de uma fita, na entrada de dados devem aparecer cdigos de filmes replicados, representando as diversas fitas daquele ttulo.

    A locadora considera uma fita inutilizvel e, portanto, passvel de substituio, aquelas que foram emprestadas mais de 500 vezes. A leitura termina quando for lido um cdigo de filme invlido.

    195) Faa um programa que permita armazenar os cdigos (inteiro) e o preo (real) de um conjunto de peas. O programa deve ser capaz de armazenar os dados de at 100 peas, com cdigos variando de 0 a 999. Construa o seu programa, de modo que o usurio seja capaz de incluir, excluir, consultar e alterar os dados de uma pea. Faa tambm uma opo permitindo que o usurio veja todas as peas j cadastradas.

    196) Faa um programa para gerenciar um sistema de reservas de mesas em uma casa de espetculo. A casa possui 30 mesas de 5 lugares cada. O programa dever permitir que o usurio escolha o cdigo de uma mesa (100 a 129) e fornea a quantidade de lugares desejados. O programa dever informar se

  • Linguagem de Programao C

    Lembre-se sempre Pgina 22 de 32

    A Sorte Ajuda aos Competentes Prof.: Oswaldo Borges Peres [email protected]

    foi possvel realizar a reserva e atualizar a reserva. Se no for possvel, o programa dever emitir uma mensagem. O programa deve terminar quando o usurio digitar o cdigo 0 (zero) para uma mesa ou quando todos os 150 lugares estiverem ocupados.

    197) (Prova 2 - 96/1) Faa um programa que leia 1000 valores reais da entrada e identifique o valor mais prximo da mdia. Exemplo supondo quatro valores:

    2.5 7.5 10.0 4.0 mdia = 6.0 (no deve ser impresso) valor mais prximo da mdia = 7.5 (resultado a

    ser impresso)

    198) (Prova 2 - 96/2) Faa um programa que leia dois vetores ordenados, de 100 posies cada, e gere um terceiro vetor, tambm ordenado, com todos os elementos dos vetores anteriores. Exemplo para vetores de 5 posies: entrada: v1 = {1, 4, 5, 9, 111}

    v2 = (3, 3, 5, 8, 300} sada: v3 = {1, 3, 3, 4, 5, 5, 8, 9, 111, 300}

    199) (Prova 2 - 96/2) Faa um programa que leia uma seqncia de no mximo 8572 nmeros reais, terminada por 0 (zero). O programa deve imprimir uma ocorrncia de cada nmero. Exemplo: entrada: 1 1 4 9.5 1 800 4 -3.2 9.5 801 0 sada: 1 4 9.5 800 -3.2 801

    200) (Prova 4 - 96/1) Observe a funo main() abaixo: void main (void) { int el[100],qtd; puts (Entre com o nmero de elementos a serem lidos); scanf (%d,&qtd); le_vet (el,qtd); computa (el,qtd); imprime (el,qtd); descomputa (el,qtd); imprime (el,qtd); }

    Faa as seguintes funes: a) le_vet(): esta funo l n elementos de um vetor,

    onde o nmero de posies e o vetor so recebidos como parmetros.

    b) imprime(): esta funo imprime n elementos de um vetor, onde o nmero de posies e o vetor so recebidos como parmetros.

    c) computa(): esta funo soma a cada elemento do vetor todos os seus subseqentes, onde o nmero de posies e o vetor so recebidos como parmetros.

    d) descomputa(): esta funo restaura os valores originais do vetor, onde o nmero de posies e o vetor so recebidos como parmetros.

    Exemplo para 4 elementos lidos: Vetor original: 6 3 2 9 Vetor aps a execuo da funo computa(): 20 14 11 9 Vetor aps a execuo da funo descomputa(): 6 3 2 9

    201) (Prova 3 - 96/2) Faa um programa que leia uma seqncia de nmeros reais terminada por 0 (zero) (com, no mximo, 1000 nmeros diferentes - o usurio bonzinho) e imprima o nmero de maior ocorrncia. Note que pode -se ter mais do que 1000 nmeros na entrada de dados.

    202) (Prova 2 - 97/1) Faa um programa que codifique um texto lido da entrada. Inicialmente o programa dever ler duas tabelas de codificao, uma para codificar as letras minsculas e outra para as maisculas. As tabelas associam a cada letra um outro caracter qualquer. A seguir o programa ler um texto terminado por uma linha vazia, codificando todas as letras que aparecem no texto.

    203) (Prova 2 - 97/1) Faa uma funo que receba como parmetros dois vetores de caracteres e as quantidades de elementos presentes em cada vetor (dois valores). A funo deve retirar do primeiro vetor todos os caracteres que NO aparecerem no segundo vetor (interseo) e retornar o nmero de caracteres restantes no primeiro vetor. Exemplo: parmetros :

  • Linguagem de Programao C

    Lembre-se sempre Pgina 23 de 32

    A Sorte Ajuda aos Competentes Prof.: Oswaldo Borges Peres [email protected]

    v1 = {w, b, q, o, a, -, t, p, x, r, u, o, y, v, a}

    v2 = {b, +, e, o, -, a, a, l, g, o, r, v, p} n1 = 15 n2 = 13 aps a execuo da funo : v1 = {b, o, a, -, p, r, o, v, a} v2 = {b, +, e, o, -, a, a, l, g, o, r, v, p} valor retornado pela funo: 9 Obrigaes do aluno: no declarar um terceiro vetor na funo.

    204) (Prova 2 - 97/1) a) Faa uma funo chamada busca_bin() que

    recebe um vetor de inteiros, a quantidade de elementos e um valor a ser localizado no vetor (nesta ordem). A funo deve retornar a posio do valor no vetor ou -1, caso no o encontre.

    b) Faa uma funo chamada le_dados() que recebe dois vetores, um de cdigo (int) e outro de salrios (float), o tamanho dos vetores (iguais). A funo preenche os vetores atravs da entrada de dados padro (teclado).

    c) Uma empresa possui 100 vendedores. Cada vendedor recebe um salrio fixo e um abono de 1,5% sobre o valor de suas vendas. Faa um programa que calcule o salrio final a ser pago a cada vendedor, de acordo com o volume de suas vendas. O programa deve ler inicialmente o cdigo de cada funcionrio (inteiro, entre 1533 e 2000) e seu salrio base, para todos os vendedores. Considere que estes dados sero fornecidos em ordem crescente por cdigo. A seguir, o programa dever processar as vendas, lendo o cdigo do funcionrio que realizou a venda e o valor da venda. Isto dever ser feito para cada venda realizada. O programa termina a leitura de vendas quando for digitado um valor de cdigo invalido (menor que 0). O programa deve calcular o abono a ser pago a cada vendedor, imprimindo seu salrio final.

    Observao: no item c) obrigatria a utilizao das funes dos itens anteriores, mesmo que voc no as tenha feito.

    205) (Prova 2 - 97/1) Faa um programa que gerencie as informaes dos empregados de uma firma de calados. Para cada empregado dever ser lido o seu nmero de cadastro na empresa (inteiro) e o nmero de meses desde sua contratao. A firma possui 150 empregados. O programa deve imprimir o nmero de cadastro dos 30 empregados contratados mais recentemente. A firma contrata, no mximo, um empregado por ms.

    206) Voc foi encarregado de desenvolver um programa em C para controlar o estoque e as vendas das Organizaes Tabajara. O programa em questo ir ler inicialmente o cdigo, a quantidade disponvel em estoque e o preo dos produtos que estaro disponveis para a venda. O dados lidos do teclado sero armazenados em vetores; um cdigo de produto igual a zero indica o trmino do cadastramento de produtos. Sabe-se que as Organizaes Tabajara trabalham com no mximo 50 produtos diferentes. A segunda fase do programa a venda em si. Voc dever ler do teclado o cdigo do produto a ser vendido e a quantidade requerida. Se o cdigo do produto estiver cadastrado a venda poder ser realizada, caso contrrio a mensagem Produto no Cadastrado dever ser exibida no monitor. Caso o produto esteja disponvel, a venda s poder ser realizada se a quantidade disponvel no estoque for suficiente para atender ao pedido. Neste caso voc dever abater do estoque a quantidade vendida. Se o estoque no for suficiente para atender ao pedido a mensagem Estoque Insuficiente dever ser exibida no monitor. O final das vendas ser detectado quando o cdigo do produto for igual a zero. No final do programa voc dever exibir no monitor o valor vendido no dia e a relao de todos os produtos do estoque, com suas respectivas quantidades, em ordem decrescente de quantidade disponvel. a) Voc dever seguir os seguintes passos: b) Faa uma funo que leia do teclado os dados do

    estoque e armazene-os em vetores (passados

  • Linguagem de Programao C

    Lembre-se sempre Pgina 24 de 32

    A Sorte Ajuda aos Competentes Prof.: Oswaldo Borges Peres [email protected]

    como parmetro); c) Aps chamar a funo do item a, comece o

    processo de venda. Voc ir ler do teclado os pedidos e atualizar o estoque. Faa uma funo para fazer uma busca no vetor de cdigo de produtos para verificar se o produto existe;

    d) No final voc dever exibir um relatrio. Faa

    uma funo para ordenar o vetor em ordem decrescente.

    Matrizes

    Exerccios de Fixao

    207) Faa um programa que leia uma matriz de nmeros inteiros de dimenses 4x4 e imprima a soma dos valores de cada linha e a soma de todos os elementos da matriz.

    208) Uma estao meteorolgica registra a temperatura ocorrida em uma cidade a cada hora. Faa um programa que leia as temperaturas de uma semana no seguinte formato: dia, hora, temperatura. A leitura termina com um dia invlido. O programa deve informar para cada hora consultada, a maior temperatura ocorrida na semana. As consultas terminam com um valor de hora invlido.

    209) Faa um programa que leia uma matriz de 4 x 5 elementos, calcule a soma de cada linha e a soma de todos os elementos.

    210) Faa um programa que analise um carto de loteria esportiva e diga qual dos 13 jogos possui um triplo, ou se no existir, um duplo. O programa deve ler da entrada a configurao do carto e em seguida informar o jogo mais marcado. Dica: fixar a linha e variar a coluna.

    211) Refaa o exerccio anterior de modo a descobrir qual das colunas do carto possui mais marcaes, se a coluna um, a coluna dois ou a do meio. Dica: fixar a coluna e variar a linha.

    212) Construa um programa que efetue a leitura, a soma e a impresso do resultado, entre duas matrizes inteiras que comportem 25 elementos.

    213) Construa uma funo booleana em C que receba como parmetros uma matriz quadrada e a varivel n, dimenso da matriz. A funo dever devolver true(1), se a matriz for a matriz identidade de dimenso n, ou false(0), caso contrrio.

    214) Construa uma funo booleana em C que receba como parmetros uma matriz quadrada e a varivel n, dimenso da matriz. A funo dever devolver true(1), se a matriz for simtrica, ou false(0), caso contrrio.

    215) Construa uma funo booleana em C que receba como parmetros duas matrizes quadradas e a varivel n, dimenso das matrizes. A funo dever imprimir a soma das duas matrizes linha a linha.

    216) (Prova 3 - 96/1) Faa um programa que leia uma matriz de inteiros A quadrada de ordem 100 e calcule a sua transposta AT. Exemplo para matriz de ordem 4 (apenas um outro exemplo!!!):

    A =

    1 2 3 45 6 7 89 10 11 12

    13 14 15 16

    AT =

    1 5 9 132 6 10 143 7 11 154 8 12 16

    Exerccios Propostos

    217) A tabela dada a seguir contm vrios itens que esto estocados em vrios armazns de uma companhia. fornecido, tambm, o custo de cada um dos produtos armazenados.

    PRODUTO1

    PRODUTO2 PRODUTO3

    Armazm 1 1200 3700 3737 Armazm 2 1400 4210 4224 Armazm 3 2000 2240 2444 Custo 260 420 330

    Fazer um programa que:

  • Linguagem de Programao C

    Lembre-se sempre Pgina 25 de 32

    A Sorte Ajuda aos Competentes Prof.: Oswaldo Borges Peres [email protected]

    1. leia o estoque inicial; 2. determine e imprime quantos itens esto

    armazenados em cada armazm; 3. qual o armazm que possui a maior quantidade de

    produto 2 armazenado; 4. o custo total de: - cada produto em cada armazm; - estoque em cada armazm; - cada produto em todos os armazns.

    218) O tempo que um determinado avio dispensa para percorrer o trecho entre duas localidades distintas est disponvel atravs da seguinte tabela: A B C D E F G A 00 02 11 06 15 11 01 B 02 00 07 12 04 02 15 C 11 07 00 11 08 03 13 D 06 12 11 00 10 02 01 E 15 04 08 10 00 05 13 F 11 02 03 02 05 00 14 G 01 15 13 01 13 14 00 a) Construa uma funo que leia a tabela acima e

    armazene as informaes em uma matriz global; b) Construa uma funo que leia da entrada o cdigo

    de duas cidades (A, B, ..., F e G) e informe ao usurio o tempo necessrio para percorrer a distncia entre as duas cidades por ele fornecidas. A leitura termina quando o usurio fornece duas cidades iguais (fonte e destino).

    c) Construa uma funo que imprima a tabela sem repeties (apenas o tringulo superior ou o tringulo inferior).

    d) Construa uma funo que leia da entrada os cdigos de um conjunto de cidades e imprima o tempo total para cumprir todo o percurso entre as cidades fornecidas. A leitura termina quando o usurio fornece um cdigo de cidade invlido.

    e) Faa uma funo main () para testar as suas funes.

    219) Faa um programa que leia o nmero de matrcula de 100 alunos e suas notas (5 notas para cada aluno). O programa deve armazenar todos os dados em uma matriz: a matrcula na primeira coluna e as notas nas colunas seguintes. O programa dever

    calcular, para cada aluno, a mdia de suas notas, que deve ser armazenada na stima coluna da matriz. Aps o clculo da mdia, o programa dever ordenar a matriz pela mdia de cada aluno. Utilize a funo main() abaixo. #include #define C 7 #define L 100 void le_matriz (int [][C]); void media_alunos (int [][C]); void ordena_matriz (int [][C]); void troca_linha (int [][C], int, int); void troca (int *, int *); void imprime (int [][C]); void main (void) { int i, j; int m[L][C]; le_matriz (m) media_alunos (m); ordena_matriz (m); imprime (m); } Teste seu programa com os seguintes dados:

    A matriz resultante ser: Matrcula N1 N2 N3 N4 N5 Mdia

    99 134 120

    8 8 10

    6 5 9

    5 7 10

    2 9 10

    3 10 8

    3 7 9

    220) A Escola Pagou Passou possui 10 turmas, com exatamente 60 alunos em cada uma, e a sua diretoria resolveu fazer o acompanhamento do rendimento dos alunos matriculados em cada uma das turmas.

    Matrcula N1 N2 N3 N4 N5 134 99 120

    8 8 10

    5 6 9

    7 5 10

    9 2 10

    10 3 8

  • Linguagem de Programao C

    Lembre-se sempre Pgina 26 de 32

    A Sorte Ajuda aos Competentes Prof.: Oswaldo Borges Peres [email protected]

    Para atender as necessidades da diretoria voc dever construir um programa em C que faa o seguinte: a) defina duas matrizes para armazenar as

    matrculas e as notas dos alunos das 10 turmas, cada qual com exatamente 60 alunos;

    b) faa uma funo que leia do teclado a matrcula e a nota dos alunos e armazene-as nas respectivas matrizes, turma a turma. Lembre-se de que a escola tem exatamente 10 turmas, cada uma das quais com exatamente 60 alunos. A funo dever receber as duas matrizes como parmetros;

    c) faa uma funo que calcule e exiba no vdeo a mdia de cada turma, armazenando-as em um vetor de mdias com 10 elementos. As matrizes e o vetor devero ser passados como parmetros;

    d) faa uma funo que percorra a matriz de notas, turma a turma, exibindo no vdeo, uma a uma, as matrculas dos alunos cujas as notas ficaram abaixo da mdia das respectivas turmas.

    e) a funo main dever chamar cada uma das funes acima de maneira que o programa cumpra o seu objetivo corretamente.

    Strings

    Exerccios de Fixao

    221) Faa uma funo chamada strcpy que recebe duas strings como parmetros e copie todos os elementos da segunda string para a primeira, apagando-a. Faa um programa para testar sua funo.

    222) Faa uma funo chamada strlen que recebe uma string como parmetro e retorne o nmero de caracteres da string. O caracter \0 no deve ser considerado na contagem. Faa um programa para testar sua funo.

    223) Faa uma funo chamada strcat que recebe duas strings como parmetros e copie todos os

    caracteres da segunda string para o final da primeira string. Faa um programa para testar sua funo.

    224) Faa uma funo chamada strcmp que recebe duas strings (s1 e s2) como parmetros e compara os seus contedos. A funo retorna um nmero < 0 se s1 for menor que s2, um nmero > 0 se a s1 for maior que s2 e 0 (zero) se as strings forem iguais. Faa um programa para testar sua funo.

    225) Faa uma funo chamada puts que recebe uma string como parmetro e imprime seu contedo na tela. Aps imprimir a string, a funo deve pular uma linha. Faa um programa para testar sua funo.

    226) Faa uma funo chamada gets que recebe uma string como parmetro e preenche esta string com os caracteres lidos atravs do teclado. A leitura termina quando o usurio digita . Faa um programa para testar sua funo.

    227) Faa uma funo que receba uma string como parmetro e imprima a string invertida.

    228) Faa uma funo que receba uma string como parmetro e converta todos as letras minsculas encontradas em letras maisculas. Os demais caracteres permanecem inalterados.

    229) Faa uma funo que receba uma string como parmetro e retorne o nmero de palavras encontradas. Cada palavra pode estar separada por um ou mais caracteres de espao. No considere os caracteres de pontuao como separadores de palavras.

    230) Refaa a questo anterior considerando os caracteres ., ,, ; como separadores de palavras, alm do espao em branco.

    231) Faa uma funo que receba uma string como parmetro e um caracter. A funo deve retornar a primeira posio onde o caracter foi encontrado na string ou -1 caso o caracter no aparea na string.

    232) Faa uma funo que receba uma string como parmetro e um caracter. A funo deve retornar a

  • Linguagem de Programao C

    Lembre-se sempre Pgina 27 de 32

    A Sorte Ajuda aos Competentes Prof.: Oswaldo Borges Peres [email protected]

    ltima posio onde o caracter foi encontrado na string ou -1 caso o caracter no aparea na string.

    233) Faa uma funo que receba uma string como parmetro e um caracter. A funo deve retirar todas as ocorrncias deste caracter da string.

    234) Faa uma funo que receba uma string como parmetro e dois caracteres. A funo deve trocar toda a ocorrncia do primeiro caracter na string pelo segundo caracter.

    235) Faa uma funo que receba uma string como parmetro e um caracter. A funo deve retornar o nmero de vezes que o caracter aparece na string.

    236) Faa uma funo que receba uma string como parmetro, um caracter e um valor numrico. A funo deve preencher a string com tantos caracteres quanto for o valor numrico passado com parmetro.

    237) Faa uma funo chamada strncpy que recebe duas strings (s1 e s2) e um valor numrico como parmetros. A funo deve copiar tantos caracteres quanto o valor numrico, da string s2 para a string s1.

    238) Faa um funo chamada stricmp que compara duas strings (s1 e s2) passadas como parmetro, no diferenciando maisculas de minsculas. A funo deve retornar: 0 se as strings forem iguais; um valor menor que 0 se s1 for menor que s2 e um valor maior que 0 se s1 for maior que s2.

    Exerccios Propostos

    239) (Prova 3 - 94/1) Faa uma funo que receba como parmetro uma string de, no mximo, 80 caracteres e converta todas as letras para minsculas, exceto a primeira letra de cada palavra, que deve ser maiscula. Considere que a string s possui letras e espaos e entre as palavras existe um nico espao. Exemplo:

    Frase recebida: EsTa fRase e apENAS uM EXEmPLO

    Frase gerada: Esta Frase E Apenas Um Exemplo

    240) Faa uma funo que receba uma string como parmetro e imprima esta string em modo justificado, ou seja, preenchendo os intervalos entre as palavras com espaos em branco de maneira proporcional. Considere este procedimento apenas para strings com menos de 80 caracteres. As strings com mais de 80 caracteres devem ser impressas sem alterao.

    241) Faa uma funo que receba uma string como parmetro e a imprima. Se a string tiver mais de 40 caracteres, ela deve ser particionada, quantas vezes for necessrio, de modo a imprimir no mximo 40 caracteres por linha, sendo que nenhuma palavra deve ser impressa fragmentada.

    242) Modifique a funo do item anterior de modo a imprimir a string em modo justificado, alm de realizar o seu particionamento.

    243) Faa uma funo que receba duas strings como parmetro (s1 e s2) e retorne a posio da string s2 dentro da string s1, caso a string s1 contenha a string s2, ou -1 em caso contrrio. Exemplo: s1 c a m a l e o \0 s2 l e o \0

    A funo deve retornar o valor 4, pois o valor da posio onde comea a string leo na string camaleo.

    244) Faa uma funo que receba uma string como parmetro e verifique se um palndrome, isto , da esquerda para direita ou da direita para a esquerda tm-se a mesma seqncia de caracteres. Exemplos: ama, ovo, asa.

    245) (Prova 3 - 94/1) Considere a seguinte lista de pases e respectivas capitais:

    Canad Ottawa Inglaterra Londres Frana Paris Portugal Lisboa Japo Tquio

  • Linguagem de Programao C

    Lembre-se sempre Pgina 28 de 32

    A Sorte Ajuda aos Competentes Prof.: Oswaldo Borges Peres [email protected]

    Escreva um programa interativo que aceite um nome de um pas como entrada e imprima o nome de sua capital. O programa deve executar repetidamente at que seja digitada a palavra FIM.

    246) (Prova 3 - 96/1) Faa uma funo que receba duas strings e um inteiro como parmetros. Esta funo inclui a segunda string a primeira a partir da posio indicada pelo inteiro. Exemplo (apenas um exemplo!!!): 1a string: isto exemplo resultado aps execuo da funo: 2a string: apenas um 1a string: isto apenas um exemplo inteiro: 7 2a string: apenas um

    247) (Prova 4 - 96/1) Faa uma funo chamada strmix que receba 3 strings (s1, s2 e s3) e misture s1 e s2 do seguinte modo: 1o caracter de s3: 1o caracter de s1 2o caracter de s3: 1o caracter de s2 3o caracter de s3: 2o caracter de s1 e assim sucessivamente Observaes: a string resultante dever ser armazenada em s3. As strings s1 e s2 podem ter tamanhos diferentes. Exemplo:

    s1: abcde s2: 012 string resultante (s3): a0b1c2de

    248) (Prova 3 - 96/2) Faa uma funo que receba duas strings e retire da primeira todo caracter que fizer parte da segunda string. Exemplo: 1a string: EFBACDEIEBBLBBD 2a string: EBD Resultado 1a string: FACIL 2a string: EBD

    249) (Prova 3 - 97/1) Faa uma funo chamada compara() que receba duas strings e dois inteiros pos e qtd, onde pos a posio nas strings a partir da qual vamos comparar qtd caracteres. A comparao NO deve levar em conta se os

    caracteres so maisculos ou minsculos. A funo retorna 0 (zero) se as pores de strings forem iguais, seno, ela retorna -1. Dica: use uma funo que converta uma letra para maisculo. Considere que os valores de pos e qtd so sempre vlidos. Exemplo: string 1: Banana string 2: ANNA MARIA pos = 2 qtd = 2 retorna 0 string 1: Banana string 2: ANNA MARIA pos = 2 qtd = 3 retorna -1

    250) (Prova 4 - 96/2) Faa um programa que leia um texto, em javans, terminando com uma linha vazia e imprima o nmero de ocorrncias de cada palavra no texto. O programa dever imprimir uma lista das palavras que apareceram no texto e o nmero de ocorrncias de cada uma delas. Sabe-se que em javans, existem 2548 palavras, a maior palavra possui 78 letras e entre cada palavra existe apenas um nico espao em branco. a) faa uma funo que leia uma palavra, b) faa uma funo para procurar uma palavra em

    uma lista de palavras, c) faa o programa utilizando as funes acima.

    251) (Prova 4 - 96/2) Faa uma funo chamada xxx() que receba duas strings como parmetros e retorne a posio da 2a string de trs para frente dentro da 1a string ou um nmero negativo caso no encontre.

    Faa um programa para testar se esta funo que voc fez est funcionando. Obs.: note que as strings podem ter qualquer tamanho!!! Exemplos: Exemplo 1 Exemplo 2 1a string: 2a string: resultado:

    Esta uma linha amu 7

    Esta uma linha uma -1542

  • Linguagem de Programao C

    Lembre-se sempre Pgina 29 de 32

    A Sorte Ajuda aos Competentes Prof.: Oswaldo Borges Peres [email protected]

    252) (Prova 4 - 97/1) Faa uma funo chamada cria_string() que recebe como parmetros uma string s1 (de tamanho suficiente), um formato fmt (tambm uma string) e um nmero inteiro positivo num (nesta ordem). Esta funo ir preencher a string s1 de acordo com o formato passado como parmetro e o valor do inteiro num. O formato ir conter uma seqncia de caracteres que devem ser integralmente copiados para a string s1, com exceo da seqncia %d. No seu lugar deve ser copiado o valor do inteiro num convertido para caracteres. Dica: lembre-se que o maior numero inteiro que pode ser representado no TC 32767 (5 dgitos). Exemplos: Exemplo 1 Parmetros passados: s1: (irrelevante, mas de tamanho suficiente) fmt: O valor %d a respos ta num: 15

    Resultado aps a execuo da funo s1: O valor 15 a resposta fmt: (irrelevante) num: (irrelevante) Exemplo 2 Parmetros passados: s1: (irrelevante, mas de tamanho suficiente) fmt: Converta o %d para caracteres num: 17430

    Resultado aps a execuo da funo s1: Converta o 17430 para caracteres fmt: (irrelevante) num: (irrelevante)

    Arquivos

    Exerccios de Fixao

    253) Faa um programa que leia um arquivo. O arquivo contm linhas de texto de at 80 caracteres. O nome do arquivo deve ser perguntado (sem extenso) e a extenso txt. O programa deve

    converter todas as letras minsculas encontradas para letras maisculas. Os dados convertidos devem ser escritos em