Enunciado:
Desarrolla un programa que solicite al usuario ingresar un entero y determine si el número es positivo, negativo o cero, mostrando el mensaje correspondiente.
Ejemplo de entrada:
5
Ejemplo de salida:
positivo
Solución de referencia:
#include <stdio.h>
int main() {
int valor;
printf("Ingrese un entero: ");
scanf("%d", &valor);
if (valor > 0)
printf("positivo\n");
else if (valor < 0)
printf("negativo\n");
else
printf("cero\n");
return 0;
}
Ejercicio 2: Mostrar Enteros que Cumplen Condiciones Específicas (Selección + Ciclo)
Enunciado:
Escribe un programa que imprima todos los enteros entre 1 y 100 que sean divisibles por 7 pero no divisible por 5. Cada número debe estar separado por un espacio.
Ejemplo de salida:
7 14 21 28 42 49 56 63 77 84 91 98
Solución de referencia:
#include <stdio.h>
int main() {
for (int i = 1; i <= 100; i++) {
if (i % 7 == 0 && i % 5 != 0) {
printf("%d ", i);
}
}
printf("\n");
return 0;
}
Ejercicio 3: Encontrar el Valor Máximo y su Índice en un Arreglo
Enunciado:
Ingresa 10 enteros y guárdalos en un arreglo. El programa debe recorrer el arreglo, encontrar el valor máximo y su posición (el índice comienza desde 0), luego mostrar el resultado.
Ejemplo de entrada:
5 7 2 9 4 3 8 0 1 6
Ejemplo de salida:
El maximo es 9, indice 3
Solución de referencia:
#include <stdio.h>
int main() {
int datos[10], maximo, posicion = 0;
printf("Ingrese 10 enteros: ");
for (int i = 0; i < 10; i++) {
scanf("%d", &datos[i]);
}
maximo = datos[0];
for (int i = 1; i < 10; i++) {
if (datos[i] > maximo) {
maximo = datos[i];
posicion = i;
}
}
printf("El maximo es %d, indice %d\n", maximo, posicion);
return 0;
}
Ejercicio 4: Contar Dígitos en una Cadena
Enunciado:
Escribe un programa que lea una cadena (sin espacios) yCuenta la cantidad de dígitos (0-9) que aparecen en ella, mostrando el resultado.
Ejemplo de entrada:
abc123xy7z
Ejemplo de salida:
Cantidad de digitos: 4
Solución de referencia:
#include <stdio.h>
int main() {
char texto[100];
int conteo = 0;
printf("Ingrese una cadena: ");
scanf("%s", texto);
for (int i = 0; texto[i] != '\0'; i++) {
if (texto[i] >= '0' && texto[i] <= '9') {
conteo++;
}
}
printf("Cantidad de digitos: %d\n", conteo);
return 0;
}
Ejercicio 5: Función Personalizada para Calcular el MCD
Enunciado:
Define una función llamada mcd que reciba dos números enteros positivos como parámetros y devuelva su máximo común divisor. En la función principal, recibe dos enteros positivos del usuario, llama a la función y muestra el resultado.
Ejemplo de entrada:
12 18
Ejemplo de salida:
El MCD es: 6
Solución de referencia:
#include <stdio.h>
int mcd(int a, int b) {
while (b != 0) {
int temp = b;
b = a % b;
a = temp;
}
return a;
}
int main() {
int a, b;
printf("Ingrese dos enteros positivos: ");
scanf("%d %d", &a, &b);
printf("El MCD es: %d\n", mcd(a, b));
return 0;
}
Ejercicio 6: Intercambiar Valores Usando Punteros
Enunciado:
Define una función intercambiar(int *a, int *b) que use parámetros de tipo puntero para intercambiar los valores de dos variables enteras. Prueba esta función en la función principal.
Ejemplo de salida:
Antes: a = 3, b = 8
Despues: a = 8, b = 3
Solución de referencia:
#include <stdio.h>
void intercambiar(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int a = 3, b = 8;
printf("Antes: a = %d, b = %d\n", a, b);
intercambia(&a, &b);
printf("Despues: a = %d, b = %d\n", a, b);
return 0;
}
Ejercicio 7: Invertir Cadena Usando Punteros
Enunciado:
Escribe una función void invertir(char *cadena) que use operaciones con punteros para invertir una cadena (sin usar la función strrev de la biblioteca estándar). En la función principal, ingresa una cadena, llama a la función y muestra el resultado invertido.
Ejemplo de entrada:
hola
Ejemplo de salida:
aloh
Solución de referencia:
#include <stdio.h>
#include <string.h>
void invertir(char *cadena) {
char *inicio = cadena;
char *fin = cadena + strlen(cadena) - 1;
while (inicio < fin) {
char temp = *inicio;
*inicio = *fin;
*fin = temp;
inicio++;
fin--;
}
}
int main() {
char cadena[100];
printf("Ingrese una cadena: ");
scanf("%s", cadena);
invertir(cadena);
printf("Invertida: %s\n", cadena);
return 0;
}
Ejercicio 8: Arreglo de Estructuras - Buscar la Nota Más Alta
Enunciado:
Define una estructura Estudiante que contenga: número de identificación (entero), nombre (cadena) y calificación (flotante). Lee la información de 5 estudiantes ingresada por el usuario, encuentra el estudiante con la calificación más alta y muestra su información completa.
Ejemplo de entrada:
101 Juan 88.5 102 Maria 92.0 103 Pedro 76.5 104 Ana 95.0 105 Luis 90.5
Ejemplo de salida:
Mejor estudiante: ID 104, Nombre: Ana, Calificacion: 95.00
Solución de referencia:
#include <stdio.h>
struct Estudiante {
int id;
char nombre[20];
float calificacion;
};
int main() {
struct Estudiante alunos[5];
printf("Ingrese la informacion de 5 estudiantes (ID Nombre Calificacion):\n");
for (int i = 0; i < 5; i++) {
scanf("%d %s %f", &alumnos[i].id, alumnos[i].nombre, &alumnos[i].calificacion);
}
int indiceMax = 0;
for (int i = 1; i < 5; i++) {
if (alumnos[i].calificacion > alunos[indiceMax].calificacion) {
indiceMax = i;
}
}
printf("Mejor estudiante: ID %d, Nombre: %s, Calificacion: %.2f\n",
alunos[indiceMax].id, alunos[indiceMax].nombre, alunos[indiceMax].calificacion);
return 0;
}
Ejercicio 9: Operaciones de Escritura y Lectura en Archivos
Enunciado:
Lee varias líneas de texto desde el teclado y escríbelas en un archivo de texto. Luego lee el contenido de ese archivo y muéstralo en la consola.
- Nombre del archivo:
datos.txt - El número de líneas es determinado por el usuario.
Solución de referencia:
#include <stdio.h>
int main() {
FILE *archivo;
char texto[100];
int n;
archivo = fopen("datos.txt", "w");
if (!archivo) {
printf("Error al abrir el archivo\n");
return 1;
}
printf("Ingrese el numero de lineas a escribir: ");
scanf("%d", &n);
getchar();
printf("Ingrese el contenido:\n");
for (int i = 0; i < n; i++) {
fgets(texto, sizeof(texto), stdin);
fputs(texto, archivo);
}
fclose(archivo);
archivo = fopen("datos.txt", "r");
if (!archivo) {
printf("Error al leer el archivo\n");
return 1;
}
printf("Contenido del archivo:\n");
while (fgets(texto, sizeof(texto), archivo)) {
printf("%s", texto);
}
fclose(archivo);
return 0;
}
Ejercicio 10: Ordenamiento de Arreglos (Método de Burbuja)
Enunciado:
Solicita al usuario un arreglo de enteros de longitud n (n no mayor a 100), usa el algoritmo de ordenamiento burbuja para ordenarlo de menor a mayor, y muestra el arreglo ordenado.
Ejemplo de entrada:
5
9 2 5 1 3
Ejemplo de salida:
1 2 3 5 9
Solución de referencia:
#include <stdio.h>
int main() {
int numeros[100], n;
printf("Ingrese la cantidad de elementos: ");
scanf("%d", &n);
printf("Ingrese %d enteros: ", n);
for (int i = 0; i < n; i++)
scanf("%d", &numeros[i]);
// Ordenamiento burbuja
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - 1 - i; j++) {
if (numeros[j] > numeros[j + 1]) {
int temp = numeros[j];
numeros[j] = numeros[j + 1];
numeros[j + 1] = temp;
}
}
}
printf("Resultado ordenado: ");
for (int i = 0; i < n; i++)
printf("%d ", numeros[i]);
printf("\n");
return 0;
}