Buscar

Lista 1 C

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 41 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 41 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 41 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Algoritmos e Laboratório de Programação I 
 
 
Lista I – Solucionário em C 
 
 
Exercícios com * indicam que há outra forma de resolução no final do documento 
 
 
EXERCÍCIO 01: 
 
Sendo A= 3, B= 7 e C= 4, informe se as expressões abaixo são verdadeiras ou falsas. 
 
a) (A+C) > B F 
b) B >= (A + 2) V 
c) C = (B - A) V 
d) (B + A) <= C F 
e) (C+A) > B F 
 
 
EXERCÍCIO 02: 
 
Sendo A=5, B= 4 e C= 3 e D= 6, informe se as expressões abaixo são verdadeiras ou 
falsas. 
 
a) (A > C) E (C <= D) (5 >3) E (3 <= 6) Verdadeiro E Verdadeiro = Verdadeiro 
 
b) (A+B) > 10 OU (A + B ) = (C + D) (5 + 4) > 10 OU (5 + 4) = (3 + 6) Falso OU 
Verdadeiro = Verdadeiro 
 
c) (A>=C) E (D >= C) (5 >=3) E (6 >= 3) Verdadeiro E Verdadeiro = Verdadeiro 
 
 
EXERCÍCIO 03: 
 
a) B = A * C E L1 
 
Substituindo os valores de A, B, C e L1, temos: 
7 = 2 * 3.5 E falso 
7 = 7 E falso 
verdadeiro E falso 
 
O resultado da expressão lógica com o operador E somente será verdadeiro quando ambos 
os valores de cada lado do operador forem verdadeiros. Então, o resultado dessa 
expressão lógica é: falso. 
 
b) "dia" = S1 OU "frio" != "clima" 
 
Substituindo o valor de S1,temos: 
"dia" = "noite" OU "frio" != "clima" falso OU verdadeiro 
 
O resultado da expressão lógica com o operador OU somente será falso quando ambos os 
valores de cada lado do operador forem falsos. 
Então, o resultado dessa expressão lógica é: verdadeiro. 
 
c) A + C < 5 
 
Substituindo os valores de A e S1, temos: 
2 + 3.5 < 5 
Falso 
 
d) A * C / B > A * B * C 
 
Substituindo os valores de A, B e C, temos: 
2 * 3.5 / 7 > 2 * 7 * 3.5 
7 / 7 > 14 * 3.5 
1 > 49 
Falso 
 
e) NÃO FALSO 
 
O operador lógica NÃO denota o oposto do valor lógico seguinte. Então, o resultado 
dessa expressão lógica é: verdadeiro. 
 
 
EXERCÍCIO 04: 
 
Determine o resultado lógico das expressões mencionadas (Verdadeira ou Falsa). 
Considere para as respostas os seguintes valores: X= 1, A= 3, B= 5, C=8 e D=7. 
 
a) NÃO (X > 3) Verdadeiro 
 
b) (X < 1) E (NÃO (B > D)) Falso 
 
c) NÃO (D < 0) E (C > 5) Verdadeiro 
 
d) NÃO ((X > 3) OU (C < 7)) Verdadeiro 
 
e) (A > B) OU (C > B) Verdadeiro 
 
f) (X >= 2) Falso 
 
g) (X < 1) E (B >= D) Falso 
 
h) ( D < 0) OU (C > 5) Verdadeiro 
 
i) NÃO (D > 3) OU (NÃO (B < 7)) Falso 
 
j) (A > B) OU (NÃO (C > B)) Falso 
 
 
EXERCÍCIO 05: 
 
/* 
Efetuar a soma dos números 5 e 10 e imprimir o resultado 
*/ 
 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() 
{ 
int p1,p2,soma; //declaração de 3 variáveis inteiras 
p1 = 5; //a 1ª parcela inteira é 5 
p2 = 10; //a 2ª parcela inteira é 10 
soma = p1 + p2; //a soma inteira é 5 + 10 
printf("A soma é: %d",soma); //impressão do resultado soma 
 
return 0; 
} 
 
 
EXERCÍCIO 06: 
 
//Efetuar a soma de três números digitados pelo usuário e imprimir o resultado. 
 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() 
{ 
// declaração de variáveis do tipo real (float) 
float a,b,c,soma; 
 
//leitura dos números informados pelo usuário 
printf("Informe o primeiro numero: "); 
scanf("%f",&a); 
printf("Informe o segundo numero: "); 
scanf("%f",&b); 
printf("Informe o terceiro numero: "); 
scanf("%f",&c); 
 
//a variável soma recebe a soma de a, b e c 
soma=a+b+c; 
 
//Exibe resultado 
printf("A soma eh: %.2f",soma); //%.2f imprime o número real com 2 
casas decimais 
 
return 0; 
} 
 
 
EXERCÍCIO 07: 
 
//Efetuar a multiplicação de dois números digitados pelo usuário e imprimir o 
resultado. 
 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() 
{ 
//declaração de variáveis do tipo inteiro (int) 
int a,b,produto; 
 
//leitura dos números informados pelo usuário 
printf("Informe o primeiro numero: "); 
scanf("%d",&a); 
printf("Informe o segundo numero: "); 
scanf("%d",&b); 
 
//calcula produto de a*b e armazena na variável produto 
produto=a*b; 
 
//Exibe o resultado 
printf("O produto eh: %d",produto); 
 
return 0; 
} 
 
 
EXERCÍCIO 08: 
 
/* 
Calcular o aumento que será dado a um funcionário, obtendo do usuário as seguintes 
informações : salário atual e a porcentagem de aumento. Apresentar o novo valor do 
salário e o valor do aumento. 
*/ 
 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() 
{ 
//declaração de variáveis do tipo real (float) 
float salario, aumento, novo_salario; 
 
//leitura de dados do funcionário 
printf("Informe seu salario atual\n"); 
scanf ("%f", &salario); 
printf ("Informe a porcentagem de aumento\n"); 
scanf ("%f", &aumento); 
 
//calculo do aumento salarial 
aumento=salario*aumento/100; 
 
//calculo do novo salario 
novo_salario=salario+aumento; 
 
//impressão dos resultados 
printf ("O valor do aumento salarial e' %.2f\n", aumento); 
printf ("O valor do novo salario e' %.2f\n", novo_salario); 
 
return 0; 
} 
 
 
EXERCÍCIO 09: 
 
/* 
Converter uma quantidade de horas digitadas pelo usuário em minutos. Informe o 
resultado em minutos. 
*/ 
 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() 
{ 
//declaração das variáveis inteiras (trata-se de quantidade e não frações) 
int horas,minutos; 
 
//leitura das horas 
printf("Horas: "); 
scanf("%d",&horas); 
 
//conversão horas para minutos (X 60) 
minutos=horas*60; 
 
//impressão do resultado em minutos 
printf("Em minutos, eh %d",minutos); 
 
return 0; 
} 
 
 
EXERCÍCIO 10: 
 
/* 
Leitura: salário bruto e número de horas extras 
Cálculo: salário líquido = (salário bruto + valor das horas extras) - 8% do total de 
INSS 
Mostrar: salário líquido 
*/ 
 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() 
{ 
/* 
Declaração de Variáveis: 
horas: quantidade de horas extras (int) 
bruto: salario bruto (float) 
valor_extra: valor de cada hora extra (float) 
liquido: salário líquido a ser calculado (float) 
*/ 
int horas; 
float bruto,valor_extra,liquido; 
 
//Leitura do salário, valor da horas extras e quantidade de horas extras 
printf("Digite o valor do salário bruto do funcionário: "); 
scanf("%f",&bruto); 
printf("Digite o valor das horas extras: "); 
scanf("%f",&valor_extra); 
printf("Digite a quantidade de horas extras trabalhadas pelo funcionário: "); 
scanf("%d", &horas); 
 
//Calculo do salário liquido 
liquido = 0.92 * (bruto + horas * valor_extra); 
 
//Impresão com duas casa decimais 
printf("O salário líquido do funcionário é de: %.2f", liquido); 
 
return 0; 
} 
 
 
EXERCÍCIO 11: 
 
/* 
Leitura do nº de Kw consumido 
Preço: 0.12 por kw 
Calcular valor a ser pago: 0.12 * qtd_de_kw + 18% do ICMS 
*/ 
 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() 
{ 
/* 
Declaração de Variáveis 
Kw é a quantidade de kw consumido 
valor é o valor a pagar 
*/ 
float Kw,valor; 
 
//Leitura dos Kw consumidos 
printf("Informe a quantidade de KW consumidos: "); 
scanf("%f",&Kw); 
 
//1º cálculo: valor por Kw consumido 
valor = Kw * 0.12; 
 
//2º cálculo: volor por Kw + 18% de ICMS 
valor = valor * 1.18; 
 
//Impressão: 
printf("O total a pagar é %.2f",valor); 
 
return 0; 
} 
 
 
EXERCÍCIO 12: 
 
/* 
Calcular a média de combustível gasto pelo usuário, sendo informado a quantidade de 
quilômetros rodados e a quantidade de combustível consumido. 
*/ 
 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() 
{ 
//declaração das variáveis reais (float) 
float km,comb,media; 
 
//leitura da quantidade de km rodados 
printf("Quantidade de KM rodados: "); 
scanf("%f",&km); 
 
//leitura da quantidade de combustivel consumido printf("Quantidade de 
Combustivel consumido: "); scanf("%f",&comb); 
 
//cálculo da média (resultado real) 
media=comb/km; 
 
//impressão da media com duas casas decimais 
printf("A media de combustivel por km eh: %.2f",media); 
 
return 0; 
} 
 
 
EXERCÍCIO 13: 
 
/* 
Efetuar a leitura de uma nota e, se o valor for maior ou iguala 60, imprimir na tela 
"APROVADO". 
*/ 
 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() 
{ 
//declaração da variavel nota 
int nota; 
 
//leitura da nota 
printf("Nota do aluno(a): "); 
scanf("%d",&nota); 
 
//comparação e impressão da mensagem 
if(nota>=60) 
printf("APROVADO"); 
 
/* 
Como se tem somente um comando dentro do if, pode-se escrevê-lo direto sem uso do 
{ e } Pode-se optar por 
if(nota>=60) 
{ 
printf("APROVADO"); 
} 
*/ 
 
return 0; 
} 
 
 
EXERCÍCIO 14: 
 
/* 
Leia uma nota 
nota >= 60 -> APROVADO 
nota < 60 -> REPROVADO 
*/ 
 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() 
{ 
//Declaração da variável nota 
float nota; 
 
//Leitura da Nota 
printf ("Digite a nota:"); 
scanf("%f",&nota); 
 
//Verificar se nota é maior ou igual a 60 
if(nota>=60) 
{ 
 //caso a condição em if for verdadeira 
printf ("O aluno está aprovado.\n"); 
} 
else 
{ 
//caso a condição em if for falsa 
printf ("O aluno está reprovado.\n"); 
} 
 
return 0; 
} 
 
 
EXERCÍCIO 15: 
 
/* 
Efetuar a leitura de uma nota e, se o valor for maior ou igual a 60, imprimir na tela 
"APROVADO", se for menor, imprimir reprovado. Testar ainda se o valor lido foi maior do 
que 100 ou menor do que zero. Neste caso, imprimir "NOTA INVÁLIDA". 
*/ 
 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() 
{ 
/* 
declaração da variavel nota 
Motivo de ser float: suponhamos que a nota é 100.1 (Deve ser nota inválida) 
se fosse inteiro, ele pegaria a parte inteira de 
100.1 que é 100 e diria que está aprovado. 
Como float ele não comete este erro 
*/ 
float nota; 
 
//leitura 
printf("Nota do aluno(a): "); 
scanf("%f",&nota); 
 
//comparação e impressão da mensagem 
if((nota<0)||(nota>100)) 
{ 
printf("NOTA INVÁLIDA"); 
} 
else 
{ 
if(nota<60) 
{ 
printf("REPROVADO"); 
 } 
else 
{ 
printf("APROVADO"); 
} 
} 
 
return 0; 
} 
 
 
EXERCÍCIO 16: 
 
/* 
Ler um número inteiro e informar se o número lido é par ou impar. 
*/ 
 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() 
{ 
//Declaraçao da variável inteira 
int num; 
 
//Leitura do numero 
printf("Informe um numero: "); 
scanf("%d",&num); 
 
//Comparação 
if(num%2==0) 
{ 
//se o resto da divisao por 2 é zero, imprima PAR 
printf("PAR"); 
} 
else 
{ 
//senão imprima ÍMPAR 
printf("ÍMPAR"); 
} 
 
return 0; 
} 
EXERCÍCIO 17: 
 
/* 
Ler um número inteiro 
Testar se termina com 0 (divisível por 10) 
-> Se sim, exiba METADE do numero 
-> Se não, exiba "O número digitado não termina com 0" 
*/ 
 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() 
{ 
//Declaração da variável inteira num 
int num; 
 
//Leitura do numero 
printf("Digite um numero: "); 
scanf("%d",&num); 
 
//Vamos testar se é divisível por 10 
if(num%10==0) 
{ 
//se sim, imprime metade do num 
printf("A metade deste numero eh %d",num/2); 
//Observe que poderíamos criar outra variável conta=num/2 e imprimir ela 
} 
else 
{ 
//se não, imprime a msg 
printf("O numero digitado nao termina com 0"); 
} 
return 0; 
} 
 
 
EXERCÍCIO 18: 
 
/* 
Ler um número e informar se ele é positivo, negativo ou neutro (zero). 
*/ 
 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() 
{ 
//declaração de variáveis do tipo inteiro 
int num; 
 
//leitura e armazenamento do valor 
printf("Digite um numero\n"); 
scanf ("%d", &num); 
 
//compara e avalia se o valor é positivo, negativo ou neutro e imprime o 
resultado 
if (num==0) 
printf ("O valor lido é neutro\n"); 
else 
if (num>0) 
printf ("O valor lido é positivo\n"); 
else 
printf ("O valor lido é negativo\n"); 
 
return 0; 
} 
 
 
EXERCÍCIO 19: 
 
/* 
Faça a leitura do salário atual e do tempo de serviço de um funcionário. A seguir, 
calcule o seu salário reajustado. Funcionários com até 1 ano de empresa, receberão 
aumento de 10%. Funcionários com mais de um ano de tempo de serviço, receberão aumento 
de 20%. 
*/ 
 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() 
{ 
//declaração de variáveis 
float salario; //salario é real 
float tempo; //ao comparar em até 1 ano, pode ser fração de ano 
float novo; //salario reajustado 
 
//leitura do salario 
printf("Informe o salario: "); 
scanf("%f",&salario); 
 
//leitura do tempo de serviço 
printf("Informe o tempo de servico em anos: "); 
scanf("%f",&tempo); 
 
/* 
1ª parte do if 
se o tempo é de até um ano, o reajuste é 10% 
ou seja, o novo salario é 110% do antigo 
ou seja, é o salário antigo multiplicado por 1.1 
2ª parte do if 
reajuste de 20%, novo salário é 120%, salário antigo por 
*/ 
 
if(tempo<=1) 
{ 
novo=1.1*salario; 
printf("O novo salario eh de %.2f",novo); 
} 
else 
{ 
novo=1.2*salario; 
printf("O novo salario eh de %.2f",novo); 
} 
 
return 0; 
} 
 
 
EXERCÍCIO 20: 
 
/* 
Leitura: Ano atual, ano de nascimento 
Exibir: sua idade e classificação 
-> 0 a 3 anos: Bebê 
-> 4 a 10 anos: Criança 
-> 11 a 18 anos: Adolescente 
-> 19 a 50 anos: Adulta 
-> 51 ou mais: Idoso 
*/ 
 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() 
{ 
//Declaração de Variáveis (dois anos e uma idade inteiros) 
int ano_atual,ano_nasc,idade; 
 
//Leitura de ambos anos 
printf("Informe o ano atual: "); 
scanf("%d",&ano_atual); 
printf("Informe o ano de nascimento: "); 
scanf("%d",&ano_nasc); 
 
//Cálculo da idade 
idade = ano_atual - ano_nasc; 
 
//Exibir idade 
printf("Sua idade é: %d \n\n",idade); 
//soltamos dois ENTER's no final pelo \n 
 
//Exibir Classificação 
if(idade<0) 
{ 
printf("Idade Inválida \n"); //não existe idade negativa 
} 
else 
{ 
if((0<=idade)&&(idade<=3)) 
{ 
 
printf("Bebê \n"); 
} 
else 
{ 
if((4<=idade)&&(idade<=10)) 
{ 
//Se está no intervalo [4,10] 
printf("Criança \n"); 
} 
else 
{ 
if((10<idade)&&(idade<19)) 
{ 
//Se está no intervalo [10,19] 
printf("Adolescente \n"); 
} 
else 
{ 
if((18<idade)&&(idade<51)) 
{ 
//Se está no intervalo [18,51] 
printf("Adulto \n"); 
 } 
else //o quê restou foi 51 ou mais 
printf("Idoso \n"); 
} 
} 
 } 
 } 
return 0; 
} 
 
 
EXERCÍCIO 21: 
 
/* 
Informar o número do mês do ano e mostrar o nome do mês por extenso. Caso o número do 
mês não exista, exibir a mensagem "Mês inválido". 
*/ 
 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() 
{ 
//declaração da variável mes que será de 1 a 12 
int mes; 
 
//leitura do numero do mes 
printf("Informe o numero do mes: "); 
scanf("%d",&mes); 
 
/* 
comando switch com 12 casos + default 
de 1 a 12, irá imprimir o mes correspondente 
o default informa que o numero é inválido, ou seja, se não estar em [1,12], é 
inválido 
Lembre-se do break 
*/ 
switch(mes) 
{ 
case 1: printf("Janeiro"); 
break; 
case 2: printf("Fevereiro"); 
break; 
case 3: printf("Marco"); 
break; 
case 4: printf("Abril"); 
break; 
case 5: printf("Maio"); 
break; 
case 6: printf("Junho"); 
break; 
case 7: printf("Julho"); 
break; 
case 8: printf("Agosto"); 
break; 
case 9: printf("Setembro"); 
break; 
case 10: printf("Outubro"); 
break; 
case 11: printf("Novembro"); 
break; 
case 12: printf("Dezembro"); 
break; 
default: printf("Mes Invalido"); 
} 
return 0; 
} 
 
 
EXERCÍCIO 22: 
 
/* 
Faça um algoritmo que receba o valor do salário de uma pessoa e o valor de um 
financiamento pretendido. Caso o financiamento seja menor ou igual a 5 vezes o salário 
da pessoa, o algoritmo deverá escrever "Financiamento Concedido"; senão, ele deverá 
escrever "Financiamento Negado". 
*/ 
 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() 
{ 
//declaração de variáveis 
float salario,financ; 
float razao; //razão entre financiamento e salario 
 
//leitura do salario e financiamento 
printf("Digite o salario e o valor do financiamento: "); 
scanf("%f %f",&salario,&financ); 
 
//cálculo da razão entre financ e salario 
razao=financ/salario;//se a razao for > 5, será negado. Se não, será concedido 
if (razao>5) printf("Financiamento Negado"); 
else printf("Financiamento Concedido"); 
return 0; 
} 
 
 
EXERCÍCIO 23: 
 
/* 
Calcular e mostrar o salário semanal de uma pessoa: 
-> número de horas trabalhadas < 40, a pessoa recebe R$15,00 por hora 
-> senão recebe R$600,00 + R$21,00 para cada hora a mais de 40 horas 
Leia o número de horas trabalhadas e informe o salário. 
*/ 
 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() 
{ 
//Declaração de Variável (horas é inteiro e salário é float) 
int horas; 
float salario; 
 
//Leitura da quantidade de horas 
printf("Numero de horas trabalhadas: "); 
scanf("%d",&horas); 
 
//Cálculo do Salário 
if(horas<40) 
{ 
//se horas < 40, salario é R$15.00 por hora 
salario=horas*15; 
} 
else 
{ 
//senão, vai ser 600 + R$21.00 por hora excedente 
salario=600+21*(horas-40); //ou seja, hora_excedente = horas - 40 
} 
 
//Impressão do salário 
printf("O salario semanal desta pessoa eh %.2f",salario); 
return 0; 
} 
 
 
EXERCÍCIO 23: 
 
/* 
Calcular e mostrar o salário semanal de uma pessoa: 
-> número de horas trabalhadas < 40, a pessoa recebe R$15,00 por hora 
-> senão recebe R$600,00 + R$21,00 para cada hora a mais de 40 horas 
Leia o número de horas trabalhadas e informe o salário. 
*/ 
 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() 
{ 
//Declaração de Variável (horas é inteiro e salário é float) 
int horas; 
float salario; 
 
//Leitura da quantidade de horas 
printf("Numero de horas trabalhadas: "); 
scanf("%d",&horas); 
 
//Cálculo do Salário 
if(horas<40) 
{ 
 //se horas < 40, salario é R$15.00 por hora 
salario=horas*15; 
} 
else 
{ 
//senão, vai ser 600 + R$21.00 por hora excedente 
salario=600+21*(horas-40); 
//ou seja, hora_excedente = horas - 40 
} 
 
//Impressão do salário 
printf("O salario semanal desta pessoa eh %.2f",salario); 
return 0; 
} 
 
 
EXERCÍCIO 24: 
 
/* 
A taxa de juro depende do tempo. Num banco: 
 
1) 5 anos =< tempo ---> 0.95 
2) 4 anos =< tempo < 5 anos ---> 0.9 
3) 3 anos =< tempo < 4 anos ---> 0.85 
4) 2 anos =< tempo < 3 anos ---> 0.75 
5) 1 ano =< tempo < 2 anos ---> 0.65 
6) tempo < 1 ano ---> 0.55 
 
Receba o tempo em que os fundos foram mantidos em depósito e informe a taxa de juros 
correspondente. 
*/ 
 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() 
{ 
/* 
Declaração de Variáveis: 
Perceba que é complicado fornecer frações de anos. É mais fácil informar o tempo 
em meses. A partir daí, dividimos por 12 e sabemos a fração de ano correpondente. 
Por isso, duas variáveis: meses (inteiro) e anos (float). 
*/ 
int meses; 
float anos; 
 
//Leitura dos meses 
printf("Informe o tempo em meses em que os fundos foram mantidos em 
deposito: "); 
scanf("%d",&meses); 
 
/* 
Cálculo da fração de ano correspondente: 
Se colocássemos ano=meses/12; estaria errado. Aqui é uma divisao de dois 
inteiros. 
Ele fornece um numero inteiro. Ex.: 18/12 daria 1. Como anos é float, anos 
receberia 1.00 
No entanto, anos deve receber 1.5. Logo, convertemos a divisão inteira para 
divisão float 
Basta colocar (float) na frente 
*/ 
anos=(float)meses/12; 
 
/* 
Impressão dos valores correspondentes 
 
Esta é outra maneira de encadear IF's. Repare que no último else, ainda colocamos 
uma condição if. Se não o tivéssemos feito, anos negativos poderiam ser 
considerados 
*/ 
if(anos>=5) 
{ 
printf("Taxa de Juros de 0.95"); 
 } 
else 
{ 
if(anos<5 && anos>=4) 
{ 
printf("Taxa de Juros de 0.90"); 
} 
else 
{ 
if(anos<4 && anos>=3) 
{ 
printf("Taxa de Juros de 0.85"); 
} 
else 
{ 
if(anos<3 && anos>=2) 
{ 
printf("Taxa de Juros de 0.75"); 
} 
else 
{ 
if(anos<2 && anos>=1) 
{ 
printf("Taxa de Juros de 0.65"); 
} 
else 
{ 
if(anos<1 && anos>0) 
{ 
printf("Taxa de Juros de 0.55"); 
} 
} 
 } 
 } 
 } 
 } 
return 0; 
} 
 
 
EXERCÍCIO 25: 
 
/* 
Classifica-se a classe de peso e taxa de registro de um carro pelo seu ano e peso. 
1) Ano <= 1970: 
 
a) peso < 1200 ---> Classe 1 / Taxa de 16.50 
b) 1200 =< peso <= 1700 ---> Classe 2 / Taxa de 25.50 
c) 1700 < peso ---> Classe 3 / Taxa de 46.50 
 
2) 1971 <= Ano <= 1979: 
 
a) peso < 1200 ---> Classe 4 / Taxa de 27.00 
b) 1200 =< peso <= 1700 ---> Classe 5 / Taxa de 30.50 
c) 1700 < peso ---> Classe 6 / Taxa de 52.50 
 
3) Ano >= 1980: 
 
a) peso < 3600 ---> Classe 7 / Taxa de 19.50 
b) 3600 <= peso ---> Classe 8 / Taxa de 52.50 
 
Programa recebe peso e ano -> informa classe e taxa 
*/ 
 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() 
{ 
//Declaração de Variáveis 
int ano; 
float peso; 
 
//Leitura de ambas 
printf("Informe o ano do carro: "); 
scanf("%d",&ano); 
printf("Informe o peso do carro: "); 
scanf("%f",&peso); 
 
//Comparações e Impressões dos Valores Correspondentes 
if(ano<=1970) 
{ 
//1º caso (observe esta maneira de encadear IF's) 
if(peso<1200) 
printf("Classe: 1 Taxa de Registro: R$16.50"); 
else 
if(peso>=1200 && peso<=1700) 
printf("Classe: 2 Taxa de Registro: R$25.50"); 
else 
//senão > 1700 (situação que restou) 
printf("Classe: 3 Taxa de Registro: R$46.50"); 
 } 
else if(ano>1970 && ano<1980) 
//Podemos colocar um "senão se" direto ou colocar este "se" dentro do "senão" 
{ 
 
 if(peso<1200) 
 printf("Classe: 4 Taxa de Registro: R$27.00"); 
 else if(peso>=1200 && peso<=1700) 
 printf("Classe: 5 Taxa de Registro: R$30.50"); 
 else 
 printf("Classe: 6 Taxa de Registro: R$52.50"); 
} 
else 
//aqui não precisa de outro if. O quê restou foi ano > = 1980 
{ 
 if(peso<3600) 
 printf("Classe: 7 Taxa de Registro: R$19.50"); 
 else 
 printf("Classe: 8 Taxa de Registro: R$52.50"); 
 } 
return 0; 
} 
 
 
EXERCÍCIO 26: 
 
/* 
Ler as informações de um aluno: 
-> notas em 2 provas (entre 0 e 10) 
-> nota de um trabalho (entre 0 e 10) 
-> sua frequência (número de ausências) Condições: 
-> reprovado se faltou mais de 15 aulas 
-> aprovado se não for reprovado por falta e média >= 6,0 
-> Prova final se média < 6,0 
Média: 
-> peso 3 para a 1ª prova 
-> peso 5 para a 2ª prova 
-> peso 2 para o trabalho 
*/ 
 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() 
{ 
 /* 
 Declaração de Variáveis: 
 p1,p2: notas das provas trab: nota do trabalho 
 media: média final do aluno: 3*p1 + 5*p2 + 2*trab 
 Essa soma dividido por 10 é a média freq: total de ausências 
 */ 
 float p1,p2,trab,media; 
 int freq; 
 
 //Leitura dos Dados 
 printf("Informe a nota da 1ª prova: "); 
 scanf("%f",&p1); 
 printf("Informe a nota da 2ª prova: "); 
 scanf("%f",&p2); 
 printf("Informe a nota do trabalho: "); 
 scanf("%f",&trab); 
 printf("Informe a frequência (total de ausências): "); 
 scanf("%d",&freq); 
 
 //Cálculo da Média 
 media=(3*p1+5*p2+2*trab)/10; 
 
 //1º Teste: frequência 
 if(freq>15) printf("REPROVADO"); 
 
 else 
 //não foi reprovado por frequência. Agora é a média que qualifica 
 { 
 if(media>=6) printf("APROVADO"); 
 else printf("PROVA FINAL"); 
 } 
 return 0; 
} 
 
 
EXERCÍCIO 27: 
 
/* 
Leia um código e apresente o cargo correspondente 
Se não existir o código, diga "código inválido" Código Cargo 
101 Vendedor 
102 Atendente 
103 Auxiliar Técnico 
104 Assistente 
105 Coordenador de Grupo 
106 Gerente 
*/ 
 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() 
{ 
 //criação da variável a ser utilizada na múltipla escolha 
 int codigo; 
 
 //Leitura do Código 
 printf("Digite o código do cargo do funcionário: "); 
 scanf("%d", &codigo); 
 
 //código da múltipla escolha 
 switch(codigo) 
 { 
 case 101: printf("Cargo: Vendedor"); 
 //Se a variável for igual a 101 
 break; 
 //interrompe aqui. Se não o tiver, continuará executando todas as 
tarefas dos outros case 
 
 case 102: printf("Cargo:Atendente"); 
 break; 
 
 case 103: printf("Cargo: Auxiliar Técnico"); 
 break; 
 
 case 104: printf("Cargo: Assistente"); 
 break; 
 
 case 105: printf("Cargo: Coordenador de Grupo"); 
 break; 
 
 case 106: printf("Cargo: Gerente"); 
 break; 
 
 default: printf("Código Inválido."); //não precisa de break; 
 } 
 return 0; 
} 
EXERCÍCIO 28: 
 
/* 
Código de 1 a 4, que indica o tipo seguinte: 
 
Código Tipo da unidade 
1 CD-ROM (700MB) 
2 DVD-ROM (4.7GB) 
3 DVD-9 (8.54 GB) 
4 Blu-Ray (25 GB) 
 
Receba o codigo e informe o tipo correto de unidade de disco. 
*/ 
 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() 
{ 
 //Declaração da variável codigo que será usado na múltipla escolha 
 int codigo; 
 
 //Leitura do Codigo 
 printf("Informe o código: "); 
 scanf("%d",&codigo); 
 
 //múltipla escolha entre 4 casos específicos e um default 
 switch(codigo) 
 { 
 case 1: printf("CD-ROM (700MB)"); //caso codigo= =1 
 break; 
 
 case 2: printf("DVD-ROM (4.7GB)"); //caso codigo= =2 
 break; 
 
 case 3: printf("DVD-9 (8.54 GB)"); //caso codigo= =3 
 break; 
 case 4: printf("Blu-Ray (25 GB)"); //caso= =4 
 break; 
 
 default: printf("Código Inválido"); 
 //caso codigo não seja 1,2,3 nem 4 
 } 
 return 0; 
} 
 
 
EXERCÍCIO 29: 
 
/* 
Escreva um programa que receba dois números reais e um código de seleção do usuário. Se 
o código digitado for 1, faça o programa adicionar os dois números previamente 
digitados e mostrar o resultado; se o código de seleção for 2, os números devem ser 
multiplicados; se o código de seleção for 3, o primeiro número deve ser dividido pelo 
segundo. Se nenhuma das opções acima for escolhida, mostrar "Código inválido". 
*/ 
 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() 
{ 
 //declaração dos dois numeros reais e resultado da operação realizada 
 float a,b,result; 
 
 //declaração do codigo de seleção 
 int cod; 
 
 //leitura dos dois numeros 
 printf("Insira dois numeros reais : "); 
 scanf("%f %f",&a,&b); 
 
 //leitura do codigo 
 printf("Insira o codigo: "); 
 scanf("%d",&cod); 
 
 /* 
 Opções disponíveis: 
 cod = 1 : somar 
 cod = 2 : multiplicar 
 cod = 3 : dividir 
 outro cod = invalido 
 */ 
 switch(cod) 
 { 
 case 1: 
 { 
 result=a+b; 
 printf("A soma eh: %.2f",result); 
 } 
 break; 
 case 2: 
 { 
 result=a*b; 
 printf("O produto eh: %.2f",result); 
 } 
 break; 
 case 3: 
 { 
 if(b!=0) 
 { 
 result=a/b; 
 printf("O quociente eh: %.2f",result); 
 } 
 else 
 { 
 printf("Divisao impossivel”); 
 } 
 } 
 break; 
 default: printf("Codigo Invalido"); 
 } 
 return 0; 
} 
 
 
EXERCÍCIO 30: 
 
/* 
Transforma a nota de um aluno em conceito. As notas 10 e 9 receberão conceito A, as 
notas 8 e 7 receberão conceito B, as notas 6 e 5 receberão conceito C e abaixo de 5 
conceito D. 
*/ 
 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() 
{ 
 //declaração de variaveis 
 int nota; 
 
 //leitura da nota do aluno 
 printf ("Informe o valor da nota\n"); 
 scanf ("%d", &nota); 
 
 //compara a nota e atribui o conceito correspondente 
 if (nota<0 || nota>10) 
 printf ("Nota invalida\n"); 
 else 
 if (nota==9 || nota==10) 
 printf ("Conceito A\n"); 
 else 
 if (nota==8 || nota==7) 
 printf ("Conceito B\n"); 
 else 
 if (nota==6 || nota==5) 
 printf ("Conceito C\n"); 
 else 
 printf ("Conceito D\n"); 
 return 0; 
} 
 
 
EXERCÍCIO 31: 
 
/* 
2 valore inteiros positivos entre 1 e 10 
se soma < 8, informe média 
se soma = 8, informe produto 
se soma > 8, informe quociente do maior pelo menor 
*/ 
 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() 
{ 
 //declaração de variáveis 
 int n1, n2, soma, produto, aux; 
 float media, quociente; 
 
 //leitura dos inteiros excluindo fora do intervalo [1,10] 
 do{ 
 printf("Digite dois inteiros entre 1 e 10: "); 
 scanf ("%d %d",&n1,&n2); 
 }while((n1<1)||(n1>10)||(n2<1)||(n2>10)); 
 //n1 e n2 menor que 1 e maior que 10 estão fora 
 
 //calcula a soma 
 soma=n1+n2; 
 //se a soma for menor que 8, pede-se a média 
 if(soma<8) 
 { 
 media=(n1+n2)/2; //cálculo da média 
 printf("A média eh %.2f",media); 
 } 
 else //se a soma não é menor que 8, então 
 { 
 if(soma==8) //se soma = 8, pede-se o produto 
 { 
 produto=n1*n2; //cálculo do produto 
 printf("O produto eh %d",produto); 
 } 
 else 
 //senão a soma é maior 
 { 
 //precisamos ver quem é o maior 
 if (n1<n2) 
 //queremos jogar o maior no n1. 
 //Então se o maior for n2, trocamos 
 { 
 aux=n1; //auxiliar recebe n1 
 n1=n2; //n1 recebe n2 
 n2=aux; 
 /*n2 recebe auxiliar, 
 ou seja, n2 recebeu o valor de n1*/ 
 } 
 //O quociente pode ser float 
 quociente=(float)n1/n2; 
 //colocando (float), nós convertemos a divisão inteira 
 //n1/n2 
 
 printf("O quociente eh %.2f",quociente); 
 
 } 
 
 } 
 return 0; 
} 
 
 
EXERCÍCIO 32: 
 
/* 
Escrever um algoritmo que lê 10 valores e conte quantos destes valores são 
negativos, escrevendo esta informação. 
*/ 
 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() 
{ 
 /* 
 Declaração de Variáveis 
 numero: numero digitado, que é float 
 i: variável que será usado no for como variável de controle 
 cont: contador de números negativos. Começa com 0, pois não existe nenhum 
negativo inicialmente 
*/ 
 float numero; 
 int i,cont=0; 
 
 for(i=1;i<=10;i++) 
 /* 
 i começa com 1 e vai até 10 aumentando de 1 em 1 
 Ou seja, iremos realizar os comandos abixo 10X, para 10 numeros 
 */ 
 { 
 //Leitura do numero (ocorrerá 10X) 
 printf("Digite o %dº numero: ",i); 
 //%dº é um recurso estilístico. Aparece 1º,2º,... 
 scanf("%f",&numero); 
 
 if(numero<0) cont++; //se o numero lido for negativo, cont recebe +1 
 
 } 
 //aqui o i recebe +1. Se ele continuar <=10, repete mais uma vez. 
 //Se não, sai do for 
 
 /*ao chegar aqui, 
 cont terá recebido a quantidade de negativos entre os 10 numeros*/ 
 
 //Impressão da quantidade 
 printf("A quantidade de numeros negativos são %d",cont); 
 return 0; 
} 
 
 
EXERCÍCIO 33: 
 
/* 
Escreva um algoritmo que leia 20 valores e encontre o maior e o menor 
deles. Mostre o resultado. 
*/ 
 
#include <stdio.h> 
#include <stdlib.h> 
int main() 
{ 
 /* 
 Declaração das Variáveis 
 maior: armazenará o maior valor 
 menor: armazenará o menor valor 
 cont: contador que limitará o programa (vale 1 a 20) 
 valor: valor lido 
 */ 
 int maior,menor,valor,cont=1; 
 
 //Leitura do 1º Valor 
 printf("Digite o valor 1: "); 
 scanf("%d",&valor); 
 maior = valor; //inicializa maior com o primeiro valor digitado 
 menor = valor; //inicializa menor com o primeiro valor digitado 
 //Perceba que o 1º valor digitado é o maior e o menor até agora 
 
 cont++; 
 /*incrementa contador. 
 Aqui eu já tive um valor. O próximo será o 2. Logo, cont=2*/ 
 
 do //faça uma vez primeiro... 
 { 
 //Leitura dos novos valores 
 printf("Digite o valor %d: ",cont); 
 scanf("%d", &valor); 
 
 /*Vamos comparar com a variavel maior 
 que armazena o maior valor até aqui*/ 
 if(valor > maior) //se o valor é maior que o maior valor, então 
 maior = valor; //a variável maior armazena o novo valor 
 if(valor < menor) //de forma análoga para o menor 
 menor = valor; 
 
 cont++; //Vamos ler o próximo numero 
 
 }while(cont<=20); 
 //... e continuaremos repetindo tudo até que cont ultrapasse 20 
 
 //Poderíamos ter usado somente while aqui. Seria while(cont<=20){...} 
 
 //impressão do maior valor e do menor 
 printf("\n\nMaior: %d\nMenor: %d\n", maior, menor); 
 return 0; 
} 
 
 
EXERCÍCIO 34*: 
 
/* 
Faça um algoritmo que lê um valor N inteiro e positivo e que calcula e 
escreve o fatorial de N (N!). 
Lembre-se: Não existe fatorial de número negativoe o exercício não permite de zero 
*/ 
 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() 
{ 
 /* 
 Declaração de Variáveis 
 N foi iniciado com 0 para que entre no 1º while 
 res é o resultado. Ele receberá ele mesmo multiplicado pela próxima parcela do 
 fatorial. Para não modificar o produto final, ele deve ser neutro. Logo, começa 
 com 1 que é o fator neutro da multiplicação. 
 */ 
 int N=0,res=1; 
 
 /* 
 Comando While: 
 enquanto N<=0, vai ficar solicitando um numero positivo 
 irá fazer a verificação se este N é > 0. Aí vai parar. 
 */ 
 while(N<=0) 
 { 
 printf("Informe N: "); 
 scanf("%d",&N); 
 } 
 
 //Imprimir a mensagem abaixo 
 printf("O fatorial de %d eh: ",N); 
 
 //Código (explicação no final): 
 while(N>=1) 
 { 
 res*=N; 
 //res=res*N; 
 if(N!=1) 
 printf("%d * ",N); 
 else 
 printf("%d = ",N); 
 N--; 
 } 
 printf("%d",res); 
 return 0; 
} 
 
/* 
 
Código: 
 
1) Vamos imprimir cada componente do fatorial e um sinal 
 
2) o fatorial será calculado pegando N * (N-1) * (N-2) * ... * 1 = res 
 
Percebe-se que iremos diminuir de 1 unidade o N a cada loop. 
Aí iremos imprimir este novo N mais um sinal *. 
Quando ele chegar a 1, será o último loop. Imprimiremos 1 = 
No próximo, N será zero. Aí pára. Por isso no while, está enquanto N>=1 
 
3) O resultado res receberá ele mesmo multiplicado pelo novo N a cada loop 
até chegar a N=1 
 
4) Como dito em (2), se N é diferente de 1, iremos imprimir N e o sinal * 
Quando N for 1, ou seja, NÃO(DIFERENTE), aí iremos imprimir N e = 
 
5) Depois retiramos uma unidade de N. 
 
6) Logo em seguida, imprimimos o resultado final já multiplicado por todos os N's 
Note que a impressão ocorre sem saltar "ENTER's" 
 
*/ 
 
 
EXERCÍCIO 35: 
 
/* 
A prefeitura de uma cidade fez uma pesquisa entre seus habitantes, 
coletando dados sobre o salário e número de filhos. A prefeitura deseja 
saber: 
a) média do salário da população; 
b) média do número de filhos; 
c) maior salário; 
d) percentual de pessoas com salário até R$100,00; 
O final da leitura de dados se dará com a entrada de um salário negativo. 
*/ 
 
#include <stdio.h> 
#include <stdlib.h> 
int main() 
{ 
 /* 
 Declaração de Variáveis: 
 filhos: quantidade de filhos 
 salario: recebe o salario informado pelo usuario 
 contp: contador de população -> cada novo salario é mais um na população 
 mediaF: média de filhos. Primeiramente somaremos todos os filhos aqui. 
 Depois, dividiremos este valor pela população (contp) armazenando 
 nesta mesma variável mediaF 
 mediaS: média de salário. Análogo à mediaF. 
 maior: maior salário. Inicialmente será 0. Não existe salário negativo, logo o 
menor possível é zero. 
 perc: percentual de pessoas com salario <= 100. Será uma espécie de contador 
primeiramente. Depois usaremos regra de três. Assim, 
 perc=(perc*100)/contp % 
 */ 
 int filhos,contp=0; 
 float salario,mediaF=0,mediaS=0,maior=0,perc=0; 
 
 do{ //faremos uma vez... 
 
 //Leitura do 1º salário 
 printf("Informe o salário: "); 
 scanf("%f",&salario); 
 
 if(salario>=0) 
 { //se salario for positivo ou nulo, faz o restante 
 
 contp++; 
 //população aumentou em uma unidade 
 mediaS+=salario; 
 //somaremos o salario em mediaS (mediaS = mediaS + salario) 
 
 /*se o salario é maior que o maior anteriormente registrado, 
 maior recebe ele*/ 
 
 if(salario>maior) maior=salario; 
 
 //Ver se enquadra na parte menor de 100 
 if(salario<=100) perc++; //mais um igual ou abaixo de 100 
 
 //Leitura do numero de filhos 
 printf("Numero de Filhos: "); 
 scanf("%d",&filhos); 
 
 mediaF+=filhos; 
 //somaremos os filhos aqui (mediaF = mediaF + filhos) 
 
 } 
 //se salario menor que 0 não entra no if 
 }while(salario>=0); 
 //...e continuamos repetindo pra sempre até que salario seja negativo 
 //aqui já temos todos os salários registrados 
 
 //Cálculo da média do salário da população 
 mediaS = mediaS/contp; 
 
 //Cálculo da média do número de filhos 
 mediaF = mediaF/contp; 
 
 //percentual de pessoas com salário até R$100,00 
 perc = (perc*100)/contp; 
 
 //Impresssão de Informações 
 if(contp!=0) 
 //contp pode ser 0 se o 1º salario for negativo. Logo não tem que informar nada 
 { 
 printf("\n Média de Salário: %.2f \n",mediaS); 
 printf("\n Média de Filhos: %.2f \n",mediaF); 
 printf("\n Maior salário: %.2f \n",maior); 
 printf("\n Percentual de pessoas com salário até 100: %.2f \n",perc); 
 } 
 return 0; 
} 
 
 
EXERCÍCIO 36: 
 
/* 
Chico tem 1,50 metro e cresce 2 centímetros por ano, enquanto Zé tem 1,30 metro e 
cresce 3 centímetros por ano. Construa um algoritmo que calcule e imprima quantos anos 
serão necessários para que Zé seja maior que Chico. 
*/ 
 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() 
{ 
 //declaração de variáveis 
 int anos=0; //quantidade de anos que se passam até zé ficar maior 
 float chico=1.5,ze=1.3; //altura de cada um 
 
 //enquanto chico maior que ze, ambos aumentam e passa 1 ano por loop 
 while(chico>=ze) 
 { 
 chico=chico+0.02; 
 //chico cresce 0.02 
 
 ze+=0.03; 
 /*ze cresce 0.03 -> Repare que ze+=0.03; 
 é a mesma coisa que ze=ze+0.03;*/ 
 
 anos++; //passou 1 ano 
 } 
 
 /* 
 só saiu do while quando ze ficou maior. anos irá valer a quantidade de anos 
 necessários para isso 
 */ 
 
 printf("Anos: %d",anos); //imprime-se a quantidade de anos 
 return 0; 
} 
 
 
EXERCÍCIO 37: 
 
/* 
Construir um algoritmo que calcule a média aritmética de vários valores inteiros 
positivos, lidos externamente. O final da leitura acontecerá quando for lido um valor 
negativo. 
*/ 
 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() 
{ 
 
 /* 
 declaração de variáveis n: numero digitado 
 cont: quantos numeros foram (inicialmente é zero) 
 soma: a soma de todos (inicialmente é zero) A média é soma/cont que pode ser 
 float 
 Por isso, o cont OU o soma deve ser float. Escolhemos o soma Se quiser fazer soma 
 como int, media deve ser: media=(float)soma/cont; 
 -> (float) converte a divisão inteira para real 
 */ 
 int n,cont=0; 
 float soma=0; 
 
 //Iremos ler o 1º numero e ficar repetindo enquanto n >= 0 
 //(quando n<0, interrompe) 
 
 do{ 
 printf("Informe o numero inteiro e positivo: "); 
 scanf("%d",&n); //leitura de n 
 if(n>=0) 
 //se n não é negativo, iremos fazer a soma e acrescentar 1 no contador 
 { 
 soma+=n; //é a mesma coisa que soma=soma+n; 
 cont++; //é a mesma coisa que cont=cont+1; 
 } 
 }while(n>=0); //iremos ficar repetindo até que n torne-se negativo 
 
 //Agora, n foi negativo. Já somamos todos os anteriores e contamos quantos foram 
 
 if(cont!=0) 
 //se cont for igual a 0, quer dizer que não houve numero nenhum. 
 //O negativo foi o 1º 
 printf("A media aritmetica eh: %.2f",soma/cont); //imprimimos a media 
 /* 
 observe que podíamos criar uma variável media=soma/cont; 
 depois colocaríamos media no printf 
 Aqui mostro outro jeito: colocar a operação direta no printf 
 */ 
 return 0; 
} 
 
 
EXERCÍCIO 38: 
 
/* 
- 1,2,3,4 = voto para os respectivos candidatos; 
- 5 = voto nulo; 
- 6 = voto em branco; 
Leia o código, calcule e escreva as seguintes informações: 
- total de votos para cada candidato; 
- total de votos nulos; 
- total de votos em branco; 
Como finalizador do conjunto de votos, utilize o valor 0. 
*/ 
 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() 
{ 
 /* 
 Declaração de Variáveis 
 codigo: codigo de votação 
 c1,c2,c3,c4,nulo,branco: contadores para os candidatos 1,2,3 e 4 e para nulo e 
 branco 
 */ 
 int codigo,c1=0,c2=0,c3=0,c4=0,nulo=0,branco=0; 
 
 do{ //faça uma vez.... 
 //Leitura do código 
 printf("Informe o codigo: "); 
 scanf("%d",&codigo); 
 //se codigo é diferente de zero, faça: 
 if(codigo!=0) 
 { 
 switch(codigo) //múltipla escolha{ 
 case 1: c1++; //+1 voto para o 1 
 break; 
 case 2: c2++; //+1 voto para o 2 
 break; 
 case 3: c3++; //+1 voto para o 3 
 break; 
 case 4: c4++; //+1 voto para o 4 
 break; 
 case 5: nulo++; //+1 voto nulo 
 break; 
 case 6: branco++; //+1 voto branco 
 break; 
 default: printf("\n Código Inválido \n\n"); 
 //codigos negativos e maiores que 6 
 } 
 } 
 
 }while(codigo!=0); //... continua repetinfo até codigo ser 0 
 
 //Impressão dos resultados 
 printf("\nTotal de votos para o candidato 1: %d \n",c1); 
 printf("Total de votos para o candidato 2: %d \n",c2); 
 printf("Total de votos para o candidato 3: %d \n",c3); 
 printf("Total de votos para o candidato 4: %d \n",c4); 
 printf("Total de votos nulos: %d \n",nulo); 
 printf("Total de votos brancos: %d \n",branco); 
 return 0; 
} 
 
 
EXERCÍCIO 39: 
 
/* 
Escrever um algoritmo que leia uma variável n e calcule a tabuada de 1 até n. 
Mostre a tabuada na forma: 
1xn=n 
2 x n = 2n 
3 x n = 3n 
............... 
n x n = n2 
*/ 
 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() 
{ 
 //declaração de variáveis (n é o número e i é usado no for) 
 int n,i; 
 
 //leitura do n 
 printf("Informe n: "); 
 scanf("%d",&n); 
 
 /* 
 FOR: iremos imprimir n linhas. 
 Repare que o 1º número começa em 1 e vai até n (1<=i<=n) 
 Então usaremos i pra "correr" de 1 a n 
 O 2º número é sempre o n 
 O 3º número é i*n (multiplicação) 
 PRINTF: 3 números inteiros impressos: i, n e o resultado i*n 
 */ 
 
 for(i=1;i<=n;i++) 
 { 
 printf("%d X %d = %d \n",i,n,i*n); 
 } 
 return 0; 
} 
 
 
EXERCÍCIO 40: 
 
/* Lê os valores n1 e n2 e imprime o intervalo fechado entre esses dois valores. */ 
 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() 
{ 
 //declaração de variaveis 
 int n1, n2, aux; 
 
 //leitura dos inteiros 
 printf("Digite dois valores inteiros\n"); 
 scanf ("%d %d",&n1,&n2); 
 
 //compara n1 e n2 e atribui o menor valor à variavel n1 
 if (n1>n2) 
 { 
 aux=n2; 
 n2=n1; 
 n1=aux; 
 } 
 
 printf ("Intervalo fechado entre %d e %d:\n\n", n1, n2); 
 
 /* A cada loop o valor de n1 aumenta uma unidade e é impresso. 
 Quando n1 for maior que n2 sai do loop e realiza o proximo comando*/ 
 
 while (n1<=n2) 
 { 
 printf ("%d\n", n1); 
 n1++; //n1=n1+1; 
 } 
 return 0; 
} 
 
 
EXERCÍCIO 41: 
 
/* 
Escrever um algoritmo que leia um número n que indica quantos valores 
devem ser lidos a seguir. Para cada número lido, mostre uma tabela 
(1 linha e duas colunas) contendo o valor lido e o fatorial deste valor. 
(Ver questão 34) 
*/ 
 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() 
{ 
 /* 
 Declaração de Variáveis 
 n: quantidade de valores a calcular o fatorial 
 numero: numero a ser fatorado 
 result: é o resultado. Ele receberá ele mesmo multiplicado pela próxima 
 parcela do fatorial. Para não modificar o produto final, ele 
 deve ser neutro. Logo, começa com 1 que é o fator neutro da 
 multiplicação. result será modificado constantemente para cada numero 
 fator: é a parcela que irei multiplicar com o resultado anterior até que o 
 fatorial esteja calculado. Começará com 1 e irá até numero 
 repetir: número de repetições do cálculo do fatorial. Começa com 1 e vai até n 
 */ 
 int n,result,fator,numero,repetir=1; 
 
 //Leitura da qtd de valores 
 printf("Quantidade de Valores: "); 
 scanf("%d",&n); 
 
 do{ //faça uma vez... 
 
 //"resetando" o resultado e a fator para cada numero 
 result=1; 
 fator=1; 
 
 //Leia o numero a ser fatorado 
 printf("Valor: "); 
 scanf("%d",&numero); 
 if(numero==0 || numero==1) //fatoriais de 0 e 1 é 1 
 { 
 result=1; //resultado direto 
 } 
 else //caso seja 2 pra frente... 
 { 
 while(fator<=numero) 
 //... result = result * fator até que fator se iguale ao numero 
 { 
 result=result*fator; 
 fator++; 
 } 
 } 
 
 /* 
 aqui, o fatorial do numero já foi calculado 
 antes de passar para o próximo, temos que imprimir em forma de tabela 
 Usaremos tabulação: \t 
 */ 
 
 printf("\n Numero: %d \t Fatorial: %d \n\n",numero,result); 
 
 repetir++; //repetir aumenta uma unidade. Vamos para o próximo numero 
 
 }while(repetir<=n); //... e continue até que repetir se iguale a n (última 
vez) 
 
 //chegando aqui, todos os n valores tiveram seu fatorial calculado e impresso 
 return 0; 
} 
 
 
EXERCÍCIO 42: 
 
/* 
Escrever um algoritmo que leia um número não determinado de valores e calcule a média 
aritmética dos valores lidos, a quantidade de valores positivos, a quantidade de 
valores negativos e o percentual de valores negativos e positivos. Mostre os 
resultados. 
 
ATENÇÃO: o enunciado não deixa claro mas será usado o valor 0 para simbolizar o fim da 
entrada de dados 
*/ 
 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() 
{ 
 /* 
 Declaração de Variáveis 
 numero: numero inteiro lido 
 cont: quantidade total de numeros lidos (inteiro) 
 media: no 1º momento, será a soma de todos os números e no 2º momento, media = 
 media/cont. Assim, media será a média aritmética dos numeros (soma/qtd) 
 c1 e c2: no 1º momento, eles se comportarão como inteiros. Eles serão 
 os contadores de números positivos e negativos respectivamente. No 2º 
 momento, c1=(c1*100)/cont, ou seja, c1 será o PERCENTUAL de valores positivos 
 em (cont) numeros lidos. Aqui ele será float. Por isso, foi declarado como float 
 */ 
 int numero,cont=0; 
 float media=0,c1=0,c2=0; 
 
 do //faça uma vez... 
 { 
 //Leia o numero 
 printf("Digite um numero: "); 
 scanf("%d",&numero); 
 
 if(numero!=0) //se o numero for diferente de zero, faça: 
 { 
 media+=numero; //a media recebe a soma de todos os numeros 
 cont++; //cont contará a qtd de numeros lidos 
 if(numero>0) //se numero é positivo... 
 { 
 c1++; //...contador dos positivos c1 recebe +1 
 
 }else c2++; //De forma análoga, c2 recebe +1 se for negativo 
 } 
 }while(numero!=0); //... até que numero seja 0 
 //Aqui a media tem a soma de todos os numeros 
 
 //Cálculo da Média aritmética 
 media=media/cont; 
 
 //Impressão 
 printf("\n Média Aritmética: %f",media); 
 
 //Aqui c1 e c2 são as quantidades de numeros positivos e negativos 
 //estou imprimindo valores float com 0 casas decimais. É como se fossem inteiros 
 printf("\n Quantidade de Valores Positivos: %.0f",c1); 
 printf("\n Quantidade de Valores Negativos: %.0f",c2); 
 
 //Aqui eu modificarei os valores de c1 e c2. Eles virarão percentuais. 
 c1=(c1*100)/cont; 
 c2=(c2*100)/cont; 
 
 //Agora c1 e c2 mudaram de valor. Irei imprimí-los com 2 casas decimais: 
 printf("\n Percentual de Valores Positivos: %.2f",c1); 
 printf("\n Percentual de Valores Negativos: %.2f",c2); 
 return 0; 
} 
 
 
EXERCÍCIO 43: 
 
/* 
Escrever um algoritmo que leia uma quantidade desconhecida de números e conte quantos 
deles estão nos seguintes intervalos: [0,25], [26,50], [51,75] e [76,100] . A entrada 
de dados deve terminar quando for lido um número negativo. 
*/ 
 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() 
{ 
 /* 
 Declaração de Variáveis numero: numero lido 
 c1,c2,c3,c4: contadores de cada intervalo 
 */ 
 int num=1, c1=0, c2=0, c3=0, c4=0; 
 while(num >= 0) 
 { 
 //Leitura do numero 
 printf("Digite um número: "); 
 scanf("%d", &num); 
 // Testes 
 if(num >= 0 && num <= 25) 
 c1++; 
 else if(num >= 26 && num <= 50) 
 c2++; 
 else if(num >= 51 && num <= 75) 
 c3++; 
 else if(num >= 76 && num <= 100) 
 c4++; 
 } 
 printf("No intervalo 1 foram digitados %d números.\n", c1); 
 printf("No intervalo 2 foram digitados %d números.\n", c2); 
 printf("No intervalo 3 foram digitados %d números.\n", c3); 
 printf("No intervalo4 foram digitados %d números.\n", c4); 
 return 0; 
} 
 
 
EXERCÍCIO 44: 
 
/* 
Faça um algoritmo que leia uma quantidade não determinada de números positivos. Calcule 
a quantidade de números pares e ímpares, a média de valores pares e a média geral dos 
números lidos. O número que encerrará a leitura será zero. 
*/ 
 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() 
{ 
 /* 
 Declaração de variáveis 
 n: numero 
 contp: contador de pares 
 conti: contador de ímpares 
 somap: soma dos pares 
 somat: soma total 
 As médias serão a soma dividido pelos contadores, que podem ser float mediap: 
 média dos pares 
 mediat: média total (Observe que a quantidade total é contp + conti) 
 */ 
 int n,contp=0,conti=0,somap=0,somat=0; //inicialização na declaração 
 float mediap,mediat; 
 
 do{ 
 printf("Informe n positivo: "); 
 scanf("%d",&n); //leitura do 1º n 
 if(n>0) //Se n for positivo realiza-se as contas 
 { 
 somat+=n; //some o n na soma total 
 if(n%2==0) //se n for par 
 { 
 contp++; //iremos acrescentar +1 no contador de pares 
 somap+=n; //iremos somar o n par ao somap (somap=somap+n) 
 } 
 else conti++; //se n for ímpar, somente some +1 no conti 
 } 
 }while(n!=0); //continua solicitando n's até que digite 0 
 //Cálculo da média 
 mediap=(float)somap/contp; //converti divisão 
 mediat=(float)somat/(contp+conti); //idem a. 
 
 //Impressão 
 printf("\n Quantidade de Pares: %d",contp); 
 printf("\n Quantidade de Ímpares: %d",conti); 
 printf("\n Média dos Pares: %.2f",mediap); 
 printf("\n Média Total: %.2f",mediat); 
 return 0; 
} 
 
EXERCÍCIO 45: 
 
/* 
Uma empresa deseja aumentar seus preços em 20%. Faça um algoritmo que 
leia o código e o preço de custo de cada produto e calcule o preço novo. 
Calcule também, a média dos preços com e sem aumento. Mostre o código e 
o preço novo de cada produto e, no final, as médias. A entrada de dados 
deve terminar quando for lido um código de produto negativo. 
*/ 
 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() 
{ 
 /* 
 Declaração de Variáveis 
 codigo: código do produto (negativo sai) 
 cont: quantidade de produtos 
 preco: primeiramente será preço atual do produto. Depois será o preço novo do 
 produto (120% do atual) 
 media1: primeiramente será a soma dos preços sem aumento. Depois será a média 
 deles 
 media2: primeiramente será a soma dos preços com aumento. Depois será a média 
 deles 
 */ 
 int codigo,cont=0; 
 float preco,media1=0,media2=0; 
 
 //Leitura do código 
 printf("Codigo: "); 
 scanf("%d",&codigo); 
 
 while(codigo>=0) //códigos negativos são inválidos 
 { 
 cont++; //temos +1 produto 
 
 //Leitura do preço atual 
 printf("Preço atual: "); 
 scanf("%f",&preco); 
 
 media1+=preco; //A media1 = media1 + preco (soma dos preços sem aumento) 
 
 //Cálculo do novo preço zlterando o valor de preco 
 preco=1.2*preco; 
 
 media2+=preco; 
 // media2 = media2 + preco, sendo este o NOVO preço COM aumento 
 
 //Impressão do código e do novo preço 
 printf("\n Codigo: %d Preço Novo: %.2f \n\n",codigo,preco); 
 
 //Leitura do código 
 printf("Codigo: "); 
 scanf("%d",&codigo); 
 } 
 /* 
 aqui a media1 e media2 somaram todos os preços possíveis 
 temos de calcular as médias verdadeira, que é a soma/cont 
 perceba que se eu colocar um codigo negativo "de cara", 
 a divisão será 0/0, que é indeterminado e dará erro 
 */ 
 
 if(cont!=0) //evitaremos o 0/0 
 { 
 media1=media1/cont; //cálculo da média dos preços antigos 
 media2/=cont; //cálculo da média dos novos preços 
 
 /* 
 Observe as reduções abaixo: 
 soma=soma+numero; -> soma+=numero 
 diferenca=diferenca-numero; -> diferenca-=numero 
 mult=mult*numero -> mult*=numero 
 div=div/numero -> div/=numero 
 Tudo isso é válido e muito útil 
 */ 
 
 //Impressão das Médias: 
 printf("\n\n Média dos Preços Antigos: %.2f",media1); 
 printf("\n\n Média dos Preços Novos: %.2f \n",media2); 
 } 
 return 0; 
} 
 
 
EXERCÍCIO 46: 
 
/* 
Escreva um algoritmo que gere o números de 1000 a 1999 e escreva aqueles que dividido 
por 11 dão resto igual a 5. 
*/ 
 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() 
{ 
 //declaração de variáveis (n será o número que vai de 1000 a 1999) 
 int n; 
 for(n=1000;n<=1999;n++) //1000<=n<=1999 e n vai aumentando de 1 a cada loop 
 { 
 if(n%11==5) 
 //lembre-se que o resto da divisão é %. Se este for 5 entra no if 
 printf("%d \n",n); //iremos imprimir o numero n específico onde n%11==5 
 } 
 return 0; 
} 
 
 
EXERCÍCIO 47: 
 
/* 
Escreva um algoritmo que lê um valor n inteiro e positivo e que calcula a 
seguinte soma: 
S := 1 + 1/2 + 1/3 + 1/4 + ... + 1/n 
O algoritmo deve escrever cada termo gerado e o valor final de S. 
*/ 
 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() 
{ 
 /* 
 Declaração de Variáveis 
 n: número positivo 
 i: denominador que varia de 2 a n 
 S: soma das frações. Será um float. Começa com 1.0, pois n pode 
 ser 1 ou um numero maior que 1. Em todos, S irá valer pelo menos 1 
 */ 
 int n,i; 
 float S=1.0; 
 
 /* 
 Leitura do numero n 
 n deve ser positivo. Pede-se o n uma vez. Se for <= 0, continua pedindo 
 */ 
 do 
 { 
 printf("Informe n positivo: "); 
 scanf("%d",&n); 
 }while(n<=0); 
 
/* 
 1º CASO: n= =1 
 Irei imprimir: S = 1 (cada termo gerado) 
 S = 1 (valor final de S) 
 */ 
 if(n==1) 
 printf("\n S := 1 \n\n S := 1 \n"); 
 
 //2º CASO: explicação no final 
 else 
 { 
 printf("\n S := 1 + "); 
 for(i=2;i<=n;i++) 
 { 
 S+=(float)1/i; 
 if(i!=n) printf("1/%d + ",i); 
 else printf("1/%d",i); 
 } 
 printf("\n\n S := %.2f \n",S); 
 } 
 return 0; 
} 
 
/* 
 
2º CASO: n é diferente de 1 
 
Primeiro imprime o 1º termo gerado S := 1 + 
 
A partir daqui, o denominador i varia de 2 até o numero n 
S será o somatório dos termos 1/i, sendo que seu valor inicial é 1 
S é float. Para que a divisão 1/i não seja a parte inteira, 
deve-se converter a divisão para float colocando (float) na frente 
Se o i for diferente de n (não é o último termo), imprime 1/i e o sinal + 
Senão (i= =n, ou seja, é o último termo), só coloca 1/i 
 
Depois de tudo isso, os termos já foram impressos 
Agora imprime o valor final de S, com duas casas decimais (escolha arbitrária) 
 
*/ 
 
 
EXERCÍCIO 48: 
 
/* 
Escrever um algoritmo que lê 10 valores, um de cada vez, e conte quantos deles estão no 
intervalo [10,20] e quantos deles estão fora do intervalo, escrevendo estas 
informações. 
*/ 
 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() 
{ 
 /* 
 Declaração de Variáveis numero: numero lido 
 i: variável de controle do comando de repetição for 
 cont1: contador de quantos numeros estão no intervalo [10,20] 
 cont2: contados de quantos estão fora 
 */ 
 int numero,i,cont1=0,cont2=0; 
 
 //Código que repetirá os comandos 10X 
 for(i=1;i<=10;i++) //i valerá de 1 a 10 
 { 
 //Leitura do numero 
 printf("Numero: "); 
 scanf("%d",&numero); 
 
 //Teste do intervalo 
 if(numero>=10 && numero<=20) cont1++; 
 //se está no inetrvalo, cont1 recebe +1 
 else cont2++; //senão cont2 recebe +1 
 } 
 
 //Impressão do resultado 
 printf("\n %d numeros estão no intervalo [10,20] e %d numeros estão fora 
\n",cont1,cont2); 
 
 return 0; 
} 
 
 
EXERCÍCIO 49: 
 
/* 
Escrever um algoritmo que gere e escreva os 5 primeiros números perfeitos. 
Um número perfeito é aquele que é igual a soma dos seus divisores EXCLUINDO ELE MESMO. 
(Ex.: 6 = 1+2+3; 28= 1+2+4+7+14 etc). 
*/ 
 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() 
{ 
 /* 
 Decalaração de Variáveis 
 
 numero: será os números de 1 a infinito iremos testar cada numero até achar os 5 
 primeiros perfeitos 
 cont: contador de quantos números perfeitos foram encontrados 
 i: valor de controle do for será utilizado para se determinar osdivisores do 
 numero irá valer de 1 até o numero-1, já que o próprio número é desconsiderado 
 soma: somatório dos divisores como i irá se alterar constantemente, precisamos 
 somar os divisores encontrados. No final, se esse somatório for igual ao numero, 
 temos nosso numero perfeito 
 */ 
 int numero=1,cont=0,soma,i; 
 
 do //Faça uma vez... 
 { 
 soma=0; //resetei a soma para cada numero a ser experimentado 
 
 //i irá correr todos os prováveis divisores de numero exceto ele mesmo 
 for(i=1;i<numero;i++) //não precisa de { }, pois há só um comando, o if 
 
 //se o numero for divisível por i, achamos um divisor 
 if(numero%i==0) soma+=i; //soma dos divisores recebe o divisor i 
 
 //aqui a soma de todos os divisores já foi feita 
 
 if (soma==numero) //se a soma for igual ao numero, achamos um perfeito 
 { 
 printf(" %d ",numero); //impressão do perfeito 
 cont++; //achamos um perfeito 
 } 
 
 numero++; //Vamos verificar o próximo número 
 
 }while(cont<4); 
 
/* 
ATENÇÃO: 
O exercício pediu os 5 primeiros. O correto seria while(cont<5) 
No entanto, os números perfeitos são: 
{6 , 28, 496, 8.128, 33.550.336} 
O 5º número é enorme e o computador demora tempo demais para processar 
Por comodidade, acharemos os 4 primeiros 
*/ 
 return 0; 
} 
 
 
EXERCÍCIO 50*: 
 
/* 
Escrever um algoritmo que leia um valor N inteiro e positivo e que calcula o 
valor de E. Imprime o resultado de E ao final. 
E = 1 + 1 / 1! + 1 / 2! + 1 / 3! + 1 / N! 
*/ 
 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() 
{ 
 /* 
 declaração de variáveis 
 N: numero 
 cont: será o numero cujo fatorial é o denominador, varia de 1 a N 
 aux: é o resultado de cada fatorial 
 E: é a soma acima, começando com 1 
 */ 
 int N,cont=1,aux=1; 
 float E=1; 
 
 //leitura do numero até ser >0 
 do{ 
 printf("Digite um numero inteiro positivo :"); 
 scanf("%d",&N); 
 }while(N<=0); 
 
 //explicação no final 
 while(cont<=N) 
 { 
 aux*=cont; 
 E+=(float)1/aux; 
 cont++; 
 } 
 
 //imprimindo o valor de E 
 printf("E = %.2f",E); 
 return 0; 
} 
 
/* 
O cont vai variar de 1 a N. 
aux é o valor do fatorial de cont, ou seja, aux = cont ! 
Suponhamos que o N tenha sido 3. 
 
1º loop) cont vale 1 
aux deve ser 1! -> aux = aux * cont, ou seja, aux = 1 * 1 = 1 = 1! 
E vai somar-se à divisão em float de 1/1 
cont++ faz cont virar 2 
2º loop) cont vale 2 
aux deve ser 2! -> aux = aux * cont, ou seja, aux = 1 * 2 = 2 = 2! 
E vai somar-se à divisão float 1/2 
cont++ -> cont = 3 
3º loop) cont vale 3 = N -> último loop 
aux deve ser 3! -> aux = aux * cont, ou seja, aux = 2 * 3 = 6 = 3! 
E vai somar-se à divisão float 1/6 
cont++ -> cont = 4, saindo do while 
 
*/ 
 
Outras Formas de Solução (Não Comentado): 
 
A) Exercício 34: 
 
#include <stdio.h> 
#include <stdlib.h> 
 
int main( ) 
{ 
 int N,i,result=1; 
 
 do{ 
 printf("Digite un numero inteiro positivo: "); 
 scanf("%d",&N); 
 }while(N<=0); 
 
 for(i=1;i<=N;i++) 
 { 
 result=result*i; 
 } 
 
 printf("O fatorial é %d",result); 
 
 return 0; 
 
} 
 
B) Exercício 50: 
 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() 
{ 
 int N,cont,aux=1; 
 float E=1; 
 
 do{ 
 printf("Digite um numero inteiro positivo :"); 
 scanf("%d",&N); 
 }while(N<=0); 
 
 for(cont=1;cont<=N;cont++) 
 //agrupei o "cont=1", "while(cont<=N)" e cont++" em um único for 
 { 
 aux*=cont; 
 E+=(float)1/aux; 
 } 
 
 printf("E = %.2f",E); 
 return 0; 
}

Outros materiais