Você está na página 1de 8

Universidade federal de Catalão

Nome: Gabriel Ferreira Nunes dos Santos

Matéria: APCII e labII

Prof: Luanna

Lista de Exercícios 2 de APC2 e LAB2

1 - Dado o Programa, completar as Tabelas 1 e 2:

Tabela 1

Nome i j P_1 P_2 P_3 P_4


Variável
Conteúdo 4 5 8 11 12 13
Endereço 1000 1007 1030 1053 1071 1079

Tabela 2

Expressão i *P_2 &J &P_2 **P_3 **P_4 ***P_4 *P_1 *&P_2 *P_4
Resultado 4 12 6 18 14 16 17 9 19 15

2 - Crie e teste a função void InverteS(char *s) que retorna uma string invertida, utilizando
ponteiros.

– Por exemplo, se s = “Palindromo”,

– Após a chamada a função InverteS(), s = “omordnilaP”.

R=

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

char* reverse_1(char string[])

int comprimento = strlen(string);


char* reverse_string = malloc((comprimento + 1) * sizeof(char));

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

reverse_string[i] = string[comprimento - i - 1];

reverse_string[comprimento] = '\0';

return reverse_string;

void reverse_2(char string[], char reverse_string[])

int comprimento = strlen(string);

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

reverse_string[i] = string[comprimento - i - 1];

reverse_string[comprimento] = '\0';

int main()

char s[50];

gets(s);

char* rs1 = reverse_1(s);

printf("reverse_1: %s\n", rs1);

free(rs1);

return 0;

}
3- Faça um programa que dado 2 variáveis inteiras a=2 e b=3, use a função void troca(int *a1,
int *b1), que deve fazer a inversão dos valores de a e b. Após a chamada da função, imprimir
os valores de a e b. A função troca também deve ser implementada e deve ter tipo de retorno
void. Todas as manipulações deve se dar usando ponteiros.

R=

#include <stdio.h>

#include <assert.h>

void troca(float *a, float *b){

float c;

c = *a;

*a = *b;

*b = c;

int main(){

float num1 = 50, num2 = 101;

printf("Num1: %.2f\tNum2: %.2f\n", num1, num2);

troca(&num1, &num2);

printf("Num1: %.2f\tNum2: %.2f\n", num1, num2);

return 0;

4 - Fazer uma função que recebe 3 parâmetros: um vetor de inteiros, um número inteiro n
enviado com passagem por valor e outro número x enviado como passagem por referência.
Em uma função verifica(), envie todos os elementos utilizando ponteiros para suas
manipulações e veja se os números n e x estão no vetor e imprima se estiver.

R=
#include <stdio.h>

#include <locale.h>

void verifica (int *vet,int n,int *x){

int i;

for (i=0;i<5;i++){

if (vet[i]==n)

printf("O valor de n=%d se encontra em %d do vetor.\n",n,i);

if (vet[i]==*x)

printf("O valor de x=%d se encontra em %d do vetor.\n",*x,i);

int main(){

setlocale(LC_ALL,"Portuguese");

int vet[5],n,x,i;

printf("Escreva um valor para o vetor: ");

for (i=0;i<5;i++)

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

printf("\nEscreva os valores para x e n: ");

scanf("%d %d",&x, &n);

verifica(vet,n,&x);

system ("pause");

}
5- Faça um programa que tendo como entrada dois pontos quaisquer do plano P(x1,y1) e
Q(x2,y2), utilizando ponteiros para passagem dos valores, imprima a distância entre eles.
Fórmula da distância

R=

#include <stdio.h>

#include <stdlib.h>

#include <locale.h>

#include <math.h>

int main(){

float x1,x2,y1,y2,r,r1;

printf("Escreva o valor de x1: ");

scanf("%f", &x1);

printf("Escreva o valor de x2: ");

scanf("%f", &x2);

printf("Escreva o valor de y1: ");

scanf("%f", &y1);

printf("Escreva o valor de y2: ");

scanf("%f", &y2);

r1= (x2-x1)*(x2-x1)+(y2-y1)*(y2-y1);

printf("A distancia dos dois pontos é de: %2.f\n", r1);

system("PAUSE");

return 0;

}
6- Construa um programa que calcule a quantidade de latas de tinta necessárias e o custo para
pintar tanques cilíndricos de combustível. Use ponteiros para envio dos dados a uma função
calcula(). Onde são fornecidos a altura e o raio desse cilindro

R=

#include<math.h>

#include<stdio.h>

#include<string.h>

#define pi 3.1415

int main(){

float precolata, alt, a_lateral, a_base, a_total, custo;

int raio, quantidadelatas;

printf("Escreva o preço da lata: ");

scanf("%f",&precolata);

printf("Escreva o raio da lata: ");

scanf("%d",&raio);

printf("Escreva a altura da lata: ");

scanf("%f",&alt);

a_base = pi * pow(raio,2);

a_lateral = 2 * pi * raio * alt;

a_total = (2 * a_base) + a_lateral;

quantidadelatas = a_total / 15;

custo = quantidadelatas * precolata;

printf("A quantidade de latas necessarias sao de: %d\n",quantidadelatas);

printf("O custo das latas ficou em = %.2f\n",custo);


return 0;

7- Escreva um programa que lê três números inteiros do teclado e, utilizando uma função e
acessando os números no vetor por meio de ponteiros, ordene os três números e imprima-os
em ordem crescente

R=

#include <stdio.h>

main(){

int num[3],b,c,a,maior_num=0,menor_num=0,medio_num=0;

printf("Escreva 3 numeros:\n");

scanf("%d %d %d",&num[0],&num[1],&num[2]);

for(a=0;a<3;a++){

if(num[a]>num[a+1]){

num[a]=maior_num;

for(b=0;b<3;b++){

if(num[b]<num[b+1]){

num[b]=menor_num;

for(c=0;c<3;c++){

if(num[c]<maior_num && num[c]>menor_num){


num[c]=medio_num;

printf("%d %d %d",menor_num,medio_num,maior_num);

return 0;

Você também pode gostar