Programação Estruturada
Sistemas de Informação
Profa . Tiemi Christine Sakata
Lista de Exercı́cios 2
Desenvolva o algoritmo mostrando a solução de todos os problemas antes de implementálos em linguagem C. É importante digitar o programa no Dev-C++ (ou usar qualquer outro
compilador C), compilar e executar (testar) o programa. Lembre-se que quanto mais você
programar, melhor programador você será.
1. Escreva um programa que lê número de matrı́cula e média de no máximo 100 alunos. O
programa deve ler informações de entrada até que o usuário digite um número negativo
para o número de matrı́cula. Após inserir todas as notas, o programa deve perguntar se o
usuário deseja realizar uma consulta a média de um aluno. Caso a resposta seja positiva,
o programa deve buscar pela média de um aluno, dado o seu número de matrı́cula.
2. Escreva um programa que leia da entrada um vetor de n posições (n fornecido pelo usuário)
e mostre na saı́da o número de elementos pares nesse vetor.
3. Escreva um programa que leia um vetor de tamanho n da entrada padrão (n informado
pelo usuário) e escreva na saı́da padrão o ı́ndice do maior elemento e o ı́ndice do menor
elemento desse vetor.
4. Escreva um programa que lê uma lista de inteiros positivos e imprime essa lista em ordem
inversa. A lista pode ter até 100 elementos e a leitura deve ser interrompida assim que o
primeiro inteiro não positivo for digitado. Não será informado previamente o número de
inteiros na lista de inteiros.
5. Implemente um programa que receba uma frase e calcule e mostre a quantidade de palavras
da frase digitada.
6. Implemente um programa para criptografar uma frase entrada pelo usuário, trocando as
vogais da frase por *.
Exemplo:
Entrada: Eu estou estudando.
Saı́da:
** *st** *st*d*nd*.
7. Implemente um programa que receba uma frase, calcule e mostre a quantidade de vogais
da frase digitada.
8. Implemente um programa que receba uma frase, calcule e mostre a quantidade de consoantes da frase digitada.
9. Implemente um programa que receba uma frase e mostre cada palavra desta frase em uma
linha separada.
10. Escreva um programa que leia da entrada padrão uma matriz de tamanho n × m (n e
m fornecidos pelo usuário) e escreva na saı́da padrão o valor máximo e o valor mı́nimo
existentes naquela matriz. Considere que o usuário nunca fornecerá n e m maiores que
100.
1
11. Escreva um programa que leia um valor n da entrada padrão e preencha uma matriz
de forma que ela torne-se a matriz identidade de tamanho n (In ) e depois imprima essa
mesma matriz na saı́da padrão. O tamanho máximo da matriz deve ser limitado pela
constante LIM, definida como #define LIM 100 no começo do seu programa.


1 0 0
I3 =  0 1 0 
0 0 1
12. Escreva um programa que leia
pelo usuário), imprima a sua
valores de n maiores que 100.


1 2
1
t


M = 3 4 ,
M =
2
5 6
uma matriz quadrada M de dimensões n × n (n fornecido
transposta M t . Considere que o usuário nunca digitará
3 5
4 6
13. Escreva uma função que recebe como parâmetro dois valores a e b e retorna o valor de a b .
Desconsidere a função pow.
14. Implemente o programa abaixo e responda:
#include <stdio.h>
#include <stdlib.h>
void troca(int a, int b);
main() {
int a, b;
printf("Forneça o valor de a: ");
scanf("%d", &a);
printf("Forneça o valor de b: ");
scanf("%d", &b);
printf("Antes da chamada a funç~
ao troca a = %d e b = %d.\n", a, b);
troca(a,b);
printf("Apos a chamada a funç~
ao troca a = %d e b = %d.\n", a, b);
system("PAUSE");
}
void troca(int a, int b){
int tmp;
tmp = a;
a = b;
b = tmp;
printf("Apos a troca, os valores de a e b sao: %d e %d.\n", a, b);
}
(a) Se forem fornecidos os valores 2 para a e 3 para b, qual será a saı́da do programa,
isto é, o que você verá na tela?
(b) Explique o que você observa em termos do comportamento de variáveis locais.
(c) Altere o programa para que, ao invés de a função fazer uso de variáveis da lista de
parâmetros para receber os valores dos dois inteiros, ela os acesse a partir de variáveis
globais. Após a alteração responda novamente à pergunta feita no ı́tem (a).
2
15. Escreva a saı́da produzida pela execução do programa abaixo:
#include <stdio.h>
void a()
int x,
x = 4;
y = 2;
printf
}
main () {
x = 10;
{
y = 3;
y;
a();
printf ("%d %d\n", x, y);
b(5);
("a: %d %d\n", x, y);
printf ("%d %d\n", x, y);
}
void b(int y) {
printf ("b: %d\n", y);
}
16. Escreva a saı́da produzida pela execução do programa abaixo:
#include <stdio.h>
int x, y;
void c() {
printf ("c: %d %d\n", x, y);
}
void a(int x, int y) {
printf ("a: %d %d\n", x, y); main () {
}
x = 10;
y = 3;
void b() {
a(5,6);
int x, y;
printf ("%d %d\n", x, y);
x = 7;
b();
y = 4;
printf ("%d %d\n", x, y);
printf ("b: %d %d\n", x, y);
c();
}
printf ("%d %d\n", x, y);
}
17. Implemente um programa que receba dois valores reais e exiba um menu com as seguintes
opções: 1 - Calcular a soma entre eles; 2 - Calcular o produto entre eles; 3 - Calcular a
diferença entre eles; 4 - Calcular a razão entre eles; 5 - Todas as operações; 6 - Encerrar
o programa. Faça a validação da escolha do menu, na função main, usando um laço
do-while. Determine o valor escolhido usando o comando switch-case. A execução de
cada opção deve ser feita mediante o chamado a uma função. As funções têm uma lista
de parâmetros consistindo de dois parâmetros do tipo float e retornam um dado do tipo
float. O programa não faz uso de variáveis globais, apenas locais.
18. Escreva uma função que, dado um vetor de dimensão n, retorne o ı́ndice do maior elemento
daquele vetor. O cabeçalho da função deve ser:
int indice_maximo (int v[], int n);
19. Escreva uma função que receba como parâmetro o número de segundos e mostre o número
de dias, horas, minutos e segundos que corresponde a aquela quantidade de segundos.
3
Download

Lista de Exerc´ıcios 2