¡Pon a prueba tus conocimientos con estas cinco preguntas de dificultad media! Cada ejercicio incluye su enunciado y, justo después, la solución comentada en C#.
1. Cálculo de factorial (recursivo)
Enunciado:
Implementa una función recursiva Factorial(int n)
que calcule el factorial de un número entero no negativo. El programa debe:
- Pedir al usuario un número entero
n
(≥ 0). - Llamar a
Factorial(n)
y mostrar el resultado.
Solución:
using System;
class FactorialRecursivo
{
static void Main()
{
Console.Write("Introduce un número entero no negativo: ");
if (int.TryParse(Console.ReadLine(), out int n) && n >= 0)
{
Console.WriteLine($"¡Factorial de {n}! = {Factorial(n)}");
}
else
{
Console.WriteLine("Entrada no válida.");
}
}
static long Factorial(int n)
{
// Caso base
if (n <= 1) return 1;
// Llamada recursiva
return n * Factorial(n - 1);
}
}
2. Comprobación de palíndromo
Enunciado:
Escribe un programa que:
- Lea una cadena de texto del usuario.
- Elimine espacios y pase todo a minúsculas.
- Compruebe si la cadena es un palíndromo (se lee igual al derecho y al revés).
- Muestre “Es palíndromo” o “No es palíndromo”.
Solución:
using System;
using System.Linq;
class Palindromo
{
static void Main()
{
Console.Write("Introduce una frase: ");
string input = Console.ReadLine() ?? "";
// Normalizar: quitar espacios y pasar a minúsculas
string limpia = new string(input
.Where(c => !char.IsWhiteSpace(c))
.Select(c => char.ToLower(c))
.ToArray());
// Comparar con la inversa
string inversa = new string(limpia.Reverse().ToArray());
if (limpia == inversa)
Console.WriteLine("Es palíndromo.");
else
Console.WriteLine("No es palíndromo.");
}
}
3. Suma de filas y columnas en matriz 3×3
Enunciado:
Crea una matriz de 3×3 con valores enteros solicitados al usuario. A continuación, calcula y muestra:
- La suma de cada fila.
- La suma de cada columna.
Solución:
using System;
class MatrizSumas
{
static void Main()
{
int[,] matriz = new int[3, 3];
// Lectura de la matriz
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
Console.Write($"Elemento [{i},{j}]: ");
while (!int.TryParse(Console.ReadLine(), out matriz[i, j]))
Console.Write("Entrada no válida. Introduce un entero: ");
}
}
// Suma de filas
for (int i = 0; i < 3; i++)
{
int sumaFila = 0;
for (int j = 0; j < 3; j++)
sumaFila += matriz[i, j];
Console.WriteLine($"Suma fila {i + 1}: {sumaFila}");
}
// Suma de columnas
for (int j = 0; j < 3; j++)
{
int sumaCol = 0;
for (int i = 0; i < 3; i++)
sumaCol += matriz[i, j];
Console.WriteLine($"Suma columna {j + 1}: {sumaCol}");
}
}
}
4. Filtrar números primos en un rango
Enunciado:
Pide al usuario dos enteros a
y b
(con a ≤ b
). Muestra en pantalla todos los números primos comprendidos entre a
y b
, inclusive.
Solución:
using System;
class PrimosEnRango
{
static void Main()
{
Console.Write("Introduce el límite inferior (a): ");
int a = int.Parse(Console.ReadLine() ?? "0");
Console.Write("Introduce el límite superior (b): ");
int b = int.Parse(Console.ReadLine() ?? "0");
Console.WriteLine($"Primos entre {a} y {b}:");
for (int n = Math.Max(a, 2); n <= b; n++)
{
if (EsPrimo(n))
Console.Write($"{n} ");
}
}
static bool EsPrimo(int num)
{
if (num < 2) return false;
for (int i = 2; i * i <= num; i++)
if (num % i == 0) return false;
return true;
}
}
5. Generar serie de Fibonacci hasta N
Enunciado:
Solicita al usuario un entero N
(≥ 1) y genera la serie de Fibonacci (0, 1, 1, 2, 3, 5, …) hasta el enésimo término. Muestra la serie separada por comas.
Solución:
using System;
using System.Collections.Generic;
class FibonacciSerie
{
static void Main()
{
Console.Write("¿Cuántos términos de Fibonacci quieres? ");
if (int.TryParse(Console.ReadLine(), out int N) && N >= 1)
{
List<long> fib = GenerarFibonacci(N);
Console.WriteLine(string.Join(", ", fib));
}
else
{
Console.WriteLine("Entrada no válida.");
}
}
static List<long> GenerarFibonacci(int n)
{
var lista = new List<long> { 0, 1 };
for (int i = 2; i < n; i++)
lista.Add(lista[i - 1] + lista[i - 2]);
return lista.GetRange(0, n);
}
}
Contenido restringido
Comments are closed