Utilice el lenguaje C para ingresar cinco cadenas desde el teclado y ordenarlas de pequeñas a grandes. ! (TC2.0)
Pongamos un ejemplo para ilustrar: cuál es el problema después de eliminar else y por qué el resultado es incorrecto. O A[0] = "12345", A[1] = "12452";
Los dos primeros son iguales, así que si no lo haces. El tercer y cuarto valor de a[1] son mayores y el ciclo debería haber terminado aquí, por lo que no se realiza ninguna comparación. Sin embargo, debido a que se elimina la instrucción else, el ciclo aún se ejecuta. Pero debido a que la condición no se cumple, solo existe j ; cuando llega a la quinta posición, dado que a[0] es 5 y a[1] es 2, la condición de if se cumple, por lo que a[0] y a [1] se intercambian, pero esto obviamente es incorrecto. Debido a que los primeros cuatro elementos de a[1] tienen números mayores que a[0], es hora de finalizar el ciclo sin comparar el quinto número.
No tuve cuidado, jaja, ¡casi te engañé! Lo siento mucho. ¿Puedes explicarlo ahora? Lo he analizado detenidamente y no debería haber ningún problema.
Adjunto:
Sugerencias de mejora: si conoce la función strcpy(), ¿por qué utiliza el tercer bucle for para comparar carácter por carácter? Puede utilizar strcmp() para una comparación directa, lo que elimina la necesidad de la tercera declaración for.
El código mejorado es el siguiente como referencia:
#Contiene "stdio.h"
#Contiene "string.h"
void main(){
char b[20], a[5][20];
int i, j
printf(" entrada; :\n ");
for(I = 0; i lt5; i )
Obtener (a[I]);
for(I = 0;i lt5;i){
for(j = I 1;j lt5;j){
if(strcmp(a[i], a[j]) gt ;0){
strcpy(b, a[j]);
strcpy(a[j], a[I]); a[i], b);
}
}
}
printf("\n\nEl resultado de la clasificación es: \ n \ n ");
for(I = 0;ilt5;i)
pone(a[I]);
}
p>¿Está esto más claro? ¿Es similar a la clasificación ordinaria de matrices de enteros? ¡Ja ja!
Descripción específica de strcmp:
int strcmp(const char * string 1, const dhar * string 2);
Compare la cadena string1 y la cadena en el diccionario. orden cadena2. Si cadena1 está antes de cadena2, el valor de retorno es menor que 0; si cadena1 y cadena2 son iguales, el valor de retorno es 0; si cadena1 está después de cadena2, el valor de retorno es mayor que 0;