Crie um programa que use ponteiros para trocar o valor de duas variáveis inteiras dentro de uma função auxiliar.
#include <stdio.h>
void trocar(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int x = 10, y = 20;
printf("Antes: x = %d, y = %d\n", x, y);
trocar(&x, &y);
printf("Depois: x = %d, y = %d\n", x, y);
return 0;
}
Escreva um programa que aloque dinamicamente memória para um vetor de inteiros de tamanho N (digitado pelo usuário) usando malloc, preencha-o e depois libere a memória com free.
#include <stdio.h>
#include <stdlib.h>
int main() {
int n, *vetor;
printf("Digite o tamanho do vetor: ");
scanf("%d", &n);
vetor = (int *) malloc(n * sizeof(int));
if (vetor == NULL) {
printf("Erro de alocação de memória!\n");
return 1;
}
for (int i = 0; i < n; i++) {
vetor[i] = (i + 1) * 5;
printf("Posição [%d]: %d\n", i, vetor[i]);
}
free(vetor);
return 0;
}
Crie uma função recursiva que calcule e retorne o fatorial de um número inteiro fornecido pelo usuário.
#include <stdio.h>
long long fatorial(int n) {
if (n <= 1) return 1;
return n * fatorial(n - 1);
}
int main() {
int num;
printf("Digite um número inteiro positivo: ");
scanf("%d", &num);
printf("O fatorial de %d é %lld\n", num, fatorial(num));
return 0;
}
Desenvolva um programa que defina uma struct Cadastro contendo nome, idade e nota de um aluno. O programa deve ler os dados de 3 alunos e exibir quem obteve a maior nota.
#include <stdio.h>
struct Cadastro {
char nome[50];
int idade;
float nota;
};
int main() {
struct Cadastro alunos[3];
int indiceMaior = 0;
for (int i = 0; i < 3; i++) {
printf("Nome do aluno %d: ", i + 1);
scanf("%s", alunos[i].nome);
printf("Idade: ");
scanf("%d", &alunos[i].idade);
printf("Nota: ");
scanf("%f", &alunos[i].nota);
if (alunos[i].nota > alunos[indiceMaior].nota) {
indiceMaior = i;
}
}
printf("\nAluno com maior nota: %s (Nota: %.2f)\n", alunos[indiceMaior].nome, alunos[indiceMaior].nota);
return 0;
}
Escreva um programa em C que crie e abra um arquivo de texto chamado dados.txt, escreva a frase "Desenvolvimento Web com C" dentro dele e feche o arquivo.
#include <stdio.h>
int main() {
FILE *arquivo = fopen("dados.txt", "w");
if (arquivo == NULL) {
printf("Erro ao abrir ou criar o arquivo!\n");
return 1;
}
fprintf(arquivo, "Desenvolvimento Web com C\n");
fclose(arquivo);
printf("Arquivo gravado com sucesso!\n");
return 0;
}
Implemente o algoritmo de ordenação Bubble Sort para organizar um vetor de 6 elementos inteiros em ordem crescente.
#include <stdio.h>
int main() {
int v[6] = {45, 12, 89, 5, 23, 1};
int temp;
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5 - i; j++) {
if (v[j] > v[j+1]) {
temp = v[j];
v[j] = v[j+1];
v[j+1] = temp;
}
}
}
printf("Vetor ordenado: ");
for (int i = 0; i < 6; i++) {
printf("%d ", v[i]);
}
printf("\n");
return 0;
}
Crie um programa que faça a leitura de uma matriz 3x3 e calcule a soma de todos os elementos que estão localizados acima da diagonal principal.
#include <stdio.h>
int main() {
int m[3][3], soma = 0;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
printf("Elemento [%d][%d]: ", i, j);
scanf("%d", &m[i][j]);
if (j > i) {
soma += m[i][j];
}
}
}
printf("Soma acima da diagonal principal: %d\n", soma);
return 0;
}
Escreva uma função recursiva para calcular o N-ésimo termo da famosa Sequência de Fibonacci.
#include <stdio.h>
int fibonacci(int n) {
if (n == 0) return 0;
if (n == 1) return 1;
return fibonacci(n - 1) + fibonacci(n - 2);
}
int main() {
int termos;
printf("Digite o número de termos de Fibonacci: ");
scanf("%d", &termos);
printf("O termo correspondente é: %d\n", fibonacci(termos));
return 0;
}
Escreva um programa que utilize uma função para determinar se um número passado por referência através de ponteiro é Primo ou não.
#include <stdio.h>
int verificarPrimo(int *n) {
if (*n <= 1) return 0;
for (int i = 2; i * i <= *n; i++) {
if (*n % i == 0) return 0;
}
return 1;
}
int main() {
int num;
printf("Digite um número: ");
scanf("%d", &num);
if (verificarPrimo(&num)) printf("%d é primo.\n", num);
else printf("%d não é primo.\n", num);
return 0;
}
Construa um programa que utilize os operadores de deslocamento de bits (bitwises << e >>) para multiplicar e dividir um número inteiro por 2 respectivamente.
#include <stdio.h>
int main() {
int num;
printf("Digite um valor inteiro: ");
scanf("%d", &num);
printf("Multiplicado por 2 (<< 1): %d\n", num << 1);
printf("Dividido por 2 (>> 1): %d\n", num >> 1);
return 0;
}