Lista de Exercícios, por capítulos.
Capítulo 2 - Olá Mundo
2.1- Faça um programa em C que imprima a mensagem "Segundo Programa"
2.2- Faça um programa em C que imprima a mensagem "Segundo programa" duas vezes.
Capítulo 3 - Criação de variáveis e tipos de dados
3.1 - Dos exemplos abaixo, quais estão corretos em relação a declaração de variáveis:
- int 123
- char caractere
- double Um
3.2 - Como atribuir valores às variáveis?
3.3 - Quais são os cinco tipos primitivos de dados em C?
3.4 - É possível utilizar qualquer nome para denominar uma variável? Por que?
Capítulo 5.1 - Entrada e saída de dados printf()
exercício
1-Faça um programa em C que imprima a mensagem "estou programando em c"
2- Faca um programa em C que imprima o valor de uma variável do tipo float
Capítulo 5.2 - Entrada e saida de dados scanf
1- Escreva um programa em C que receba um inteiro e diga se ele é par ou impar.
2- Crie um programa em C que peça dois números decimais ao usuário e mostre o produto deles.
Capítulo 6.2 - Tomadas de Decisões (Switch)
Exercício
1- Utilizando a ferramenta switch case, crie um programa que diga receba do usuario um numero de 1 a 12 e o programa deve retornar ao usuario qual nome do mes. Exemplo: 1 = Janeiro, 2 = Fevereiro;
2 - Construa em C uma mini calculadora utilizando Switch Case, onde o usuário deve selecionar se deseja fazer Soma, Subtração, Multiplicação ou Divisão e pedir ao usuário para inserir dois valores.
Capítulo 7.2 - Loops - do..while
Exercícios
1- some e imprima a soma de números entre -1000 e 1000 de uma sequencia crescente até que a soma dos dois últimos termos seja igual ao dobro do termo atual. Suponha que o usuário só entrará com números em sequência crescente.
2 -Escreva um programa que pergunte ao usuário quantos alunos tem na sala dele. Em seguida, através de um laço while, pede ao usuário para que entre com as notas de todos os alunos da sala, um por vez. Por fim, o programa deve mostrar a média, aritmética, da turma.
3- Escreva um programa em C que solicita 10 números ao usuário, através de um laço while, e ao final mostre os dois maiores números digitados pelo usuário.
Capítulo 7.3 - Loops - while
1- Escreva um aplicativo em C mostra todos os números ímpares de 1 até 100.
2- Escreva um programa que pergunte ao usuário quantos alunos tem na sala dele.
Em seguida, através de um laço while, pede ao usuário para que entre com as notas de todos os alunos da sala, um por vez.
Por fim, o programa deve mostrar a média, aritmética, da turma
3- Escreva um programa em C que solicita 10 números ao usuário, através de um laço while, e ao final mostre os dois maiores números digitados pelo usuário.
4- Escreva um aplicativo em C mostra todos os números pares de 1 até 100.
Capítulo 7.4 – Break .. Continue
1 - Usando os comandos break e continue, crie um programa que leia um número e verifique se o mesmo faz parte de um menu. Em caso positivo, o programa deve imprimir a mensagem correspondente ao número informado. Caso não faça, o programa deve imprimir um aviso.
Capítulo 8: Vetores
1 - Crie um vetor do tipo float chamado notas de 3 posições que possuirá os seguintes valores: _9.0, 10.0 e 8.5
2 - Mostre os valores do vetor do exercício anterior na tela
3 - Utilize uma estrutura de repetição para ler do usuário as notas. ( %f permite receber dados do tipo float )
4 - Crie um vetor de inteiros chamado vet de 5 posições em que cada elemento possua o valor de seu índice. Por exemplo, no elemento do primeiro índice deverá conter o valor 0 e assim por diante. Utilize uma estrutura de repetição para atribuir os valores.
5 - Desafio: Crie um loop que compare cada valor do vetor para encontrar o maior. Utilize uma variável para armazenar o maior valor do vetor, e no final imprima o maior valor. Pode ser utilizado o vetor do exercício anterior.
Respostas
Questão 1:
float notas[3] = {9.0, 10.0, 8.5};
Questão 2:
int i;
for(i = 0; i < 3; i++)
printf("%.1f ", notas[i]); //%.1f exibe o valor do tipo float com uma casa decimal. Ex: 9.5
Questão 3:
for(i = 0; i < 3; i++)
scanf("%f", ¬as[i]);
Questão 4:
int vet[5];
for(i = 0; i < 5; i++)
vet[i] = i; //o valor do elemento será o mesmo valor do índice
Questão 5:
int maior = vet[0]; // assume que o primeiro é o maior
for(i=0; i<5; i++)
if (vet[i] > maior)
maior = vet[i];
printf("O maior elemento é %d\n",maior); // o \n foi utilizado apenas para pular linha
/*deverá ser imprimido o valor 4 caso o vetor seja igual ao do exercício 4*/
Capítulo 9 - Matrizes
1 - Faça um programa que lê uma matriz de 3 x 3 elementos usando um comando "for" e multiplica cada elemento por 5 e imprime o resultado.
2 - Escrever um algoritmo para ler uma matriz 7 x 4 contendo valores inteiros. Após, encontrar o menor valor contido na matriz e sua posição.
Respostas
1-
2-
Capítulo 9.1- Matrizes Dinâmicas
Faca um programa que multiplique duas matrizes. O programa devera' estar estruturado de maneira que:
1- o usuario forneca as dimensoes das matrizes (teste se as dimensoes sao compativeis, isto e', se as matrizes podem ser multiplicadas);
2- as matrizes sejam alocadas dinamicamente (voce pode usar a funcao vista nesta pagina para isto);
3- as matrizes sejam lidas pelo teclado (faca uma funcao para leitura das matrizes);
4- as matrizes sejam, entao, multiplicadas (faca uma funcao para a multiplicacao);
5- a matriz resultante seja apresentada em tela (faca uma funcao para apresentar a matriz na tela).
OBS:
a) Faca, tambem, alocacao dinamica da matriz resultante.
b) Caso alguém não conheça o procedimento para a multiplicação de matrizes, segue aqui alguma orientação. Suponha as matrizes A(mXn)
\| a11 a12 ... a1n \|
A = | a21 a22 ... a2n |
| : |
| am1 am2 ... amn |
e B(nXt)
\| b11 b12 ... b1t \|
B = | b21 b22 ... b2t |
| : |
| bn1 bn2 ... bnt |
O elemento ij da matriz C é resultante da multiplicação da linha i de A pela coluna j de B. Portanto, a matriz C (mXt) = A*B será da seguinte forma:
C =
| a11*b11 +a12*b21 + ... +a1n*bn1 a11*b12 +a12*b22 + ... + a1n*bn2 ... a11+b1t +a12*b2t + ... + a1n*bnt |
| a21*b11 +a22*b21 + ... +a2n*bn1 a21*b12 +a22*b22 + ... + a2n*bn2 ... a21+b1t +a22*b2t + ... + a2n*bnt |
| ... ... ... ... |
| am1*b11 +am2*b21 +...+amn*bn1 am1*b12 +am2*b22 +...+ amn*bn2 ... am1+b1t +am2*b2t +...+amn*bnt |
Capítulo 10 - Funções
Crie uma função que receba um valor e informe se ele é positivo ou não.
Crie uma função que receba um valor e diga se é nulo ou não.
Crie uma função que receba três valores, 'a', 'b' e 'c', que são os coeficientes de uma equação do segundo grau e retorne o valor do delta, que é dado por 'b² - 4ac'
Usando as 3 funções acima, crie um aplicativo que calcula as raízes de uma equação do 2o grau:
ax² + bx + c=0
Para ela existir, o coeficiente 'a' deve ser diferente de zero.
Caso o delta seja maior ou igual a zero, as raízes serão reais. Caso o delta seja negativo, as reais serão complexas e da forma: x + iy
Crie uma função em linguagem C que receba 2 números e retorne o maior valor.
Crie uma função em linguagem C que receba 2 números e retorne o menor valor
Crie uma função em linguagem C que receba 3 números e retorne o maior valor, use a função da questão 4.
Crie uma função em linguagem C que receba 3 números e retorne o menor valor, use a função da questão 5.
Crie uma função em linguagem C chamado Dado() que retorna, através de sorteio, um número de 1 até 6.
Use a função da questão passado e lance o dado 1 milhão de vezes. Conte quantas vezes cada número saiu.
A probabilidade deu certo? Ou seja, a porcentagem dos números foi parecida?
- Crie um aplicativo de conversão entre as temperaturas Celsius e Farenheit.
Primeiro o usuário deve escolher se vai entrar com a temperatura em Célsius ou Farenheit, depois a conversão escolhida é realizada através de um comando SWITCH.
Se C é a temperatura em Célsius e F em farenheit, as fórmulas de conversão são:
C= 5.(F-32)/9
F= (9.C/5) + 32
- Um professor, muito legal, fez 3 provas durante um semestre mas só vai levar em conta as duas notas mais altas para calcular a média.
Faça uma aplicação em C que peça o valor das 3 notas, mostre como seria a média com essas 3 provas, a média com as 2 notas mais altas, bem como sua nota mais alta e sua nota mais baixa.
Desafio 1: Programe um aplicativo em C que acha todos os números primos até 1000
Número primo é aquele que é divisível somente por 1 e por ele mesmo.
Desafio 2: Programe um aplicativo em C que recebe dois inteiros e retorna o MDC, máximo divisor comum.
Desafio 3: Programe um aplicativo em C que ache todos os números perfeitos até 1000.
Número perfeito é aquele que é a soma de seus fatores. Por exemplo, 6 é divisível por 1, 2 e 3 ao passo que 6 = 1 + 2 + 3.
Desafio 4: Crie um programa em C que receba um número e imprima ele na ordem inversa.
Ou seja, se recebeu o inteiro 123, deve imprimir o inteiro 321.
Capítulo 11 - Strcmp e Strcpy
11.1 Construa um programa em C que leia quatro nomes fornecidas pelo usuário através da entrada padrão e os salve, garantindo que somente os nomes que não são repetidos serão salvos.
11.2 Seja o código abaixo que recebe uma string e devolve uma cópia da string com as letras minúsculas transformadas em maiúsculas.
Capítulo 11 - Strcat e Strlen
11.3 Construa um programa em C que leia dois nomes fornecidos pelo usuário e retorne os dois nomes unificado.
11.4 Construa um programa em C que receba uma palavra e retorne a quantidade de caráter.
Capítulo 13 - Typedef
13.1 Considerando a definição abaixo, como seria a declaração das variáveis p1 do tipo int* e p2 do tipo int**?
typedef int *pontInt;
13.2. Simplifique as definições e declarações das structs abaixo, utilizando o typedef:
struct ponto{
int x;
int y;
};
struct linha{
struct ponto p1;
struct ponto p2;
int distancia;
};
struct linha l1;
Capítulo 14 - Ponteiros
Exercício 1: teste seus conhecimentos online.
http://www.cprogressivo.net/2013/03/Questoes-com-gabarito-sobre-Ponteiros-em-C.html
Exercício 2: Quais serão os valores de x, y e p ao final do trecho de código
abaixo?
int x, y, *p;y = 0;
p = &y;
x = *p;
x = 4;
(*p)++;
--x;
(*p) += x;
Exercício 3: Os programas (trechos de código) abaixo possuem erros. Qual(is)?
Como deveriam ser?
a)
void main() {
int x, *p;
x = 100;
p = x;
printf(“Valor de p: %d.\n”, *p);}
b)
void troca (int *i, int *j) {
int *temp;
*temp = *i;
*i = *j;
*j = *temp;}
c)
char *a, *b;
a = "abacate";
b = "uva”;
if (a < b)
printf ("%s vem antes de %s no dicionário", a, b);
else
printf ("%s vem depois de %s no dicionário", a, b);
Exercício 4: Suponha que os elementos do vetor v são do tipo int e cada int ocupa 8 bytes no seu computador. Se o endereço de v[0] é 55000, qual o valor da expressão v + 3?
Exercício 5: Suponha que v é um vetor. Descreva a diferença conceitual entre as expressões v[3] e v + 3.
Exercício 6: Qual o conteúdo do vetor a depois dos seguintes comandos (sem usar o computador): int a[99];for (i = 0; i < 99; ++i) a[i] = 98 - i;for (i = 0; i < 99; ++i) a[i] = a[a[i]];
Exercício 7: O que significa o operador asterisco em cada um dos seguintes casos:
a) int *p;
b) cout << *p;
c) *p = x*5;
d) cout << *(p+1);
Capítulo 15.2 - Arquivo de Texto - Gravação
1- Escreva um programa que peça números decimais ao usuário, até que ele digita 0.
2- Salve todos os números digitados em um arquivo chamado "dados.txt", que mostra a média desses números no final do arquivo.
16.1 Arquivo Binário - Leitura
Exercício 1:
Crie um arquivo de texto, mude seu formato para '.bin', depois leia-o em C.
16.2 Arquivo Binário - Gravação
1- Fazer um programa em C para gravar os dados de 6 funcionários em um arquivo binário. Cada registro (estrutura) de funcionário deve conter os seguintes campos:
Matrícula do funcionário (inteiro);
Nome do funcionário (cadeia de caracteres)
Salário do funcionário (real);
Ler o nome do arquivo via teclado.
Ler (via teclado) e gravar no arquivo os dados dos 6 funcionários.
Ao final, mostrar na tela o conteúdo do arquivo binário gravado."
1.1 - Fazer um programa em C que gere um arquivo binário, ordenado por Nome do Funcionário, com os mesmos dados já gravados no arquivo gerado pelo exercício acima. Após gravar o arquivo ordenado, reabrí-lo e escrever seus dados na tela.