Curso
de Bacharelado em Informática
Linguagem
de Programação para Aplicações Científicas
Professor:
Eduardo Argollo
Questão 1: Escreva um programa C que apresente 100 vezes na tela a frase “Sou um programa C!”.
Questão 2: Melhore o programa da questão um fazendo com que cada frase apareça em uma linha.
Questão 3: Faça com que o programa da questão anterior mostre o número de cada linha no início e no final da linha, conforme exemplo.
Exemplo:
1 Sou um programa C! 1
2 Sou um programa C! 2
3 Sou um programa C! 3
. . .
Questão 4: Adapte o programa da questão 2 para que a frase faça uma escada como no exemplo:
Exemplo:
Sou um programa C!
Sou um programa C!
Sou um programa C!
Sou um programa C!
Sou um programa C!
. . .
Questão 5: &Adapte o programa da questão anterior para que a frase faça o zig zag conforme no exemplo:
Exemplo:
Sou um programa C!
Sou um programa C!
Sou um programa C!
Sou um programa C!
Sou um programa C!
Sou um programa C!
Sou um programa C!
Sou um programa C!
Sou um programa C!
Sou um programa C!
Sou um programa C!
. . .
Obs.: 1) Caso sinta dificuldade em fazer esta questão tente fazer um programa que mostre na tela a seqüência 1, 2, 3, 4, 5, 4, 3, 2, 1, 2, 3, . . . Faça uma analogia desta seqüência com a quantidade de espaços.
2) Tente parametrizar ao máximo sua questão para que não hajam problemas adaptativos. Use diretivas de pré-processamento.
Questão 6: Crie um programa C que obtenha uma frase e um número n do teclado e que mostre na tela a frase n vezes.
Questão 7: Faça um programa que obtenha um número do teclado e mostre na tela os números compreendidos entre ele e zero.
Exemplo:
Número: 8
8, 7, 6, 5, 4, 3, 2, 1
Questão 8: Adapte o programa anterior para decrescer o número diversas vezes conforme exemplo.
Exemplo:
Número: 8
8, 7, 6, 5, 4, 3, 2, 1
7, 6, 5, 4, 3, 2, 1
6, 5, 4, 3, 2, 1
5, 4, 3, 2, 1
4, 3, 2, 1
3, 2, 1
2, 1
1
Questão 9: Transforme o programa da Questão 7 em uma função que receba o número como parâmetro. Construa o programa da Questão 8 através do uso desta função. Responda às perguntas:
(A) Existe alguma vantagem de se usar função? Qual?
(B) Entre o programa sem o uso de função (Questão 8) e o programa com função qual o mais fácil de se desenvolver?
(C) Qual o mais fácil de se entender? Por que?
Questão 10: Faça um programa que obtenha números até que o valor zero seja digitado. Este programa deve apresentar:
(A) A soma dos números digitados
(B) A quantidade dos números digitados
(C) A média aritmética dos números digitados
(D) O maior e o menor número digitado
Questão 11: Suponha que você esteja trabalhando em uma máquina cujas operações aritméticas sejam somente soma e subtração.
(A) Construa uma função que retorne o produto entre dois números inteiros positivos
(B) Construa uma função que retorne o quociente da divisão entre dois números inteiros positivos
(C) Construa uma função que retorne o resto da divisão entre dois números inteiros positivos
Crie agora um programa que sirva como calculadora onde o usuário digite dois números e escolha uma das operações acima. O programa deverá chamar a função e mostrar na tela o resultado.
Questão 12: Faça um programa que, obtidos seis números inteiros, representando duas quantidades de tempo na forma: horas, minutos e segundos; calcule e mostre a soma destes números. Esta soma também deve estar na forma de horas, minutos e segundos.
Questão 13: Faça um programa para calcular as raízes de uma equação do segundo grau. Devem ser obtidos do usuário os coeficientes a, b , c. O programa deve tratar adequadamente os casos em que Delta > 0, Delta = 0, Delta < 0. O programa deve continuar solicitando valores de coeficientes e mostrando as raízes até que seja digitado o valor zero para o coeficiente a.
Observação: Delta = b*b - 4*a*c; Raiz1 = -b - (Delta)½ ; Raiz2 = -b + (Delta)½;
Questão 14: Faça um programa que obtenha do teclado o valor n e imprima na tela os n primeiros termos de uma seqüência de Fibonacci.
Observação: Uma seqüência é dita de Fibonacci quando os dois primeiros termos forem 0 e 1 e todos os termos consecutivos tenham valor igual à soma dos dois termos anteriores.
Exemplo:
0 – 1 – 1 – 2 – 3 – 5 – 8 – 13 – 21 – 34 – 55 . . .
Questão 15: Faça um programa que obtenha um número inteiro e mostre a tabuada deste número.
Questão 16: Um coronel dispõe seus soldados na forma de um triângulo:
........i........ 1a. fila
......i...i...... 2a. fila
....i...i...i.... 3a. fila
..i...i...i...i.. 4a. fila
...
Faça
um programa que, a partir de um número n representando a quantidade de
soldados, determina quantas fileiras irão se formar. O programa deve imprimir
também quantos soldados ficarão na última fila.
Questão 17: Faça um programa que obtenha um número inteiro e informe se este número é ou não é um número primo.
Observação: Um número é dito primo quando ele é divisível somente por 1 e por ele mesmo.
Questão 18: Faça um programa que receba dois números inteiros ini e n e mostre os n primeiros números primos compreendidos maiores que ini.
Exemplo: Ini: 1, N: 6
1 – 2 – 3 – 5 – 7
– 11
Questão 19: Transforme o programa da Questão 17 em uma função que retorne verdadeiro caso o número passado como parâmetro seja primo e falso caso não o seja. Reconstrua o programa da Questão 18 utilizando esta função e responda:
(A) Existe alguma vantagem de se usar função? Qual?
(B) Entre o programa sem o uso de função (Questão 18) e o programa com função qual o mais fácil de se desenvolver? Por que?
(C) Qual o mais fácil de se entender? Por que?
Questão 20: Dado um número inteiro positivo, crie um programa C que mostre este número com seus dígitos invertidos.
Exemplo:
5 – 5
32 – 23
201 – 102
2000 – 2
12345 – 54321
Questão 21:
Elaborar um programa que leia do teclado uma altura (h)
em número de linhas e desenhe na tela do computador um "X" como o
exemplo, utilizando a função printf():
Exemplos:
Para h = 4: Para h = 7
X
X X X
XX X X
XX X X
X
X X
X X
X X
X X
Questão 22: Escrever um programa que leia caracteres até que seja digitado um f ou um F e que ao final mostre a quantidade total de caracteres maiúsculos e minúsculos digitados.
Questão 23: Faça um programa que leia o mês e ano e imprima a folha do calendário correspondente ao mês.
Exemplo:
Para mes=9 e ano=1995 teremos a saída:
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
O programa deve levar em conta que fevereiro tem 29 dias se: (resto(ano/4)=0 e resto(ano/100)<>0) ou (resto(ano/400)=0). Para determinar em que dia da semana cai o primeiro dia do mês e ano, utilize o seguinte algoritmo:
E1.: se mes>2, então vá para E3
E2.: mes = mes +10, ano = ano-1, vá para E4
E3.: mes =
mes - 2
E4.: aux1 = ano / 100, aux2 = resto(ano/100)
E5.: aux3 = (13*mes-1)/5 + aux2/4 + aux1/4
E6.: dia_semana = resto((aux3+aux2-2aux1+1)/7)
Desta forma,
se:
dia_semana
= 0, então o dia primeiro cai num domingo,
dia_semana
= 1, então o dia primeiro cai numa segunda-feira, e assim por diante.
Obs: As divisões nas expressões acima são divisões inteiras.
Questão 24: No Brasil existem as moedas de 1, 5, 10, 25 e 50 centavos, e notas de 1, 2, 5, 10, 50 e 100 reais (desconsidere a moeda de 1 real). Faça um programa que dado um valor em reais mostre a menor combinação de notas e moedas existente para esse valor.
Ex.:
18,67reais: 1 nota de 10 reais
1
nota de 5 reais
1
nota de 2 reais
1
nota de 1 real
1
moeda de 50 centavos
1
moeda de 10centavos
1
moeda de 5 centavos
2 moedas de 1 centavo
Questão 25: Escreva um programa que obtenha um vetor 3x3 a partir do teclado e que mostre na tela o valor do seu determinante.
Questão 26: &Escreva um programa que obtenha dois vetores 2x3, some-os e mostre o resultado da soma na tela.
Questão 27: Elabore um programa que obtenha uma string do teclado e que mostre na tela a quantidade de caracteres.
Questão 28: Transforme o programa da questão anterior em uma função para calcular o tamanho da string passada como parâmetro. Elabore também um programa principal que leia uma string e informe o seu tamanho, utilizando a função definida anteriormente.
Questão 29: Crie uma função que funcione igual à função gets(), isto é, que obtenha uma string a partir do teclado. Crie também um programa para testar a função. Dica: Leia a string letra a letra até que o caractere ENTER seja digitado. Não esqueça de colocar o ‘\0’ ao final.
Questão 30: &Altere a função da questão anterior para receber como parâmetro a quantidade máxima de caracteres. Esta função não deverá permitir a digitação de mais caracteres do que o máximo estipulado. Emita um beep (‘\a’) caso o usuário tente transpor esta barreira.
Questão 31: Escrever uma função que copie apenas as inicias das palavras contidas em uma string para outra. Fazer também um programa principal para poder testá-la.
Questão 32: Desafio Calcule e imprima os símbolos diferentes usados num string dado e sua frequência. Os espaços em branco são contados como símbolos.
Exemplo:
mississipi: m = 1, i = 4, s = 4, p = 1
Questão 33: Desafio Adapte a questão anterior para mostrar os símbolos ordenados pela freqüência.
Exemplo:
mississipi: i = 4, s = 4, m = 1, p = 1
Questão 34: Crie como global um vetor com 20 posições cujo nome deve ser ‘numeros’.
a)
Crie uma função que
receba dois inteiros. O primeiro valor será o índice no vetor onde será
armazenado o segundo valor. Toda alteração de valores no vetor deverá ser feita
por essa função.
b)
Crie uma função que
obtenha do teclado 20 números e chame a função anterior para armazená-los no
vetor.
c)
Crie uma função que
mostre o índice e o valor dos elementos do vetor.
d)
Crie uma função que
ordene o vetor, esta função recebera um caracter. Caso o valor passado seja ‘C’
a ordenação deve ser crescente e caso seja ‘D’ decrescente.
e)
Crie uma função que
retorne a média dos elementos do vetor.
f)
Crie uma função que
retorne o índice do maior elemento do vetor.
g)
Crie uma função que
retorne o índice do menor elemento do vetor.
Utilize
a função main como interface. Deverá aparecer uma tela com as opções:
A-
Entrar valores do
vetor
B-
Mostrar vetor
C-
Ordenar vetor de
forma crescente
D-
Ordenar vetor de
forma decrescente
E-
Mostrar maior valor
do vetor
F-
Mostrar menor valor
do vetor
G-
Mostrar média dos
valores do vetor
H-
Sair do sistema
O
programa deverá aguardar o usuário digitar uma das opções e deverá chamar as
funções correspondentes para as opções.
Observações:
1)
Crie as funções, e
variáveis com nomes significativos.
2)
Não esqueça de
parametrizar as constantes
Questão 35: &Crie uma função que receba três strings e que coloque na terceira o resultado da concatenação das outras duas. Crie um programa que obtenha duas strings e mostre na tela as strings concatenadas.