0% acharam este documento útil (0 voto)
52 visualizações14 páginas

Exemplos de C: Estruturas e Funções

Enviado por

davidognani863
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
52 visualizações14 páginas

Exemplos de C: Estruturas e Funções

Enviado por

davidognani863
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

1) #include <stdio.

h>

typedef struct {

int matricula;

char nome[50];

float notas[3];

} Aluno;

int main() {

Aluno alunos[5];

int i, j, maior = 0;

float media, maiorMedia = 0;

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

printf("Digite a matrícula do aluno %d: ", i + 1);

scanf("%d", &alunos[i].matricula);

printf("Digite o nome do aluno %d: ", i + 1);

scanf("%s", alunos[i].nome);

printf("Digite as 3 notas do aluno %d: ", i + 1);

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

scanf("%f", &alunos[i].notas[j]);

media = (alunos[i].notas[0] + alunos[i].notas[1] + alunos[i].notas[2]) / 3;

if (media > maiorMedia) {

maiorMedia = media;

maior = i;

printf("Aluno com maior media:\n");


printf("Nome: %s\n", alunos[maior].nome);

printf("Notas: %.2f, %.2f, %.2f\n", alunos[maior].notas[0], alunos[maior].notas[1],


alunos[maior].notas[2]);

return 0;

2) #include <stdio.h>

#include <string.h>

int main() {

char str[100];

int i, tamanho, palindromo = 1;

printf("Digite uma string: ");

scanf("%s", str);

tamanho = sizeof(str);

for (i = 0; i < tamanho / 2; i++) {

if (str[i] != str[tamanho - i - 1]) {

palindromo = 0;

break;

if (palindromo)

printf("A string e um palindromo.\n");

else

printf("A string nao é um palindromo.\n");

return 0;

3) #include <stdio.h>

int main() {

float numeros[8];

int i, j, contagem;
printf("Digite 8 numeros:\n");

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

scanf("%f", &numeros[i]);

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

contagem = 0;

for (j = 0; j < 8; j++) {

if (numeros[i] == numeros[j]) {

contagem++;

printf("%.1f ocorre %d vez(es)\n", numeros[i], contagem);

return 0;

4) #include <stdio.h>

int main() {

int matriz[10][10] = {0};

int linha, coluna, valor;

while (1) {

printf("Digite a linha, coluna e valor (negativos para parar): ");

scanf("%d %d %d", &linha, &coluna, &valor);

if (linha < 0 || coluna < 0 || valor < 0)

break;

if (linha < 10 && coluna < 10)

matriz[linha][coluna] = valor;

else

printf("Indices fora do limite!\n");

printf("Matriz:\n");

for (linha = 0; linha < 10; linha++) {


for (coluna = 0; coluna < 10; coluna++) {

printf("%d ", matriz[linha][coluna]);

printf("\n");

return 0;
}
1) #include <stdio.h>

typedef struct {
int dia, mes, ano;
} Data;

int calculaDias(Data data) {


return data.ano * 365 + data.mes * 30 + data.dia;
}

int main() {
Data data1, data2;
int dias1, dias2;

printf("Digite a primeira data (dia mes ano): ");


scanf("%d %d %d", &data1.dia, &data1.mes, &data1.ano);

printf("Digite a segunda data (dia mes ano): ");


scanf("%d %d %d", &data2.dia, &data2.mes, &data2.ano);

dias1 = calculaDias(data1);
dias2 = calculaDias(data2);

printf("Diferença de dias: %d\n", dias2 - dias1);

return 0;
}

2) #include <stdio.h>

int main() {
int n, i;
int a = 0, b = 1, c;

printf("Digite o número de termos de Fibonacci: ");


scanf("%d", &n);
printf("Sequência de Fibonacci:\n");
for (i = 1; i <= n; i++) {
printf("%d ", a);
c = a + b;
a = b;
b = c;
}
printf("\n");
return 0;
}
3) #include <stdio.h>

int main() {
int numeros[10], i, maior, menor;

printf("Digite 10 numeros inteiros:\n");

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


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

maior = menor = numeros[0];

for (i = 1; i < 10; i++) {


if (numeros[i] > maior) {
maior = numeros[i];
}
if (numeros[i] < menor) {
menor = numeros[i];
}
}

printf("O maior número e: %d\n", maior);


printf("O menor número e: %d\n", menor);

return 0;
}

4) #include <stdio.h>

int main() {
int numeros[10], i;

printf("Digite 10 numeros inteiros:\n");

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


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

printf("Vetor em ordem inversa:\n");

for (i = 9; i >= 0; i--) {


printf("%d ", numeros[i]);
}

printf("\n");
return 0;
}
1) #include <stdio.h>
#include <stdlib.h>

struct Atleta {
char nome[50];
char esporte[50];
int idade;
float altura;
};

int main() {
struct Atleta atletas[5];
FILE *arquivo = fopen("atletas.txt", "w");

if (arquivo == NULL) {
printf("Erro ao abrir o arquivo!\n");
return 1;
}

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


printf("Digite o nome do atleta %d: ", i + 1);
scanf(" %[^\n]", atletas[i].nome);
printf("Digite o esporte do atleta %d: ", i + 1);
scanf(" %[^\n]", atletas[i].esporte);
printf("Digite a idade do atleta %d: ", i + 1);
scanf("%d", &atletas[i].idade);
printf("Digite a altura do atleta %d (em metros): ", i + 1);
scanf("%f", &atletas[i].altura);
printf("\n");

fprintf(arquivo, "Atleta %d:\n", i + 1);


fprintf(arquivo, "Nome: %s\n", atletas[i].nome);
fprintf(arquivo, "Esporte: %s\n", atletas[i].esporte);
fprintf(arquivo, "Idade: %d\n", atletas[i].idade);
fprintf(arquivo, "Altura: %.2f\n\n", atletas[i].altura);
}

fclose(arquivo);
printf("Dados dos atletas salvos no arquivo atletas.txt.\n");

return 0;
}

2) #include <stdio.h>
#include <stdlib.h>

struct No {
int valor;
struct No *prox;
};
void inserir(struct No **lista, int valor) {
struct No *novo = (struct No*) malloc(sizeof(struct No));
novo->valor = valor;
novo->prox = *lista;
*lista = novo;
}
void exibir(struct No *lista) {
struct No *atual = lista;
while (atual != NULL) {
printf("%d -> ", atual->valor);
atual = atual->prox;
}
printf("NULL\n");
}

void separarParImpar(struct No *lista, struct No **pares, struct No **impares) {


struct No *atual = lista;
while (atual != NULL) {
if (atual->valor % 2 == 0) {
inserir(pares, atual->valor);
} else {
inserir(impares, atual->valor);
}
atual = atual->prox;
}
}
int main() {
struct No *lista = NULL;
struct No *pares = NULL;
struct No *impares = NULL;
inserir(&lista, 1);
inserir(&lista, 2);
inserir(&lista, 3);
inserir(&lista, 4);
inserir(&lista, 5);
inserir(&lista, 6);
printf("Lista original:\n");
exibir(lista);
separarParImpar(lista, &pares, &impares);
printf("\nLista de pares:\n");
exibir(pares);
printf("\nLista de ímpares:\n");
exibir(impares);

return 0;
}
3) #include <stdio.h>
#include <stdlib.h>

struct No {
int valor;
struct No *prox;
};
void inserir(struct No **lista, int valor) {
struct No *novo = (struct No*) malloc(sizeof(struct No));
novo->valor = valor;
novo->prox = NULL;

if (*lista == NULL) {
*lista = novo;
} else {
struct No *atual = *lista;
while (atual->prox != NULL) {
atual = atual->prox;
}
atual->prox = novo;
}
}
void exibir(struct No *lista) {
struct No *atual = lista;
while (atual != NULL) {
printf("%d -> ", atual->valor);
atual = atual->prox;
}
printf("NULL\n");
}
void trocarComProximo(struct No **lista, int valor) {
struct No *anterior = NULL;
struct No *atual = *lista;
while (atual != NULL && atual->prox != NULL && atual->valor != valor) {
anterior = atual;
atual = atual->prox;
}
if (atual != NULL && atual->prox != NULL) {
struct No *prox = atual->prox;
if (anterior == NULL) {
*lista = prox;
} else {
anterior->prox = prox;
}
atual->prox = prox->prox;
prox->prox = atual;
} else {
printf("Valor %d não encontrado ou não há nó seguinte para trocar.\n", valor);
}
}

int main() {
struct No *lista = NULL;
inserir(&lista, 5);
inserir(&lista, 2);
inserir(&lista, 6);
inserir(&lista, 8);
inserir(&lista, 4);

printf("Lista original:\n");
exibir(lista);

trocarComProximo(&lista, 6);

printf("\nLista após trocar 6 com o próximo:\n");


exibir(lista);

return 0;
}

4) Ambas estão incorretas, pois a primeira função tem um problema com variáveis
locais, e a segunda, apesar de alocar dinamicamente a célula, não atualiza
corretamente o ponteiro da lista principal, já que lst é passado por valor.

#include <stdio.h>

int main() {
int n, i;

printf("Digite um número inteiro positivo: ");


scanf("%d", &n);

printf("Divisores de %d:\n", n);

for (i = 1; i <= n; i++) {


if (n % i == 0) {
printf("%d ", i);
}
}

printf("\n");
return 0;
}

Você também pode gostar