Você está na página 1de 18

1ª.

Lista de Exercícios - ICC

1. Qual será a saída do programa abaixo:

main()

printf (“%s\n%s\n%s\n”, “um”, “dois”,”três”);

R: A saída será a seguinte:

“um”

“dois”

“três”

Com cada palavra escrita em uma linha.

2. Qual o erro no seguinte programa:

main()

int a, b, c;

printf (“Digite 3 numeros:\n”);

scanf (“%d %d %d”, a, b, c);

printf (“\n%d %d %d”, a, b, c);

R: O erro está no fato de que para atribuir os valores as variáveis na função “scanf” as
mesmas devem estar precedidas de “&”. Isso é fundamental para alocar valores nos
endereços de memória das respectivas variáveis.
3. Quais os erros no seguinte programa:

main{}

(
printf (Existem %d semanas no ano., 56);
)
R: É possível notar alguns erros de sintaxe no programa acima, primeiro a inversão das
chaves e parênteses logo após do “main”, após isso, a ausência de “”(aspas”) dentro do
printf.

4. Qual a saída produzida pela execução do laço seguinte?

int a;

for (a=36; a>0; a/=2)

printf(“%d”,a);

R: Neste laço, cada repetição o valor de a é dividido por 2, portanto, na execução


teremos:
36189421
Importante ressaltar o arredondamento neste laço, ao dividir 9 por 2, o resultado seria
4,5, mas por se tratar de inteiros, o valor é arredondado para 4, isso aparece também na
divisão do valor 1, ao ser divido por 2, resulta em 0,5, que é arredondado para 0,
finalizando o laço de repetição.

5. Assuma que todas as variáveis são do tipo int. Encontre o valor de cada uma
delas e escreva um programa que as imprima para verificar o resultado:
a) X=(2+1)*6;
R: 18
#include <stdio.h>
int
main ()
{
int x;
x = (2 + 1) * 6;
printf ("O Valor de X e: %d \n", x);
}
b) Y=(5+1)/2*3;
R: 9
#include <stdio.h>
int
main ()
{
int y;
y=(5+1)/2*3;
printf("O Valor de Y e: %d \n", y);
}

c) J=(2+3)/4;
R: 8
#include <stdio.h>
int
main ()
{
int j;
j=(2+30)/4;
printf("O Valor de J e: %d \n", j);
}

d) K=5+10%4/2;
R: 6
#include <stdio.h>
int
main ()
{
int k = 5+10%4/2;
printf("O Valor de K e: %d \n", k);
}

6. Explique a diferença entre os operadores: ++jaca e jaca++. Qual deles é


compatível com a linha de programação:

jaca = jaca+1;

R: Ambos são compatíveis como a linha acima, uma vez que ambos os
operadores funcionam como incrementadores, a diferença é que “i++”, incrementa após
a execução da linha de programação, e “++i” executa antes da linha de programação.
7. Dado um número real qualquer. Informe seu valor absoluto (sem uso da
biblioteca math.h).

#include <stdio.h>
int
main ()
{
int a = 0;
printf("Digite um numero Qualquer:");
scanf("%d", &a);
if (a > 0){
printf("O Módulo do número é: %d", a);
} else if (a == 0){
printf("Você digitou 0!");
} else if (a < 0)
printf("O módulo do número é: %d", a*-1);
}

8. Dado um número natural n exiba o seu fatorial n! (sem uso da biblioteca math.h)
#include <stdio.h>
int
main ()
{
int a = 1;
int fatorial = 1;
printf("Digite um número natural!");
scanf("%d", &a);
if(a == 0){
printf("Você digitou 0!");
} else if (a > 0){
for(int i = 1; i <= a; i++)
fatorial = fatorial*i;
printf("O fatorial do numero é: %d", fatorial);
}else printf("Você digitou um valor diferente de um numero natural!");
}
9. O quadrado de um número natural n é dado pela soma dos n primeiros números
ímpares consecutivos. Por exemplo, 12=1, 22=1+3, 32=1+2+5, 42=1+3+5+7 , e
assim sucessivamente. Dado um número n, calcule seu quadrado usando a soma
de ímpares em vez de produto.

#include <stdio.h>
int main (void){
int num =0;
int an =0;
int quad =0;
printf("Digite um numero: ");
scanf("%d", &num);
if(num == 0){
printf("Você digitou 0! \n ");
} else if(num > 0){
an = 1 + (num -1)*2;
quad = ((1+an)*num)/2;
printf("O quadrado do %d pode ser escrito como: %d \n", num ,quad);
} else if(num < 0){
num = num*-1;
an = 1 + (num -1)*2;
quad = ((1+an)*num)/2;
printf("O quadrado do %d pode ser escrito como: %d \n", num*-1 ,quad);
}
}

10. A série de Fibonacci é 1,1,2,3,5,8,13,21,34,55,... Os dois primeiros termos são


iguais a 1 e, a partir do terceiro, o termo é dado pela soma dos dois termos
anteriores. Dado um número n>=3, exiba o n-ésimo termo de uma série de
Fibonacci.

int
main ()
{
int atual = 1;
int proximo = 1;
int at;
int aux = 0;
printf
("Digite até onde se deseja a sequencia de fibonacci: ");
scanf ("%d",&at);
for (int i = at; i > 0; i--)
{
aux = proximo + atual;
atual = proximo;
proximo = aux;
}
printf ("O N'esnimo termo de fibonacci é: %d \n", proximo);

11. Uma empresa determinou um reajuste salarial de 5% a todos os seus


funcionários. Além disto, concedeu um abono de R$100,00 para aqueles que
recebem até R$850,00. Dado o valor do salário de um funcionário, informar para
qual valor ele será reajustado.
int main()
{
float sal;
printf("Digite o Valor do Salário do Funcionário: ");
scanf("%f", &sal);

if(sal <= 850){


sal = sal + (100 + (sal*0.05));
}
else
sal = sal + (sal*0.05);

printf("O valor do Salário bonificado é: %.2f", sal);


}

12. Numa faculdade, os alunos com média pelo menos 5,0 são aprovados. Aqueles
com média inferior a 3,0 são reprovados, e os demais ficam para recuperação. A
partir das duas notas semestrais de um aluno, informe sua situação: aprovado,
reprovado ou em recuperação.

include <stdio.h>
#include <cc50.h>
int main(void){
printf("Digite a primeira nota: ");
int num = GetInt();
printf("Digite a segunda nota: ");
int nd = GetInt();
if((num+nd)/(float)2 >= 5)
printf("Aluno aprovado! \n");
else if ((num+nd)/(float)2 >= 3)
printf("Aluno de recuperacao! \n");
else
printf("Aluno reprovado!\n");
2ª. Lista de Exercícios - ICC

1. Escreva um programa que imprima o quadrado de todos os inteiros de 1 a 20.


Não utilize a função pow() da biblioteca de matemática do C.
R:
#include <stdio.h>
int main (void){
for (int i = 1; i <= 20; i++){
int num = i;
printf("O quadrado do numero %d é: %d \n",num, num*num);
}

#include <cc50.h>
#include <stdio.h>
int main (void){

printf("Digite o numero que se quer potenciar:");


int acumulador = 1;
int a = GetInt();
printf("Digite a potencia a ser elevado: ");
int i = GetInt();
for (i; i > 0; i--){
acumulador = acumulador*a;
}
printf("O numero %d elevado a %d é: %d \n",a,c,acumulador);

2. Escreva um programa para testar se a entrada proposta por um usuário é um


número par ou um número ímpar. A saída deve ser escrita no terminal como
“Esse número é par” ou “Esse número é impar”.

#include <stdio.h>
#include <cc50.h>
int main (void){
printf("Ola! Digite um número que vou dizer se ele é par ou ímpar! ");
int n = GetInt();
if(n%2 ==0){
printf("%d e par! \n", n);
}else
printf("%d e impar \n", n);
}

3. Escreva um programa que pede dois valores inteiros ao usuário. Teste se o


primeiro valor digitado é divisível pelo segundo e escreva na tela uma
mensagem apropriada. Considere a verificação da divisão por zero, e apresente
uma mensagem apropriada.
#include <stdio.h>
int
main ()
{
int a;
int b;
printf ("Digite dois valores inteiros, por favor!");
scanf("%d %d", &a, &b);
if(b == 0){
printf("O resultado da divisão de a/b não pode ser feito, uma vez que b: %d",
b);
}else if(a%b == 0){
printf("Opa! %d é divisivel por %d e o resultado é %d \n", a, b, a/b);
} else
printf("Pultz, %d dividido por %d não resulta em um valor inteiro, a divisao
resultara em: %d e o resto: %d ", a, b, a/b, a%b);

4. Números primos podem ser gerados por um algoritmo conhecido como “Crivo
de Eratóstenes”. Pesquise sobre esse algoritmo e o utilize na construção de um
programa que gere todos os números primos até 150.

5. Escreva um programa que calcula a média e o desvio padrão de um array que


contém 15 float numbers.

#include <stdio.h>
#include <math.h>
int
main ()
{
float vet[15];
float a = 0;
float soma = 0;
float media = 0;
float desvio[15];
float somades = 0;
float mediades = 0;
float dp = 0;
for (int i = 0; i <= 14; i++) //Zerando o vetor
vet[i] = 0;
for (int i = 0; i <= 14; i++)
{
printf ("Digite um Float Number: ");
scanf ("%f", &a);
vet[i] = a;
}
//media:
for (int i = 0; i <= 14; i++)
{
soma += vet[i];
}

media = soma / 15;


printf ("Media dos valores: %f \n", media);

//desvio/variancia:
for (int i = 0; i <= 14; i++)
{
desvio[i] = (vet[i] - media) * (vet[i] - media);
}

for (int i = 0; i <= 14; i++)


{
somades += desvio[i];
}
mediades = somades / 15;
dp = sqrt(mediades);

printf ("Desvio padrao = %f \n ", dp);


}

6. Escreva um programa que peça 10 inteiros ao usuário, armazene esses valores


em um array e utilize uma função min que você criará para encontrar o menor
desses valores.
#include <stdio.h>
int min(int* valores);
int
main ()
{
int minimo;
int vet[10];
for(int i = 0; i < 10; i++){
printf("Digite o #%d de #10 inteiros: ", i+1);
scanf("%d", &vet[i]);
}
minimo = min(vet);
printf("Menor Valor: %d \n", minimo);
}

int min(int* valores){


int* MenorValor = &valores[0];
for(int j = 1; j < 10; j++){
if(*MenorValor > valores[j])
*MenorValor = valores[j];

}
return *MenorValor;
}

7. Escreva um programa para transpor uma matriz de entrada 2x3.

#include <stdio.h>

int main()

int matriz[2][3];

for(int i=0; i < 2; i++){

for(int j = 0; j < 3; j++){

printf("Digite o elemento da posição #%d e #%d:", i+1, j+1);

scanf("%d", &matriz[i][j]);

//matriz[i][j] = GetInt();

}
}

for(int j=0; j < 3; j++){

for(int i = 0; i < 2; i++){

printf("%d ", matriz[i][j]);

printf("\n");

3ª. Lista de Exercícios – ICC

1. Faça um programa que solicite um número inteiro de até 4 dígitos ao usuário e inverta
a ordem de seus algarismos. Por exemplo, uma execução do programa é:

Digite um número de 4 dígitos: 5382


Seu número invertido é 2835

#include <stdio.h>

int
main ()
{
int n, inv = 0;

printf ("Digite um numero inteiro de ate 4 digitos: ");


scanf ("%d", &n);
printf("Invertido:\n ");
if(n > 1){
do{
inv = n%10;
printf("%d", inv);
n/=10;
} while(n>0);
printf("\n");
} else if (n < 0){
n *= -1;
printf("-");
do{
inv = n%10;
printf("%d", inv);
n/=10;
} while(n>0);
}
}

2. Desenvolva um programa que leia do terminal três valores inteiros positivos. Eles
corresponderão a comprimentos de segmentos de retas. Verifique se eles formam um
triângulo e em caso afirmativo classifique o triângulo. A saída do programa deve
imprimir em letra minúscula:

‘n’ se não for possível formar um triângulo;


‘a’ se o triângulo formado for acutângulo;
‘r’ se o triângulo formando for retângulo;
‘o’ se o triângulo formado for obtusângulo.

#include <stdio.h>

int
main ()
{
int vet[3];
int numenor, numaior, numeio;

for (int i = 0; i < 3; i++)


{
printf ("Digite a medida do %d lado: ", i + 1);
scanf ("%d", &vet[i]);
}
//primeiro: soma dos dois menores lados deve ser maior que o maior lado.
numenor = vet[0];
numaior = vet[0];
numeio = vet[0];
//Pegando menor numero
for (int b = 1; b < 3; b++)
{
if (vet[b] < numenor)
{
numenor = vet[b];
}
}
printf ("Menor Lado: %d \n", numenor);
//Pegando maior numero
for (int d = 1; d < 3; d++)
{
if (vet[d] > numaior)
{
numaior = vet[d];
}
}
printf ("Maior Lado: %d \n", numaior);

//Encontrando numero do meio:


for (int c = 1; c < 3; c++)
{
if (numenor < vet[c] && vet[c] < numaior)
{
numeio = vet[c];
}
}
printf ("Lado do meio : %d \n", numeio);

if(numeio+numenor >= numaior){


if(numaior == numenor && numaior == numeio){
printf("a\n");
}else if(numaior*numaior == numenor*numenor + numeio*numeio){
printf("r\n");
}else
printf("o\n");

} else printf("n");

}
3. Atualmente os carros são bicombustíveis, ou seja, é possível abastecer com gasolina
ou etanol. No entanto, o desempenho dos carros é diferente em termos de distância
por litro que se consegue percorrer utilizando um ou outro combustível. Construa um
programa que, dados o preço do litro de etanol, o preço do litro de gasolina e os
quilômetros por litro que um carro bicombustível realiza com cada um desses
combustíveis, determine se é mais vantajoso abastecer com etano ou gasolina. No
caso de empate a preferência é por gasolina, pois é mais fácil para ligar o carro de
manhã.

Entrada: uma única linha contendo quatro números reais com precisão de duas casas
decimais, PE, PG, RE, RG, representado respectivamente, o preço do etanol, o preço da
gasolina, o rendimento (Km/l) do carro utilizando etanol e o rendimento (Km/l) do
carro utilizando gasolina.

Saída: deve ser composta por uma única linha contendo o caractere “E” se é mais
econômico abastecer com etanol ou o caractere ‘G’ se é mais econômico com gasolina
(ou o caso de empate como colocado anteriormente).
#include <stdio.h>
#include <cc50.h>

int
main()
{
float preço_etanol, preço_gasolina, rendimento_etanol, rendimento_gasolina;
float custo_km_etanol, custo_km_gasolina;

printf("Me diga qual é o preço da gasolina, preço do etanol, rendimento da gasolina


e rendimento do etanol. \n\n");

printf("Digite o preço do litro de etanol: ");


//scanf("%f", &preço_etanol);
preço_etanol = GetFloat();

printf("Digite o preço do litro de gasolina: ");


//scanf("%f", &preço_gasolina);
preço_gasolina = GetFloat();

printf("Digite o rendimento em Km/l com etanol: ");


///scanf("%f", &rendimento_etanol);
rendimento_etanol = GetFloat();

printf("Digite o rendimento em Km/l com gasolina: ");


//scanf("%f", &rendimento_gasolina);
rendimento_gasolina = GetFloat();

custo_km_etanol = preço_etanol / rendimento_etanol;


custo_km_gasolina = preço_gasolina / rendimento_gasolina;

if (custo_km_etanol < custo_km_gasolina)


{
printf("\n\nÉ mais vantajoso abastecer com etanol.\n");
}
else if (custo_km_gasolina < custo_km_etanol)
{
printf("\n\nÉ mais vantajoso abastecer com gasolina.\n");
}
else
{
printf("\n\nÉ mais vantajoso abastecer com gasolina (empate).\n");
}
}

4. Faça um programa para calcular o Imposto de Renda de um usuário a partir do salário


base que ele informará. A tabela da Receita Federal para o ano de 2021 está
reproduzida a seguir:

Salário base (R$) Alíquota

Até 1.903,98 Isento

1903,99 a 2.826,65 7,5%

2.826,66 a 3.751,05 15%

3.751,06 a 4.664,68 22,5%

Acima de 4.664,68 27,5%

Os percentuais de alíquota são aplicados a cada faixa salarial. O valor total pago é o
acumulado a ser pago nas diferentes faixas.
O programa deve imprimir na tela uma única linha, contendo o valor do Imposto de
Renda a ser recolhido.
int
main ()
{
float sal;
printf ("Digite seu Salario:");
scanf ("%f", &sal);
if (sal <= 1903.98)
{
printf ("%.2f", sal);
}
else if (1903.99 <= sal && sal < 2826.66)
{
sal = sal - (sal * 0.075);

printf ("%.2f", sal);


}
else if (2826.66 <= sal && sal < 3751.06)
{
sal = sal - (sal * 0.15);
printf ("%.2f", sal);
}
else if (3751.06 <= sal && sal < 4664.68)
{
sal = sal - (sal * 0.225);
printf ("%.2f", sal);
}
else if (sal >= 4664.68)
{
sal = sal - (sal * 0.275);
printf ("%.2f", sal);
}
}

sal = sal - (sal*0.275) - (4664.68*0.225) - (3751.05*0.15) - (2826.65*0.075);


sal = sal - (sal*0.225) - (3751.05*0.15) - (2826.65*0.075);
sal = sal - (sal*0.15) - (sal*0.075);
sal = sal - (sal*0.075);
5. Escreva um programa que calcule o ângulo entre dois vetores no espaço
bidimensional. O usuário lhe informará as coordenadas de cada um dos vetores.

#include <stdio.h>

#include <math.h>

#define PI 3.141592

int

main()

float x1, y1, x2, y2;

float produto_escalar, produto_modulo, angulo;

printf("Digite as coordenadas do primeiro vetor:\n");

printf("Componente x: ");

scanf("%f", &x1);

printf("Componente y: ");

scanf("%f", &y1);

printf("Digite as coordenadas do segundo vetor:\n");

printf("Componente x: ");

scanf("%f", &x2);

printf("Componente y: ");

scanf("%f", &y2);

produto_escalar = (x1 * x2) + (y1 * y2);

produto_modulo = sqrt((x1 * x1 + y1 * y1) * (x2 * x2 + y2 * y2));


angulo = acos(produto_escalar / produto_modulo);

// Convertendo radianos para graus:

angulo = angulo * 180 / PI;

printf("O ângulo entre os vetores é: %.2f graus\n", angulo);

return 0;

Você também pode gostar