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;
}