Baixe o app para aproveitar ainda mais
Prévia do material em texto
1. EXERCÍCIO 1 ENUNCIADO: Escreva um algoritmo em linguagem C com as seguintes instruções: 1. Declare três variáveis (inteiro, real e char); 2. Declare três ponteiros; 3. Associe as variáveis aos ponteiros; 4. Modifique os valores de cada variável indiretamente usando os ponteiros associados. Para armazenar os valores nas variáveis, armazene na variável char a primeira letra do seu nome, na variável inteira os dois últimos dígitos do seu RU e na variável real os 4 últimos dígitos do seu RU, sendo os 2 últimos os valores com virgula; 5. Imprima na tela os valores das variáveis antes e após a modificação. Solução: #include<stdio.h> #include<stdlib.h> int main() { //Declare três variáveis (inteiro, real e char); Declare três ponteiros; int valor, *ponteiroValor; char texto, *ponteiroTexto; float real, *ponteiroReal; valor = 2; texto = 'b'; real = 10.2; //Associe as variáveis aos ponteiros; ponteiroValor = &valor; ponteiroTexto = &texto; ponteiroReal = ℜ //Modifique os valores de cada variável indiretamente usando os ponteiros associados. *ponteiroValor = 54; *ponteiroTexto = 'L'; *ponteiroReal = 42.54; //Imprima na tela os valores das variáveis antes e após a modificação printf("%d \n", valor); printf("%c \n", texto); printf("%2.2f \n", real); system("pause"); return 0; } 1. EXERCÍCIO 2 ENUNCIADO: Escreva um algoritmo em LINGUAGEM C que armazene na memória o seu RU e o valor 1234567, ambos digitados pelo usuário na tela. Em seguida, imprima na tela ambos RU usando ponteiros. O algoritmo também vai ter que comparar os dois RU usando ponteiros e imprimir na tela qual é o maior. Solução: #include<stdio.h> #include<stdlib.h> int main() { int ru1, ru2; int *ponteiroRU1, *ponteiroRU2; printf("digite seu RU:\n"); scanf_s("%d", &ru1);//armazene na memória ponteiroRU1 = &ru1; //recebe o endereço de ru printf("digite o segundo RU:\n"); scanf_s("%d", &ru2);//armazene na memória ponteiroRU2 = &ru2; /*imprima na tela ambos RU usando ponteiros O algoritmo também vai ter que comparar os dois RU usando ponteiros e imprimir na tela qual é o maior */ if (*ponteiroRU1 > * ponteiroRU2) { printf("RU 1: %d e maior que RU 2: %d\n", *ponteiroRU1, *ponteiroRU2); } else { printf("RU 2: %d e maior que RU 1: %d\n", *ponteiroRU2, *ponteiroRU1); } system("pause"); return 0; } 1. EXERCÍCIO 3 ENUNCIADO: Faça um algoritmo em linguagem C com as seguintes funcionalidades: · Receba um registro, com dois campos, como dados de entrada. · O primeiro campo é um vetor que vai armazenar o nome do aluno. · O segundo campo é uma variável do tipo inteiro que vai armazenar o RU do aluno. · Imprime na tela os dados armazenados na estrutura. Solução: #include<stdio.h> #include<stdlib.h> int main() { //Declare variáveis int ru; char nome[100]; printf("Digite seu nome:\n"); gets_s(nome); //armazena o primeiro campo é um vetor que vai armazenar o nome do aluno printf("Digite seu RU:\n"); scanf_s("%d", &ru);//armazena o segundo campo é uma variável do tipo inteiro que vai armazenar o RU do aluno //Imprime na tela os dados armazenados na estrutura printf("\nNome: %s \n", nome); printf("RU: %d \n", ru); system("pause"); return 0; } 1. EXERCÍCIO 4 ENUNCIADO: Replique o exercício 3. Porém, agora, declare um ponteiro para a estrutura de dados heterogênea. No momento da leitura dos dados e da impressão na tela, use o ponteiro para buscar o conteúdo dos campos. Imprima na tela também o seu RU na tela. Solução: #include<stdio.h> #include<stdlib.h> int main() { struct aluno // struct aluno { //componentes int ru; char nome[100]; }; struct aluno agora, * depois; // variável “agora”, juntamente com o ponteiro “*depois”; //é atribuído o endereço de endereço de “agora” para o ponteiro “depois”; depois = &agora; //os componentes da struct são instanciados com o uso de ponteiros; printf("Digite seu nome:\n"); gets_s(depois->nome); printf("Digite seu RU:\n"); scanf_s("%d", &depois->ru); //Imprime na tela os dados armazenados na estrutura printf("\nNome: %s \n", depois->nome); printf("RU: %d \n", depois->ru); system("pause"); return 0; } 1. EXERCÍCIO 5 ENUNCIADO: Faça um algoritmo em linguagem C que contenha dois números inteiros digitados na tela pelo usuário: a. O primeiro número marca um início; b. O segundo número marca um fim; O algoritmo vai contar quantos números existem entre o início (primeira entrada) e o fim (segunda entrada). A impressão na tela do usuário deve ser realizada de duas formas: a) Iterativa; b) Recursiva; Ao colocar no seu relatório uma imagem do seu código funcionando, coloque ele rodando utilizando como valor de inicio os 2 últimos valores do seu RU e valor final o número 99. Solução: #include<stdio.h> #include<stdlib.h> int recursao(int ini, int fin, int contador); int main() { int inicio, fim, i, contador = 1; printf("Digite valor de inicio:\n"); //O primeiro número marca um início; scanf_s("%d", &inicio); printf("Digite valor de fim:\n"); //O segundo número marca um fim; scanf_s("%d", &fim); printf("\nFuncao itaretiva:\n"); //Iterativa for (i = inicio; i < fim; i++) { //contador de posições contador++; } printf("total: %d posicoes\n", contador); printf("\nFuncao recursiva:\n"); recursao(inicio, fim, 1); printf("\n"); system("pause"); return 0; } int recursao(int inicio, int fim, int contador) { if (inicio < fim) { //contador de posições contador++; if (inicio == fim-1) { printf("total: %d posicoes\n", contador); } return recursao(inicio + 1, fim, contador); } } 1
Compartilhar