Ifelseif escribe un número de entrada, ¿cómo escribir la expresión de salida?
Explicación detallada del uso de if else, guía completa del uso de if else en lenguaje C
La declaración if else es una estructura de selección que permite que el código elija ejecutar. La llamada ejecución selectiva significa que "algunos códigos pueden ejecutarse o no, y ciertos códigos se ejecutan selectivamente".
El uso más simple de if
El formato más simple de if es:
if (expresión) {declaración}
Función: If la expresión es verdadera, se ejecuta la siguiente declaración; si la expresión es falsa, no se ejecuta la siguiente declaración;
Escribe un programa para todos los siguientes:
#include lt; stdio.hgt;
int main(void)
{
if (3gt; 2)
{
printf("Te amo\n");
devuelve 0;
}
Resultado operativo:
Te amo
Este es el programa if más simple. En primer lugar, como se mencionó anteriormente cuando se habla de estandarización de código, se debe agregar un espacio entre if y los corchetes que lo siguen. En segundo lugar, como se mencionó anteriormente, hay dos tipos de juicios de "verdadero" y "falso", uno es si el valor es cero y el otro es si la expresión es verdadera. Por lo tanto, se establece la expresión del programa anterior, por lo que se ejecuta la declaración de salida que aparece debajo.
Cambia la expresión después de if por un número y echa un vistazo:
# include stdio.hgt
int main(void)
{
if (2)
{
printf("Te amo\n");
}
retorna 0;
}
Ejecutar resultado:
Te amo
O escribe así:
# include lt; stdio.hgt;
int main(void)
{
int i;
if (i = 2)
{
printf("Te amo\n");
}
return 0 ;
}
Ejecutar resultado:
Te amo
Cámbialo a 0 y verás:
# incluir lt; stdio.hgt;
int main(void)
{
if (0)
{ p >
printf("Te amo\n");
}
return 0
}
Compilar y En ejecución, no se genera nada.
Entonces, siempre que la expresión después de if sea verdadera o distinta de cero, se ejecutará la declaración siguiente. Cuando la expresión es 0, es falsa y las declaraciones siguientes no se ejecutarán.
La cuestión del alcance del control de if
¡Esta cuestión es más importante! Primero escriba un programa para todos:
# include stdio.hgt;
int main(void)
{
if (0)
printf("Te amo\n");
printf("Yo también te amo\n");
}
Resultados de la ejecución:
Yo también te amo
¿Por qué no aparece "Te amo" sino "Te amo"? También" "¿Pero fue exportado? Porque en lenguaje C, solo se puede controlar una declaración después. Si desea controlar varias declaraciones, debe agregar llaves {}. Entonces, en el programa anterior, si solo puede controlar el primer printf, y la expresión después de if es 0, por lo que el primer printf no se ejecutará, por lo que no se generará "Te amo". El segundo printf no está dentro del rango de control de if, por lo que después de ejecutar la instrucción if, el segundo printf se ejecuta secuencialmente, por lo que se generará "Yo también te amo".
Si desea controlar dos printfs, agregue llaves, así:
# include lt; stdio.hgt;
int main( void)
{
if (0)
{
printf("Te amo\n");
printf("Yo también te amo\n");
}
return 0;
}
De esta manera Ninguno printf saldrá.
Pero al hablar de estandarización, dije que no importa cuántas líneas haya en las sentencias de ejecución después de if, else, for, while y do, se debe agregar {} incluso si solo hay una. línea. Ésta es una cuestión normativa y todo el mundo debe recordarla. Es más fácil cometer errores cuando escribes según las especificaciones y es cómodo de leer.
Uso de if...else
Primero escribe un programa para todos:
# include stdio.hgt; int main (void)
{
int i, j;
printf("Ingrese dos números: " //Solicitar entrada
p>
scanf("d d", amp; i, amp; j //Presta atención al carácter de dirección amp;
if (igt; j)
{
printf("i es mayor que j\n");
}
else
{
printf("i Menos que j\n");
}
devuelve 0;
}
Resultados de la ejecución:
Por favor ingrese dos números: 43 56
i es menor que j
Lo primero que quiero enfatizar aquí es: cuando hablé de scanf antes, en Para evitar confusiones a los lectores, algunos contenidos no se han incluido. Hablemos de ello específicamente aquí.
Como se enfatizó anteriormente, no agregue ningún "caracteres de control que no sean de entrada" entre múltiples "caracteres de control de entrada" entre comillas dobles en scanf. Pero lo que quiero decir aquí es: puedes agregar un símbolo, que es "espacio".
El espacio es especial en scanf. Aunque es un "carácter de control sin entrada", en realidad no es necesario que se "ingrese tal cual". Porque incluso si no agrega espacios, aún necesita agregar espacios (o ingresar) al escribir desde el teclado. Además, es correcto agregar un espacio a scanf e ingresar 100 espacios al escribir; también es correcto agregar 100 espacios a scanf y solo ingresar un espacio al escribir; Por lo tanto, no es realmente una entrada "tal cual".
Entonces, ¿por qué hay espacios entre d en scanf? Sólo hay una razón: "se ve bien". Si no agrega espacios, se verá abarrotado y antiestético. Pero a pesar de esto, se recomienda no agregar nada y unificar su pensamiento y uso. En la programación real, no es necesario agregar espacios. Solo te digo que puedes hacerlo.
Veamos si...else. El programa anterior es el uso más simple de if...else. Aquí se enfatizan tres puntos principales:
1) De manera similar, else solo puede controlar una declaración posterior. Si desea controlar varias declaraciones, debe agregar llaves {}. Pero aquí se enfatiza nuevamente: no importa cuántas líneas haya en las declaraciones de ejecución siguientes if, else, for, while, do, {} debe agregarse incluso si solo hay una línea.
1) El primer principio de los siete principios de estandarización del código es la "línea en blanco". Como se mencionó anteriormente: se debe agregar una línea en blanco entre dos bloques de funciones diferentes. La implicación es que "no es necesario agregar una línea en blanco entre dos bloques de funciones idénticos". if y else son el mismo bloque de funciones, por lo que no es necesario dejar una línea en blanco entre ellos.
3) si se puede utilizar solo sin más, que se haya aplicado anteriormente. Pero si desea utilizar else, debe ser parte de if. De lo contrario, es absolutamente imposible usarlo solo sin if, por lo que todos deben prestar atención a esto.
Modifica el programa anterior a continuación:
# include lt; stdio.hgt
int main(void)
{ p>
int i, j;
scanf("d d", amp; i, amp; j
if (igt; j)
{
printf("i es mayor que j\n");
}
else
{
printf("i es menor que j\n");
}
devuelve 0; }
¿Crees que hay algún problema con este programa? Después de compilar, encontré un error:
ilegal else sin coincidir si
Significa: ilegal else sin coincidir si.
¿A qué se debe esto? Porque hay un punto y coma extra entre if y else. En lenguaje C, un punto y coma también es una declaración, llamada "declaración vacía", que es una declaración que no ejecuta nada. Si se agrega una declaración entre if y else, else y if están separados, lo que equivale a usar else solo, por lo que se informará el error "No hay if que coincida con else". Este programa también nos dice que los puntos y coma no se pueden agregar aleatoriamente.
Aquí me gustaría presentarles el "operador ternario". Lo mencioné antes cuando hablaba de prioridades.
Sólo existe un operador ternario en todo el lenguaje C, y su formato es:
Expresión 1 ? Expresión 2: Expresión 3
Es equivalente a:
si (expresión 1)
{
Expresión 2;
}
else
{ p>
Expresión 3;
}
Aunque el formato "operador ternario" parece tener menos código, generalmente no lo usamos. Debido a que parece incómodo escribir así, y no es tan lógicamente claro como if...else, por lo que generalmente todavía usamos if...else. Sólo entiende esto.
Uso de if…else if…else
¿Aún recuerdas el programa para la ecuación cuadrática escrito anteriormente? Ese programa está escrito usando if...else if...else:
# include lt; stdio.hgt
# include lt
;int main(void)
{
//Guarda los tres coeficientes en la computadora
int a = 1 //"=" hace; no significa igualdad, pero representa asignación
int b = 2;
int c = 1
double delta //delta almacena b*b - 4; El valor de *a*c
double x1, x2; //usado para almacenar dos soluciones de la ecuación cuadrática
delta = b*b - 4*a*c ;
if (delta gt; 0)
{
x1 = (-b sqrt(delta)) / (2*a);
x2 = (-b - sqrt(delta)) / (2*a);
printf("Esta ecuación cuadrática tiene dos soluciones, x1 = f, x2 = f\ n", x1, x2);
}
si no (0 == delta)
{
x1 = (- b) / (2 *a);
x2 = x1; //Asigna el valor de la izquierda a la derecha
printf("Esta ecuación cuadrática tiene una solución única, x1 = x2 = f\ n", x1);
}
else
{
printf("Sin solución\n");
}
return 0;
}
if…else if…else es un poco más complicado que if…else, pero también es bueno entenderlo. . if...else if...else significa: "Si" el primero es verdadero, ejecuta el primero; "de lo contrario, si" el segundo es verdadero, ejecuta el segundo; Esto debería ser fácil de entender y es lo mismo que la lógica del pensamiento cuando hablamos habitualmente.
Ejercicio: Encuentra la calificación de fracciones
Escribamos un programa. Este es el primer programa significativo hasta ahora. La función de este programa es "encontrar la calificación de los resultados de las pruebas".
Es decir, ingrese una puntuación de prueba:
Si es de 90 a 100 puntos, genere "¡Excelente!";
Si es de 80 a 89 puntos, genere "¡Bueno!";
Si la puntuación es 60~79, muestra "¡Aprobado!";
Si la puntuación es 0~59, muestra "¡Recupera el examen! ¡Sigue trabajando duro!";
Salida "¡Vuelva a ingresar!" si la puntuación no está dentro de estos rangos.
#include lt;stdio.hgt;
int main(void)
{
puntuación flotante;
printf("Ingrese la puntuación de su prueba: ");
scanf("f", amp; puntuación
if (scoregt; = 90 amp; amp; scorelt); ;=100)
{
printf("¡Excelente!\n");
}
else if (scoregt; = 80&scorelt;=89)
{
printf("¡Bien!\n");
}
else if (scoregt;=60 amp; amp; scorelt;=79)
{
printf("¡Pase!\n");
} p>
else if (scoregt;=0 amp;amp; scorelt;=59)
{
printf("¡Recupera el examen! ¡Sigue trabajando duro! \n") ;
}
else
{
printf("¡Vuelva a ingresar!\n");
}
return 0;
}
scoregt;=90 amp;amp; scorelt;=100 no debe escribirse como 90lt. ;=scorelt;=100, esto está mal escrito. Así está escrito en matemáticas y no se puede escribir así en lenguaje C. Pero no estoy diciendo que haya un problema con la sintaxis de escribir de esta manera, sino que escribir de esta manera no puede lograr las funciones que necesitamos.
En lenguaje C, se permite 90lt;=scorelt;=100 y no se informará ningún error durante la compilación. Pero si se escribe como 90lt;=scorelt;=100, entonces no importa cuántos puntos se ingresen, el resultado será "¡Excelente!". Piénsalo, ¿por qué?
Porque según la prioridad, la ejecución debe ser de izquierda a derecha, por lo que 90lt;=score debe ejecutarse primero. Pero el resultado de la operación de 90lt;=score es un valor lógico, que es verdadero o no. Como dijimos antes, un valor lógico es verdadero o falso. Verdadero es 1 y falso es 0. Entonces, no importa cuántos puntos ingrese, el resultado de ejecución de 90lt;=score es 1 o 0, que definitivamente es lt;=100. Por lo tanto, no importa cuántos puntos se ingresen, 90lt;=scorelt;=100 siempre será verdadero, por lo que el resultado siempre será "¡excelente!". Entonces no puedes escribirlo así.
Escribe un programa a continuación para echarle un vistazo:
# include lt; stdio.hgt
int main(void)
{
puntuación flotante = 1000;
int i = (90lt; =scorelt; =100);
printf("i = d\n", i) ;
devuelve 0;
}
Resultado de la ejecución:
i = 1
No importa cuál es la puntuación, 90lt;=scorelt;=100 siempre es cierto, por lo que i siempre es 1.