Baixe o app para aproveitar ainda mais
Prévia do material em texto
Temos a declaração de uma variável e um ponteiro. O algoritmo vai ler um número digitado pelo usuário e imprimir na tela o endereço da variável de duas formas: Chamando a própria variável. Chamando o ponteiro. #include <stdio.h> #include <stdlib.h> int main() { int x, * y; printf("Digite um numero inteiro: "); scanf_s("%d", &x); y = &x; printf("O endereço da variavel x eh: %p\n", &x); printf("O endereço da variavel x eh: %p\n", y); system("pause"); return 0; } No exercicio 3 da aula pratica 1 No algoritmo a seguir, temos a declaração de uma struct com dois membros. O algoritmo vai ler a matricula e o salário do funcionário, armazenar na struct e, depois, imprimir na tela do usuário os dados armazenados. #include <stdio.h> #include <stdlib.h> struct Funcionario { int matricula; float salario; }; struct Funcionario tecnico; int main() { printf("Digite a matricula do Funcionario: "); scanf_s("%d", &tecnico.matricula); printf("\nDigite o salario do Funcionario: "); scanf_s("%f", &tecnico.salario); printf("\n\nDADOS DO FUNCIONARIO\n"); printf("\nMatricula do Funcionario: %d\n", tecnico.matricula); printf("\nSalario do Funcionario: %.2f\n\n", tecnico.salario); system("pause"); return 0; } Considere um algoritmo que recebera dois dados numéricos reais (duas notas). O algoritmo vai calcular e imprimir a média das duas notas e imprimir. Sabendo que o tipo da variável será “prova”, substitui-se o float pelo typedef. Como redefinir tipos de variáveis. #include <stdio.h> #include <stdlib.h> typedef int RU; typedef float prova; struct notasAluno { RU matricula; prova nota1; prova nota2; }; typedef struct notasAluno n_aluno; int main() { n_aluno aluno; prova media = 0; printf("Digite a matricula do aluno: "); scanf_s("%d", &aluno.matricula); printf("Digite a primeira nota do aluno: "); scanf_s("%f", &aluno.nota1); printf("Digite a segunda nota do aluno: "); scanf_s("%f", &aluno.nota2); media = (aluno.nota1 + aluno.nota2) / 2; printf("\nMatricula do aluno: %d\n", aluno.matricula); printf("\nA media das duas notas: %.2f\n", media); system("pause"); return 0; } Considere um algoritmo que vai instanciar um 4 posições na memória usando a função calloc() #include <stdio.h> #include <stdlib.h> #define QTE 4 #define SAIR exit(1) int main() { int* px; px = (int*)calloc(QTE, sizeof(int)); if (px == NULL) { printf("ERRO! Não tem memória suficiente."); SAIR; // finaliza o programa. } int i; printf("Digite os dados para o vetor de 4 posiçoes\n\n"); for (i = 0; i<4; i++) { printf("Digite px [%d]: ", i); scanf_s("%d", &px[i]); } printf("\nMostrar os dados do vetor \n\n"); for (i = 0; i < 4; i++) { printf("\nPosiçao px [%d]=%d\n", i, px[i]); } printf("\n"); free(px); // libera memória system("pause"); return 0; } Considere um algoritmo que vai imprimir na tela do usuário os números de 1 a 20 (dias vezes), a primeira usando o laço de repetição for (função interativa) e a segunda usando uma função recursiva. #include <stdio.h> #include <stdlib.h> int imprimeN(int inicio, int sfim); int main() { int comeco, sfim, i; comeco = 1; sfim = 21; printf("FUNCAO RECURSIVA\n"); imprimeN(comeco, sfim); // chamada da funçao recursiva printf("\n\n"); printf("FUNCAO INTEREATIVA FOR\n"); for (i = comeco; i < sfim; i++) { // impressao com for printf("%d ", i); // imprime os numeros } printf("\n\n"); printf("FUNCAO ITERATIVA WHILE\n"); while (comeco < sfim) { printf("%d ", comeco); //imprime os numeros comeco++; } printf("\n\n"); system("pause"); return 0; } int imprimeN(int comeco, int sfim) { // funcao recursiva if (comeco < sfim) { printf("%d ", comeco); // imprime os numeros imprimeN(comeco + 1, sfim); // chamada recursiva } } Considere um algoritmo que considera dois números e imprime o maior. Só que a expressão que faz comparação será declarada na função Macro #define #include <stdio.h> #include <stdlib.h> #define maior(x,y) x>y?x:y // x é maior que y? se sim carrega x, se não, carrega y int main() { int a = 32; int b = 28; int c = maior(a, b); // vai carregar o resultado da expressão printf("Maior valor = %d\n\n", c); system("pause"); return 0; } Considerar um algoritmo que vai somar 5 números de um vetor com uma função recursiva. #include <stdio.h> #include <stdlib.h> #define NVETOR 5 // DECLARAÇÃO DE CONSTANTE int somaVetor(int vetor[], int tamanho); int main() { int vetor[NVETOR] = { 22, 5, 11, 3, 6 }; int i, soma = 0; int resultado = somaVetor(vetor, NVETOR); printf("IMPRESSAO COM A FUNCAO RECURSIVA\n"); printf("Soma = %i\n", resultado); printf("\n"); for (i = 0; i<NVETOR; i++) { soma = soma + vetor[i]; } printf("IMPRESSAO COM A FUNCAO ITERATIVA\n"); printf("Soma= %d\n\n", soma); system("pause"); return 0; } int somaVetor(int vetor[], int tamanho) { if (tamanho == 1) return vetor[0]; else return vetor[tamanho - 1] + somaVetor(vetor, tamanho - 1); } Considere um algorito que vai abrir um arquivo .txt e mostrar um erro caso o mesmo não exista. Considere um algoritmo que vai capturar os caracteres digitados pelo usuário e gravá-los em um arquivo .txt usando a função fputc(). #include <stdio.h> #include <stdlib.h> int main() { FILE* arquivo; // criação do ponteiro errno_t err; // errno_t é um tipo de variavel grava o ultimo erro int numero; // 'r'apenas lê o arquivo; o'w' cria o arquivo caso não exista err = fopen_s(&arquivo, "uninter.txt", "r"); // a varaivel 'err' vai receber o 'fopen_s...'; // e o 'a' anexa o arquivo if (err == 0) { // se o erro for 0 printf("DIGITE UM NUMERO INTEIRO: "); do { // do while executa pelo menos uma vez numero = getchar(); fputc(numero, arquivo); } while (numero != '\n'); // quando digita o numero e aperta o enter pula uma linha } else { printf("ERRO!!! Arquivo Não Foi Aberto !!! \n\n"); } if (arquivo) { err == fclose(arquivo); if (err == 0) { printf("\nArquivo fechado\n\n"); } else { printf("Arquivo não foi FECHADO!\n\n"); } } system("pause"); return 0; } fputc(numero, arquivo); } while (numero != '\n'); // quando digita o numero e aperta o enter pula uma linha } else { printf("ERRO!!! Arquivo Não Foi Aberto !!! \n\n"); } if (arquivo) { err == fclose(arquivo); if (err == 0) { printf("\nArquivo fechado\n\n"); } else { printf("Arquivo não foi FECHADO!\n\n"); } } system("pause"); return 0; } Considere um algoritmo para fazer a leitura do texto de um arquivo .txt usando a função fgetc(). #include <stdio.h> #include <stdlib.h> int main(void) // 'void'não precisa colocar no final return { FILE* arquivo; // criação do ponteiro char locaMemoria[81]; int i, ch; // Abrir o arquivo para ler a linha: fopen_s(&arquivo, "uninter.txt", "r"); if (arquivo == NULL) exit(0); // Leia os primeiros 80 caracteres e coloque-os em "LocaMemoria": ch = fgetc(arquivo); /* feof verifica o indicador de fim de arquivo (EOF) do fluxo e retorna um valor diferente de zero se este indicador estiver sentado. */ for (i = 0; (i < 80) && (feof(arquivo) == 0); i++) { locaMemoria[i] = (char)ch; ch = fgetc(arquivo); } // Adicionar NULL ao final da String locaMemoria[i] = '\0'; printf("%s\n\n\n", locaMemoria); fclose(arquivo); system("pause"); } Crie um algoritmo que coloque os dias da semana em forma de identificadores com a estrutura ENUM. #include <stdio.h> #include <stdlib.h> enum semana {domingo, segunda, terca, quarta, quinta, sexta, sabado}; int main() { enum semana a, b, c, d, e, f, h; a = domingo; b = segunda; c = terca; d = quarta; e = quinta; f = sexta; h = sabado; printf("DIAS DA SEMANA\n\n"); printf("Identificador de domingo = %d\n", a); printf("Identificador de segunda = %d\n", b); printf("Identificador de terca = %d\n", c); printf("Identificador de quarta = %d\n", d); printf("Identificadorde quinta = %d\n", e); printf("Identificador de sexta = %d\n", f); printf("Identificador de sabado = %d\n", h); system("pause"); return 0; } Crie um algoritmo que coloque três sequencias de escape em forma de identificadores com a estrutura ENUM. #include <stdio.h> #include <stdlib.h> enum escapes { nova_linha = '\n', tabulacao = '\t', backspace = '\b' }; int main() { enum escapes esc = nova_linha; printf("testando nova linha %c%c%c de %c%c%c", esc, esc, esc, esc, esc, esc); esc = tabulacao; printf("Testando%ctabulacao%cTestando%ctabulacao\n\n\n", esc, esc, esc); system("pause"); return 0; } Crie uma struct de ponteiros com três membros e imprima o endereço das variáveis com o ponteiro e com o operador &. #include <stdio.h> #include <stdlib.h> int main() { struct calendario { int* dia; int* mes; int* ano; }; struct calendario atual; int diaT = 24; int mesT = 12; int anoT = 2018; atual.dia = &diaT; atual.mes = &mesT; atual.ano = &anoT; printf("Endereco da variavel diaT = %p\n", &diaT); printf("Endereco da variavel diasT com ponteiro = %p\n\n\n", atual.dia); printf("Endereco da variavel mesT = %p\n", &mesT); printf("Endereco da variavel mesT com ponteiro = %p\n\n\n", atual.mes); printf("Endereco da variavel anoT = %p\n", &anoT); printf("Endereco da variavel anoT com ponteiro = %p\n\n\n", atual.ano); // imprimir o conteudo da variavel usando o ponteiro printf("O dia, mes e ano\n"); printf("Dia: %d\n", *atual.dia); printf("Dia: %d\n", *atual.mes); printf("Dia: %d\n\n", *atual.ano); system("pause"); return 0; } Crie um algoritmo com ponteiro e uma struct com três membros e imprima as instancias da struct com ponteiro #include <stdio.h> #include <stdlib.h> int main() { struct aulaPratica { int x; int y; int z; }; struct aulaPratica numero, * p_numero; p_numero = № /* (*p_numero).x = 890; (*p_numero).y = 4578; (*p_numero).z = 45; */ p_numero->x = 777; p_numero->y = 555; p_numero->z = 888; printf("Dado de x = %i\n", numero.x); printf("Dado de y = %i\n", numero.y); printf("Dado de z = %i\n", numero.z); system("pause"); return 0; }
Compartilhar