A maior rede de estudos do Brasil

Grátis
59 pág.
livro Programacao C - Respostas+dos+exercícios+propostos+C

Pré-visualização | Página 3 de 8

positivos*/
#include <stdio.h>
main()
{
int x, y, a, b,  Mmc;
printf("Digite os dois numeros \n");
scanf("%d %d", &x, &y);
a = x;
b = y;
if (x < y)
{
a = y;
b = x;
}
Mmc = a;
while (Mmc % b != 0)
Mmc = Mmc + a;
printf("mmc(%d, %d) = %d \n", x, y, Mmc);
}
5. /*Programa para determinar os numeros  perfeitos menores que um inteiro dado*/
#include <stdio.h>
main()
{
int Num, i, Soma, j;
Num = 1;
while (Num != ­1)
{
printf("Digite o  numero (­1 p/ encerrar) \n");
scanf("%d", &Num);
printf("Numeros perfeitos menores que %d: \n", Num);
for (i = 2; i < Num; i = i + 1)
{
Soma = i + 1;
for (j = 2; j <= i/2; j++)
if (i % j == 0)
Soma = Soma + j;
if (Soma == 2 * i)
printf("%d \n", i);
}
}
}
6. /*Programa para listar todos so numeros xyzt tais (xy + zt)*(xy + zt) = xyzt*/
#include <stdio.h>
main()
{
int Mil, Cen, i;
printf("Numeros xyzt tais (xy + zt)*(xy + zt) = xyzt");
for (i = 1000; i < 10000; i++)
{
Cen = i % 100;
Mil = i/100;
if ((Cen + Mil)*(Cen + Mil) == i)
printf("%d \n", i);
}
}
7. /*Programa para listar todos os numeros com dois algarismos cujo produto nao se altera 
se os algarismos sao invertidos*/
#include <stdio.h>
main()
{
int InvertI, InvertJ, i, j;
printf("Numeros com dois algarismos cujo produto nao se altera os algarismos sao 
invertidos");
for (i = 10; i < 100; i++)
{
InvertI = (i % 10)*10 + (i/10);
for (j = 10; j < 100; j++)
{
InvertJ = (j % 10)*10 + (j/10);
if (i*j == InvertI*InvertJ)
printf("%d*%d = %d*%d = %d \n", i, j, InvertI, InvertJ, i*j);
}
}
}
8. /*Programa para determinar o numero  de algarismos de um inteiro positivo*/
#include <stdio.h>
#include <math.h>
main()
{
int Num, NumAlg, n;
Num = 1;
while (Num != ­1)
{
printf("Digite o  numero (­1 p/ encerrar) \n");
scanf("%d", &Num);
NumAlg = 1;
while (pow10(NumAlg) < Num)
NumAlg = NumAlg + 1;
printf("%d possui %d algarismo(s) \n", Num, NumAlg);
}
}
9. /*Programa para verificar se um inteiro maior que 2 e' um produto de dois primos*/
#include <stdio.h>
#include <math.h>
main()
{
int Num, Fator1, Fator2, r, i;
Num = 1;
while (Num != ­1)
{
printf("Digite o  numero (­1 p/ encerrar) \n");
scanf("%d", &Num);
r = sqrt(Num);
Fator1 = 2;
while ((Num % Fator1 != 0) && (Fator1 <= r))
Fator1 = Fator1 + 1;
if (Fator1 > r)
printf("%d é primo\n", Num);
else
{
Fator2 = Num/Fator1;
r = sqrt(Fator2);
i = 2;
while ((Fator2 % i != 0) && (i <= r))
i = i + 1;
if (i <= r)
printf("%d nao e produto de dois primos \n", Num);
else
printf("%d e' produto dos primos %d e %d \n", Num, Fator1, Fator2);
}
}
}
10. /*Programa para determinar a decomposição em fatores primos de um inteiro*/
#include <stdio.h>
main()
{
int Num, i, n, Mult;
Num = 1;
while (Num != ­1)
{
printf("Digite o  numero (­1 p/ encerrar) \n");
scanf("%d", &Num);
n = Num;
printf("Decomposicao em fatores primos de %d: \n", Num);
i = 2;
while (n > 1)
{
Mult = 0;
while (n % i == 0)
{
n = n/i;
Mult = Mult + 1;
}
if (Mult > 0)
printf("%d com multiplicidade  %d  \n", i, Mult);
i = i + 1;
}
}
}
11. Ver solução na seção 5.6 do capítulo 5.
12. /* Programa que determina o n­esimo termo da sequencia de Fibbonaci*/
#include <stdio.h>
main()
{
int n, i, Ant1, Ant2, Termo;
printf("Digite n \n");
scanf("%d", &n);
Termo = 1;
Ant1 = 1;
Ant2 = 0;
i = 1;
while (i < n)
{
Termo = Ant1 + Ant2;
Ant2 = Ant1;
Ant1 = Termo;
i = i + 1;
}
printf(" O termo de ordem %d da sequencia de Fibbonaci e' %d \n",  n, Termo);
}
13. /*Programa para determinar o menor inteiro n tal que a soma dos n primeiros termos da 
serie harmonica e' maior que um real k dado*/
#include <stdio.h>
main()
{
int i;
float Soma, k;
k = 1;
while (k != ­1)
{
printf("Digite o  valor de k (­1 p/ encerrar) \n");
scanf("%f", &k);
Soma = 0;
i = 0;
while (Soma <= k)
{
i = i + 1;
Soma = Soma + 1.0/i;
}
        printf("O menor inteiro n tal que a soma dos n primeiros termos da serie harmonica e' 
maior que %.2f e' %d \n", k, i); 
}
}
14. /*Programa para determinar os pares de números amigos menores que um número 
dado*/
#include <stdio.h>
long SomaDivisoresMenores(long int n) /* Ver capítulo 5*/
{
int i, s 
s = 1;
m = n/2;
for (i = 2; i <= m; i++)
if (n % i == 0)
s = s + i;
return s;
}
main()
{
long int j, x, y;
const long m = 10000;
printf("Amigos menores que %ld \n", m);
for (j = 2; j < m; j++)
{
x = SomaDivisoresMenores(j);
if (j < x)
if (j == SomaDivisoresMenores(x))
printf("%­10ld        %­20ld\n", j, x);
}
}
15. /*Programa que gera subconjuntos com tres elementos*/
#include <stdio.h>
main()
{
int n, i, j, k;
printf("Digite o valor de n: \n");
scanf("%d", &n);
for (i = 1; i <= n ­ 2; i++)
for (j = i + 1; j <= n ­ 1; j++)
for (k = j + 1; k <= n; k++)
printf("{%d, %d, %d}\n", i, j, k);
}
Capítulo 5
1. /*Funcao para determinar o k­esimo digito de um numero*/
/*Funcao que retorna o numero de algarismos de um inteiro*/
int NumAlg(int n)
{
int i = 1;
while (pow10(i) < n)
i = i + 1;
return (i);
}
int KDigito(int n, int k)
{
int i, Potencia, Resto;
if (k <= NumAlg(n))
{
Potencia = pow10(k);
Resto = n % Potencia;
Potencia = pow10(k – 1);
return (Resto/Potencia);
}
else
return(­1);
}
2. /*Funcao iterativa para o calculo do fatorial impar*/
long int FatImpar(int n)
{
long int Fat;
int i;
if (n % 2 == 1)
{
Fat = 1;
for (i = 3; i <= n; i = i + 2)
     Fat = Fat * i;
return (Fat);
}
else
return(­1);
}
/*Funcao recursiva para o calculo do fatorial impar*/
long int FatImparRec(int n)
{
if (n % 2 == 1)
if (n == 1)
return(1);
else
return(n*FatImparRec(n ­ 2));
else
return(­1);
}
3. /*Programa para determinar o fatorial primo de um inteiro dado*/
#include <stdio.h>
#include <math.h>
/*Funcao que recebe um inteiro e verifica se ele e primo*/
int Primo(int x)
{
int j;
j = 2;
while ((x % j != 0) && (j <= sqrt(x)))
j = j + 1;
if (j <= sqrt(x))
return(0);
else
return(1);
}
main()
{
int Num, j;
long FatPrim;
printf("Digite o inteiro \n");
scanf("%d", &Num);
if (Primo(Num))
{
FatPrim = 2;
for (j = 3; j <= Num; j++)
if (Primo(j))
FatPrim = FatPrim*j;
printf("Fatorial primo de %d e igual a %d \n", Num, FatPrim);
}
else
printf("%d nao e primo \n", Num);
}
4. /*Funcao que retorna a soma dos algarismos de um inteiro dado*/
/*Funcao que retorna o numero de algarismos de um inteiro dado*/
int NumAlg(int n)
{
int i = 1;
while (pow10(i) < n)
i = i + 1;
return (i);
}
int SomaAlgarismos(int n)
{
int i, Potencia, NumAlgarismos, Soma;
NumAlgarismos = NumAlg(n);
Soma = n % 10;
for (i = 1; i < NumAlgarismos; i++)
{
n = n/10;
Soma = Soma + n%10;
}
return (Soma);
}
5. /*Função recursiva para determinar o n­esimo termo da sequencia de Fibbonaci*/
int FibbRec(int x)
{
if ((x == 1) || (x == 2))
return(1);
else
return(FibbRec(x ­ 1) + FibbRec(x ­ 2));
}
6. /*Função recursiva para gerar uma tabuada de multiplicação*/
void Tabuada(int x)
{
int y;
static a = 1, b = 1;
if (x <= 9)
{
for (y = 2; y <= 9; y++)
{
gotoxy(a, b);
printf("%d x %d = %d", x, y, x*y);
b++;
}
if (x % 5 != 0)
{
a = a + 13;
b = b ­ 8;
}
else
{
a = 1;
b = 10;
}
Tabuada(x + 1);
}
}
Capítulo 6
0. /*Função recursiva que determina a maior componente de um vetor*/ 
float MaiorDe2(float x, float y)
{
if (x > y)
return x;
else
return y;
}
float MaiorCompRec(float *v, int t)
{
if (t == 2)
return v[t ­ 1];
else
return MaiorDe2(v[t ­ 1], MaiorCompRec(v, t ­ 1));
}
1. /*Função que exibe um vetor na ordem inversa*/
void InverteVetor(int *v, int t)
{
int i;
for (i = t ­ 1; i >= 0; i­­)
printf("%d  ", v[i]);
}
2. /*Função que verifica se um vetor é palíndromo*/
int VerificaVetorPalindromo(int *v, int t)
{
int i;
i = 0;
while((v[i] == v[t ­ i ­ 1]) && (i < t/2))
i = i + 1;
if (i == t/2)
return (1);
else
return (0);
}
3. /*Função que decompõe um vetor nas componentes de ordem ímpar e de ordem par*/
void DecompVetor(int *v, int t, int *u, int *w)
{
int i;
for (i = 0; i < t; i++)
if (i % 2 == 0)
u[i/2] = v[i];
else
w[((i+1)/2) ­ 1] = v[i];
}
4. /Função que decompõe um vetor nas componentes de valor par e de valor ímpar*/
void DecompVetor(int *v, int t, int *u, int &k, int *w, int &j)
{
int i;
k = j = 0;
for (i = 0; i < t;