Preguntas de prueba reales del algoritmo C
Diseño de algoritmo:
(1) Defina una matriz de caracteres bidimensionales para almacenar los nombres de n estudiantes.
Nombre del personaje [N][13];
(2) Utilice el método de clasificación selectiva para ordenar N cadenas a través de la función de comparación strcmp().
(3) Resultados de salida
Idea de clasificación selectiva
(1) En la primera pasada, seleccione el registro con el valor de palabra clave más pequeño de n registros como Primero registro;
k = 0;
for(j = 1; j if(k!= 0){ t = a[k]; a[k ]= a [I]; a[I]= t;}/*Intercambio de la unidad K y la unidad 0*/
(2) En la segunda pasada, de los registros N-1 restantes Seleccione el registro con el valor clave más pequeño como segundo registro;
k = 1;
for(j = 1+1;j if(k!= 1){ t = a[k]; a[k] = a[I]; a[I] = t;}
(3) Generalmente en el paso I, el registro con el valor clave más pequeño se selecciona como El registro I (I = 1, 2,..., n-1) se obtiene del resto n-I+1
k = I-1
for(. j = I; j if(k!= 1){ t = a[k]; a[k]= a[I]; a[I]= t;}
Para n elementos del Array A, el segmento del programa para seleccionar y ordenar en lenguaje C es:
for(I = 0; i { k = i
for(j = I+1; j if(k ! = I){ t = a[k]; a[k]= a[I]; a[I]= t;}
}
Exactamente similar, nosotros La matriz de caracteres bidimensionales char name[N][13] se considera como N matrices de caracteres unidimensionales:
Nombre[0], nombre[1], nombre[2],..., nombre[N-1] ].
En la sección del programa de clasificación de selección, compare dos números:
If(a[j] se cambia a: if (strcmp (nombre [j], nombre [k] )
Y la declaración de intercambio de datos: { t = a[k]; a[k] = a[I]; a[I] = t;}
Cambiado a: {strcpy (t, nombre[k]); strcpy(nombre[k], nombrea[I]); strcpy(nombre[i], t);}
Lista completa de programas
#Contiene "stdio.h"
#Contiene "string.h"
main()
{cahr nombre[10][13], temp [13];int I;
for(I = 0;I<10;i++){
Printf("Ingrese el nombre de %d estudiante:\n ", I +1);
get(nombre[I]);
}
for(I = 0;i<9;i++)
{ k = I
for(j = I+1; j <10;j++)if(strcmp(nombre[j],nombre[k])<0)k = j; p>
Si (k! =i){strcpy(temp, nombre[k]);
strcpy(nombre[k], nombre[I]); strcpy(nombre[i], temp);
}
}
printf(" 10 nombres de estudiantes ordenados por diccionario: \ n "
for(I = 0; I<10;i++ )printf ("\n %s ",nombre[I]);
}