Exercícios Práticos de Programação em Linguagem C
Classificado em Grego
Escrito em em
português com um tamanho de 14,13 KB
Exemplos Práticos e Exercícios em Linguagem C
Confira a seguir uma coletânea completa de exercícios básicos e intermediários resolvidos em linguagem C, abordando estruturas sequenciais, condicionais (if/else, switch), laços de repetição (while, for) e manipulação de cadeias de caracteres (strings) e vetores.
1. Cálculo com Números Inteiros
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int a, b, c, d;
printf("Digite 3 números inteiros e positivos: \n");
scanf("%d %d %d", &a, &b, &c);
d = (((a + b) * (a + b)) + ((b + c) * (b + c))) / 2;
// d = (pow(a + b, 2) + pow(b + c, 2)) / 2;
printf("O resultado é: %d \n", d);
system("pause");
return 0;
}2. Média Ponderada e Situação do Aluno
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n1, n2, n3;
float m;
printf("Digite 3 notas: ");
scanf("%d %d %d", &n1, &n2, &n3);
m = ((n1 * 4) + (n2 * 3) + (n3 * 3)) / 10.0;
if (m >= 5)
printf("Aprovado! Média = %.2f\n", m);
else
printf("Reprovado! Média = %.2f\n", m);
system("pause");
return 0;
}3. Cálculo do Peso Ideal por Gênero
#include <stdio.h>
#include <stdlib.h>
int main()
{
int sexo;
float h, p;
printf("Informe seu sexo: \n1 - Masculino \n2 - Feminino \n");
scanf("%d", &sexo);
printf("Informe sua altura: ");
scanf("%f", &h);
switch (sexo)
{
case 1:
p = (72.7 * h) - 58;
break;
case 2:
p = (62.1 * h) - 44.7;
break;
default:
printf("Sexo inválido!\n");
}
printf("\nPeso ideal: %.2f\n", p);
system("pause");
return 0;
}4. Seleção do Tipo de Média com Switch
#include <stdio.h>
#include <stdlib.h>
int main()
{
int op;
float n1, n2, n3, m;
printf("Informe 3 notas: ");
scanf("%f %f %f", &n1, &n2, &n3);
printf("\nDigite: \n 1 - Média aritmética \n 2 - Média ponderada \n 3 - Média harmônica\n");
scanf("%d", &op);
switch (op)
{
case 1:
m = (n1 + n2 + n3) / 3;
break;
case 2:
m = ((n1 * 3) + (n2 * 3) + (n3 * 4)) / 10;
break;
case 3:
m = 3 / (1 / n1 + 1 / n2 + 1 / n3);
break;
default:
printf("\nOpção inválida");
}
printf("A média é: %6.2f", m);
system("pause");
return 0;
}5. Estatística Populacional com Laço While
#include <stdio.h>
#include <stdlib.h>
int main()
{
float s, somasal, maiorsal, persal, cont_pes;
int f, somaf;
s = somasal = somaf = cont_pes = maiorsal = f = 0;
printf("Informe o seu salário: ");
scanf("%f", &s);
while (s >= 0)
{
cont_pes++;
somasal += s;
printf("Informe quantos filhos tem: ");
scanf("%d", &f);
somaf = somaf + f;
if (s > maiorsal) maiorsal = s;
printf("Informe um novo salário: ");
scanf("%f", &s);
}
printf("\nA média de salário da população é: %6.2f", (float)somasal / cont_pes);
printf("\nA média do número de filhos é: %6.2f", (float)somaf / cont_pes);
printf("\nO maior salário é: %6.2f", maiorsal);
persal = ((cont_pes - somasal) / cont_pes) * 100;
system("pause");
return 0;
}6. Sistema de Votação com Apuração de Votos
#include <stdio.h> // printf e scanf
#include <stdlib.h> // system("pause");
int main()
{
int op, c1 = 0, c2 = 0, c3 = 0, c4 = 0, cn = 0, cb = 0;
printf("Informe o código do seu candidato ou 0 (ZERO) para sair:\n");
printf("1 - Candidato X \n2 - Candidato Y \n");
printf("3 - Candidato Z \n4 - Candidato W \n");
printf("5 - NULO \n");
printf("6 - BRANCO\n");
scanf("%d", &op);
while (op != 0)
{
switch (op)
{
case 1:
c1++;
break;
case 2:
c2++;
break;
case 3:
c3++;
break;
case 4:
c4++;
break;
case 5:
cn++;
break;
case 6:
cb++;
break;
default:
printf("Voto Inválido!");
}
printf("Informe o código do seu candidato ou ZERO para sair\n");
printf("1 - Candidato X \n2 - Candidato Y \n");
printf("3 - Candidato Z \n4 - Candidato W \n");
printf("5 - NULO \n6 - BRANCO\n");
scanf("%d", &op);
}
printf("** Total de Votos **");
printf("\nCandidato 1: %d", c1);
printf("\nCandidato 2: %d", c2);
printf("\nCandidato 3: %d", c3);
printf("\nCandidato 4: %d", c4);
printf("\nNulos: %d", cn);
printf("\nBrancos: %d\n", cb);
system("pause");
return 0;
}7. Cálculo de Série Harmônica
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num;
float S;
printf("Digite um número inteiro e positivo: ");
scanf("%d", &num);
S = 0;
for (int i = 1; i <= num; i++)
{
S += (float)1 / i;
printf("S = S + (1/%d) = %f\n", i, S);
}
printf("O resultado da soma é: %f\n", S);
system("pause");
return 0;
}8. Cálculo da Média Geométrica
Calcule a média geométrica de dois números (raiz quadrada do produto dos dois números). Encerrar quando for digitado zero no primeiro valor. Exemplo: Média geométrica de 5 e 6 = √(5 * 6).
#include <stdio.h>
#include <math.h>
int main()
{
int n1, n2;
printf("\nDigite um número: ");
scanf("%d", &n1);
while (n1 != 0)
{
printf("\nDigite outro número: ");
scanf("%d", &n2);
printf("\nA média geométrica de %d e %d é: %f", n1, n2, sqrt(n1 * n2));
printf("\nDigite um número ou 0 (zero) para sair: ");
scanf("%d", &n1);
}
return 0;
}9. Conversão de Caracteres Maiúsculos e Minúsculos
Lê um caractere através de getch() e inverte sua caixa tipográfica até que seja digitado um ponto final (.).
#include <stdio.h> // printf
#include <conio.h> // getch
#include <ctype.h>
int main()
{
char x;
printf("** Digite um caractere ou \".\" (ponto) para sair: ");
x = getch();
putchar(x);
while (x != '.')
{
if (isalpha(x))
{
// Se maiúsculo transforma em minúsculo
if (isupper(x))
x = tolower(x);
// Se minúsculo transforma em maiúsculo
else if (islower(x))
x = toupper(x);
}
printf("\nResultado: %c", x);
printf("\nDigite um caractere ou \".\" (ponto) para sair: \n");
x = getch();
putchar(x);
}
return 0;
}10. Identificação e Sucessor de Dígito Numérico
Verifica se o caractere digitado é um valor numérico e imprime seu sucessor. O laço encerra ao digitar '9'.
#include <stdio.h> // printf
#include <conio.h> // getch
#include <ctype.h> // isdigit
#include <stdlib.h> // atoi
#include <string.h>
int main()
{
char x[2];
int x1;
printf("** Digite um caractere ou 0 (zero) para sair: ");
gets(x);
// x = getchar();
while (strcmp(x, "9"))
{
// Se numérico mostra o sucessor
if (isdigit(x[0]))
{
x1 = atoi(x);
printf("\n%d", x1 + 1);
}
else
{
printf("\"%s\" não é um dígito", x);
}
printf("\nDigite um caractere ou 0 (zero) para sair: ");
gets(x);
}
system("pause");
return 0;
}11. Concatenação de Nomes com Strcat
#include <stdio.h> // printf
#include <stdlib.h> // system
#include <string.h> // strcat
int main()
{
char nome[20], snome[10];
printf("** Digite seu nome: ");
gets(nome);
printf("** Digite seu sobrenome: ");
gets(snome);
printf("\nSeu login é: %s\n", strcat(nome, snome));
system("pause");
return 0;
}12. Validação de Senha com Tentativas Limitadas
#include <stdio.h> // printf
#include <string.h> // strcmp
#include <stdlib.h> // system
#define TENT 3
#define SENHA "1234"
int main()
{
char sen[5];
printf("\nTotal de tentativas: %d", TENT);
for (int i = 0; i < TENT; i++)
{
printf("\nDigite a senha de 4 dígitos: ");
gets(sen); // gets armazena uma string
if (strcmp(sen, SENHA) == 0) // strcmp retorna 0 quando idênticas
{
printf("Você acertou! Senha correta: %s", sen);
break;
}
else
{
printf("Senha incorreta!");
}
printf("\nSaldo de tentativas: %d", TENT - (i + 1));
printf("\nTentativas efetuadas: %d\n", i + 1);
}
system("pause");
return 0;
}13. Cadastro de Nomes e Idades em Vetores
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define TAM 3
int main()
{
char vnome[TAM][10];
int vidade[TAM];
int soma = 0, menor, maior;
char seq[10][10] = {"primeiro", "segundo", "terceiro", "quarto", "quinto", "sexto", "sétimo", "oitavo", "nono", "décimo"};
for (int i = 0; i < TAM; i++)
{
printf("Qual o %s nome: ", seq[i]);
scanf("%s", vnome[i]);
printf("Digite sua idade: ");
scanf("%d", &vidade[i]);
soma += vidade[i];
if (i == 0)
{
menor = vidade[i];
maior = vidade[i];
}
else
{
if (vidade[i] > maior) maior = vidade[i];
if (vidade[i] < menor) menor = vidade[i];
}
}
printf("\n\nSOMA = %d", soma);
printf("\nMÉDIA = %.2f", (float)(soma / TAM));
printf("\nMENOR IDADE = %d", menor);
printf("\nMAIOR IDADE = %d\n\n", maior);
printf("\nNomes e idades informados:");
for (int i = 0; i < TAM; i++)
{
printf("\n%s - %d anos", vnome[i], vidade[i]);
}
printf("\n\nNomes e idades de trás para frente:");
for (int i = (TAM - 1); i >= 0; i--)
{
printf("\n%s - %d anos", vnome[i], vidade[i]);
}
printf("\n\nNomes e idades entre 10 e 40 anos:");
for (int i = 0; i < TAM; i++)
{
if ((vidade[i] >= 10) && (vidade[i] <= 40))
printf("\n%s - %d anos", vnome[i], vidade[i]);
}
printf("\n\nNomes com índice Par:");
for (int i = 0; i < TAM; i++)
{
if (i % 2 == 0) printf("\n%d - %s", i, vnome[i]);
}
printf("\n\nNomes com idade Par:");
for (int i = 0; i < TAM; i++)
{
if (vidade[i] % 2 == 0) printf("\n%s - %d anos", vnome[i], vidade[i]);
}
int n;
printf("\n\nInforme um número para saber o nome: ");
scanf("%d", &n);
printf("O nome é: %s", vnome[n]);
char nome[20];
printf("\nInforme um nome para saber o número: ");
scanf("%s", nome);
for (int i = 0; i < TAM; i++)
{
if (strcmp(vnome[i], nome) == 0) printf("\nO número é: %d", i);
}
system("pause");
return 0;
}14. Média de Notas e Exibição em Ordem Inversa
#include <stdio.h>
#include <stdlib.h>
#define TAM 10
int main()
{
int num[TAM], soma = 0;
char seq[10][10] = {"primeira", "segunda", "terceira", "quarta", "quinta", "sexta", "sétima", "oitava", "nona", "décima"};
for (int i = 0; i < TAM; i++)
{
printf("Informe a %s nota: ", seq[i]);
scanf("%d", &num[i]);
soma += num[i];
}
printf("A média é: %.2f", (float)soma / TAM);
for (int i = TAM - 1; i >= 0; i--)
{
printf("\nNota %d: %d", i + 1, num[i]);
}
system("pause");
return 0;
}