Ejercicio 04 — Lee una nota entera (0-10) e imprime la letra
Dificultad: amarillo · Módulo 02 (Condicionales)
Enunciado
Lee una nota entera (0-10) e imprime la letra: 9-10 → A, 7-8 → B, 5-6 → C, 3-4 → D, 0-2 → F.
Diagrama de flujo

Cómo se resuelve
El programa lee una nota entera de 0 a 10 y la traduce a una letra (A, B, C, D o F). Combina dos ideas: validar la entrada y clasificar por rangos con if / else if / else.
- Validación: antes de clasificar,
if (nota < 0 || nota > 10)comprueba que la nota está en el rango permitido. El operador lógico||(OR) es verdadero si cualquiera de las dos comparaciones lo es. Si la nota es inválida, se imprime un error yreturn 1termina el programa con un código distinto de cero (convención de “algo salió mal”). - Clasificación: usamos una variable
char letray una cadenaif-else ifen orden descendente (>= 9, luego>= 7, etc.). La clave es que cada rama solo se alcanza si todas las anteriores fallaron. Cuando llegamos aelse if (nota >= 7), ya sabemos que la nota es menor que 9, así que ese>= 7cubre exactamente el tramo 7-8 sin necesidad de escribirnota >= 7 && nota <= 8.
Trampa habitual: comprobar los rangos de menor a mayor. Si empezaras por if (nota >= 3), un 10 entraría ahí y recibiría una D, porque 10 también es >= 3. Al ir de mayor a menor, cada nota cae en su tramo correcto en la primera condición que cumple. También conviene no olvidar la validación: sin ella, una nota como 15 recibiría una A silenciosamente.
Para practicar — cópialo en Dev-C++
Pega este esqueleto y completa los TODO. Es la mejor forma de aprender: inténtalo antes de mirar la solución.
/*
Curso de C — Modulo 02: Condicionales
Ejercicio 04 — PRACTICA (rellena los TODO)
Enunciado: Lee una nota entera (0-10) e imprime la letra:
9-10 -> A, 7-8 -> B, 5-6 -> C, 3-4 -> D, 0-2 -> F.
Dificultad: amarillo
Compilar: gcc -std=c11 -Wall ej04_practica.c -o ej04 && ./ej04
*/
#include <stdio.h>
int main(void) {
int nota;
// TODO: pide la nota al usuario y leela con scanf
// TODO: valida que la nota esta entre 0 y 10 (usa ||)
// si no es valida, imprime error y haz return 1
char letra;
// TODO: asigna a 'letra' el caracter correcto usando if / else if / else:
// nota >= 9 -> 'A'
// nota >= 7 -> 'B'
// nota >= 5 -> 'C'
// nota >= 3 -> 'D'
// resto (0-2) -> 'F'
// Consejo: comprueba de mayor a menor para evitar solapamientos.
// TODO: imprime "Nota: <letra>"
return 0;
}Solución — cópiala y ejecútala
/*
Curso de C — Modulo 02: Condicionales
Ejercicio 04 — MODELO (resuelto)
Enunciado: Lee una nota entera (0-10) e imprime la letra:
9-10 -> A, 7-8 -> B, 5-6 -> C, 3-4 -> D, 0-2 -> F.
Dificultad: amarillo
Compilar: gcc -std=c11 -Wall ej04_modelo.c -o ej04 && ./ej04
*/
#include <stdio.h>
int main(void) {
int nota;
printf("Introduce la nota (0-10): ");
scanf("%d", ¬a);
// Validacion: la nota debe estar en rango valido
if (nota < 0 || nota > 10) {
printf("Nota fuera de rango (0-10)\n");
return 1; // codigo de error distinto de 0
}
// Convertimos la nota entera a letra con if-else if en orden descendente.
// El orden importa: comprobamos el rango mas alto primero.
char letra;
if (nota >= 9) {
letra = 'A';
} else if (nota >= 7) {
letra = 'B';
} else if (nota >= 5) {
letra = 'C';
} else if (nota >= 3) {
letra = 'D';
} else {
letra = 'F';
}
printf("Nota: %c\n", letra);
return 0;
}Cómo usarlo
Dev-C++ (Windows): Archivo → Nuevo → Código fuente, pega el código y pulsa F11 (compilar y ejecutar). Si ves los acentos raros en la consola, escribe chcp 65001 y vuelve a ejecutar.